문제

나는 확장 클래스에서는 외부 라이브러리입니다.여기에는 나의 코드:

헤더 파일:Manager+MyCategory.h

#import "Manager.h"
#import "Element.h"

@interface Manager (myCategory) 
- (Element*) elementWithTag:(NSInteger)tag; 
@end

구현 file:Manager+MyCategory.서 파일

@implementation Manager (myCategory) 

- (Element*) elementWithTag:(NSInteger)tag {
    ...
}

@end

이제 여기에 사용하는 방법 이 카테고리:

#import "Manager+MyCategory.h"

@implementation myClass 

- (void) myFunction:(NSInteger)tag {
   Manager* myManager = [[Manager alloc] init];
   Element* = [myManager elementWithTag:tag];

   ...

   [myManager release];
}

@end

때 나는 컴파일이 없는 경고하지만 실행할 때 내 프로그램을 다음과 같은 오류가:

*** -[Manager elementWithTag:]: unrecognized selector sent to instance 0x105d9a0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[Manager elementWithTag:]:

헤더 파일을(즉,Manager+MyCategory.h)은 제대로 가져온 그와 같이 링크를 구현하는 파일은 할 수 없습니다.면을 대체#import"Manager+MyCategory**.h**"여#가져오는"Manager+MyCategory**.m**에서"내준 그것이 제대로 작동됩니다.

누구나 설명할 수 있는 나에게 무엇을 잊었?감사

도움이 되었습니까?

해결책

카테고리는 전통적인 유닉스와 잘 어울리지 않습니다 공전 도서관.

이 경우 -objc 옵션을 링커에 전달하면 문제가 해결되는 것 같습니다.

Apple Technical Q & A QA1490 모든 것을 설명합니다.

다른 팁

Xcode의 ApprorPriate Target에 Manager+MyCategory.m을 추가하는 것을 잊어 버린 것으로 생각됩니다. 모든 기호가 존재하고 적절한 헤더 파일이 포함되어 있기 때문에 모든 기호가 존재하고 컴파일러 경고가 없으므로 링커 오류가 발생하지 않지만 런타임에 elementWithTag: 메소드가 누락되었습니다.

사과,추가할 수 없습니다 이 주석으로...

그냥에 대한 테스트를 추가할 수 있습 extern c 에 선언된 함수를 머리에 구현된다.m 파일입니다.를 호출하는 경우 이러 c 함수 내에서 테스트 코드는 다음이 생 링커에 오류로 인해 해결되지 않은 식별자입니다.

이에 쉽게 만들 수 있습니다 문제를 조사를 제공하므로 즉각적인 피드백을 생성할 수 있는 몇 가지 추가 단서를 이 파일에 포함되지 않.

주어진 시간에 프레임,내가 가정을 이것을 했지만,경우에는...어 있는지 확인하는 청소,대상을 종료 엑스 코드,그리고 다시 열려 있습니다.나는 프로젝트 파일이 손상되는 메모리에와 이상한 행동을.

Xcode 4로 업그레이드 할 때이 문제가있었습니다.

수정하기 위해 카테고리 정의를 별도의 .m 및 .h -xcode 3으로 분리해야했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top