IT Share you

Xcode 경고 "속성 액세스 결과가 사용되지 않음-getter를 부작용에 사용해서는 안 됨"

shareyou 2020. 12. 14. 21:09
반응형

Xcode 경고 "속성 액세스 결과가 사용되지 않음-getter를 부작용에 사용해서는 안 됨"


로컬 루틴을 호출 할 때이 경고가 표시됩니다.

내 코드는 다음과 같습니다.

-(void)nextLetter {
    // NSLog(@"%s", __FUNCTION__);
    currentLetter ++;
    if(currentLetter > (letters.count - 1))
    {
        currentLetter = 0;
    }
    self.fetchLetter;
}

self.fetchLetter 문에 대한 경고를 받고 있습니다.

그 루틴은 다음과 같습니다.

- (void)fetchLetter {
    // NSLog(@"%s", __FUNCTION__);
    NSString *wantedLetter = [[letters objectAtIndex: currentLetter] objectForKey: @"langLetter"];

    NSString *wantedUpperCase = [[letters objectAtIndex: currentLetter] objectForKey: @"upperCase"];    


.....   
}

경고 메시지를 수정하는 것을 선호합니다. 더 좋은 방법이 있습니까?

감사!


점 표기법 (즉 self.fetchLetter)은 임의의 메서드가 아니라 속성을 의미합니다. self.fetchLetter것으로 해석되고 당신이하려는 것이 아니다 " '자기'의 'fetchLetter'속성을 얻을".

그냥 사용하는 [self fetchLetter]대신.


최신 Xcode 버전에서는 [object method];경고 발생할 수도 있습니다. 그러나 때때로 우리는 실제로 속성을 호출하고 결과를 버릴 필요가 있습니다. 예를 들어 뷰 컨트롤러를 다룰 때, 뷰가 실제로로드되었는지 확인해야합니다.

그래서 우리는 :

// Ensure view is loaded and all outlets are connected.
[self view];

이제 "속성 액세스 결과 미사용-getter를 부작용에 사용해서는 안 됨" 경고 도 트리거 됩니다 . 해결책은 결과 유형을 void로 캐스팅하여 의도적으로 수행되었음을 컴파일러에 알리는 것입니다.

(void)[self view];

이와 같은 구문을 사용하여 fetchLetter를 선언하고 있습니까?

@property (retain) id fetchLetter;

당신이하는 일에 대해 잘못된 것 같습니다. 속성은 (게터의 경우) 부작용이없는 가변 접근자를위한 것입니다.

fetchLetter를 다음과 같이 메소드로 선언해야합니다.

- (void) fetchLetter;

다음을 사용하여 액세스하십시오.

[self fetchLetter]

I just got my problem resolved, in my case a CoreLocation Project, using both answers from Tom and Chris -

I declare:

@property (strong, nonatomic)CLLocationManager *locationManager;

And implemented like:

@synthesize locationManager = _locationManager;
....
- (void) dealloc {
         [self locationManager];
}

참고URL : https://stackoverflow.com/questions/5346682/xcode-warning-property-access-results-unused-getters-should-not-be-used-for-s

반응형