17

먼저 "인스턴스로 전송 된 인식 할 수없는 셀렉터"문제에 대한 많은 질문이 있습니다.
몇 가지를 보았지만 범주 속성에 정의 된 액세스에 대해서는 아무 것도 보지 않았습니다 ...iPhone : 속성이있는 카테고리 + "인스턴스로 전송 된 인식 할 수없는 셀렉터"예외

속성이있는 UILabel에 범주가 있습니다.
getter 및 setter가 정의됩니다.
실제로 두 개의 다른 클래스 (UIButton 및 UILabel)에 대해 동일한 속성을 사용합니다.
문제는 UIButton에 대해이 속성에 액세스 할 수 있지만 UILabel에는 액세스 할 수 없다는 것입니다.
일단 UILabel (텍스트) 범주의 모든 메서드/속성에 액세스하려고하면 "- [UILabel 테스트] : 인스턴스 0x4e539f0로 전송 된 인식 할 수없는 선택기"예외가 발생합니다.

두 카테고리 파일을 모두 가져옵니다.

나는 무엇이 문제인지 전혀 모른다. 어떤 도움을 이해할 수있을 것이다

// UILabel+text.h 
@interface UILabel (text) 
    - (void)test; 
@end 

// UILabel+text.m 
@implementation UILabel (text) 
- (void)test { 
    NSLog(@"test"); 
} 
@end 

// UIButton+text.h 
@interface UIButton (text) 
    - (void)test; 
@end 

// UIButton+text.m 
@implementation UIButton (text) 
- (void)test { 
    NSLog(@"test");// works 
} 
@end 

// Usage (in UIViewController class) - both elements are defined in XIB 
[self.button test];// works 
[self.label test];// exception 

: 여기

몇 가지 코드입니다.
가능한 문제에 대한 단서가 없습니다 ...

고맙습니다.

마이클.

+0

흥미 롭습니다 ... 코드로 만들면 작동합니까? (XIB 없음) – Eonil

+0

'[[[UILabel alloc] init] test]'시도하여 가능한 문제의 원인을 찾으십시오. – Jim

+1

빠른 답장을 보내 주셔서 감사합니다. @ 스틴은 이미 내 질문에 대답했다. "UILabel + text.m"파일이 다른 대상에 추가되었습니다 ... –

답변

42

정적 라이브러리를 사용하고 있습니까? 그렇다면 다른 링커 플래그에 all_load를 추가하십시오.

"UILabel + text.m"이 (가) 대상에 있습니까?

+4

그게 다야! 난 항상 목표 문제를 잊어 버렸어 ... 기본적으로 모든 대상에 추가 할 새 파일을 정의하는 방법이 있습니까? –

+0

제가 잘 모르겠지만, Xcode는 보통 제 경우에 의미가 있습니다. 어쩌면 마지막 선택으로 기본 설정되어 있을까요? –

+0

'-all_load'는 대부분의 시간 동안 작동합니다. 그 이유를 알고 싶다면이 대답을 확인하십시오. http://stackoverflow.com/a/2906210/146032 – bithavoc

관련 문제