2012-08-27 3 views
3

이 질문의 사전 답변은 here입니다.iOS : 카테고리에 구현 된 호출 방법 시도

나는 클래스 (A)가 있으며 클래스에는 카테고리가 있습니다. 이 범주에서는 메서드를 정의하고 구현했습니다.

이제 [a someMethod]를 호출하기 위해 B 클래스를 사용하려고합니다. 내 B 클래스는이 메서드에 연결할 수 없습니다. 다른 클래스의 카테고리 메스를 호출 할 수 없습니까?

+0

카테고리는 클래스의 확장 기능을 수행해야합니다. 서브 클래 싱과 비슷합니다. 그러나 특정 클래스에 대해 작성된 카테고리는 해당 클래스 객체에 의해서만 호출 될 수 있고 다른 클래스에서는 호출 될 수 없습니다. 예 : NSString의 카테고리를 작성하면 NSString 객체 만 사용하여 호출 할 수 있습니다. – SayeedHussain

+0

DBAccess 클래스의 범주입니다. 다른 클래스에서 : DBAccess * access = [[DBAccess alloc] init]; [액세스 myCategoryMeth]; NSString과 같은 경우가 아닙니까? – NCFUSN

+0

이것은 유효하며 작동해야합니다. – SayeedHussain

답변

4

코드를 표시하지 않았지만 카테고리 메소드를 참조하는 .m 파일에서 카테고리 인터페이스를 정의하는 파일의 헤더를 가져와야합니다.

+0

그랬습니까? 같은 결과 – NCFUSN

+0

같은 결과가 아닙니다. 그것은 효과가 있었다. 젠장, 나는 # import DBAccess로 충분하다고 생각했다. 이제는 저의 메토가 어떤 범주에 구현되어 있는지 기억해야합니다. 또 다른 머리 아치입니다. – NCFUSN

+0

카테고리를 포함해야합니다. – SayeedHussain

1

.m 파일에서 범주를 정의하면 해당 .m 파일 외부에서 범주의 메서드를 호출 할 수 없습니다.

+0

그건 사실이 아닙니다. –

+0

아.나는 수업 연장을 생각하고 있었다. 카테고리와 유사하지만 가져 오기와 다르게 작동해야합니다. – mark

0

불행히도 문제에 대한 충분한 정보를 제공하지 않았습니다. 따라서 우리가 할 수있는 일은 그것이 어떻게 이루어져야 하는지를 말하고, 왜 당신이 문제를 겪고 있는지 추측하는 것입니다.

질문을 게시 할 때 모든 관련 정보를 게시해야합니다. 이 경우 작동하지 않는 코드가됩니다. 또한

, 명세서 것은

내 B 클래스는이 방법을 도달 할 수 있습니다.

은 거의 의미가 없습니다. 컴파일러 오류, 런타임 오류, 구문 창이 표시되지 않습니다. 정확히 무엇을 의미합니까?

당신이 클래스의 범주를 구현할 때

지금, 당신은 헤더 (.h) 파일 범주를 선언 할 ...

@interface Foo (BarExtensions) 
- (NSString*)bar; 
@end 

하고, 구현에 (하는 .m) 파일 이러한 메소드 구현을 제공하십시오.

@implementation Foo (BarExtensions) 
- (NSString*)bar { 
    return @"FooBar"; 
} 
@end 

물론 적절하게 이름을 지정해야합니다.

또한 대상에 맞게 빌드 된 파일 목록에 .m 파일을 포함해야합니다.

이렇게하면 잘못 될 일이별로 없습니다.