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];
}
'IT Share you' 카테고리의 다른 글
Python 프로그램 종료시 하위 프로세스가 종료되었는지 확인 (0) | 2020.12.15 |
---|---|
i : nil =“true”는 무엇을 의미합니까? (0) | 2020.12.15 |
vim에서 공백이 아닐 때까지 어떻게 삭제합니까? (0) | 2020.12.14 |
rails, simple_form, 페이지가로드 될 때 컬렉션의 선택된 인덱스를 설정하는 방법은 무엇입니까? (0) | 2020.12.14 |
편집 텍스트를 클릭 할 때 콘텐츠 푸시 (0) | 2020.12.14 |