2012-03-23 3 views
1

이 질문은 꽤 기초적이지만, 실제로 붙어 있습니다. 나는 plist를 가지고있다. 나는 그것을 배열로 읽어들이려고 노력하고 있으므로 다양한 클래스에서이 클래스를 사용할 수 있습니다. 그래서 한 클래스에서 나는 가지고있다 :다른 클래스의 클래스 메서드를 호출 하시겠습니까?

나는 다른 클래스에서 배열을 꺼낼 수 있기를 원한다. 나는 다른 클래스 (헤더를 가져온 후)에서 NSString *str = [QuestionContainerObject questionArray];과 같은 호출을 시도했지만 'class method + questionArray not found'경고가 표시됩니다.

누군가 올바른 방향으로 나를 가리킬 수 있습니까? 나는 정말로 길을 잃었다! 감사!!

+1

경고는 header 파일에서 questionArray 클래스 메서드를 선언하지 않았거나 QuestionContainerObject 클래스의 @interface 블록에서 선언되지 않았다고 제안합니다. 실행하면 어떤 일이 발생합니까, 아니면 예외가 발생합니다. –

+0

와우, 네 말이 맞아. 이제 모든 것이 효과가 있다는 것을 수정했습니다. 이 방법을 호출하는 적절한 방법이 있습니까? 항상 QuestionContainerObject를 참조해야합니까? 고마워, 전에 클래스 방법으로 일한 적이 없어. – sixstatesaway

+0

네, 맞습니다. 클래스 메소드에서 [self otherClassMethod] 할 수도 있습니다. 클래스는 Objective-C의 객체입니다. 디자인 패턴의 팩토리 객체에 익숙한 경우 클래스 객체는 해당 클래스의 인스턴스에 대한 팩토리 객체입니다. –

답변

2

경고는 컴파일러가 questionArray 메서드가 있는지 모르기 때문에 발생합니다.

또한
#import QuestionContainerObject.h 

객체를 해제하는 것을 잊지

+0

아크를 사용하는 경우 아닙니다. iOS 질문에 아크 사용 여부를 포함시켜야합니다. D – Ahti

+0

SHE가 ARC를 사용하지 않습니다.) 도움을 주셔서 감사합니다. 이 방법을 사용하면 올바른 방법일까요? 항상 QuestionContainerObject를 참조해야합니까? 고마워, 전에 클래스 방법으로 일한 적이 없어. – sixstatesaway

+0

클래스는 실제로는 객체이기 때문에 모든 클래스 메소드는 클래스에 전송 된 메시지입니다. 그래서 예를 들어 : [[ClassName someClassMethod];'그리고 당신은 어떤 클래스에서든 그것을 호출 할 수 있으며 클래스의 인스턴스를 먼저 인스턴스화하지 않아도됩니다. –

0

당신을 했 [클래스 ALLOC]를 사용하여 만든 : 는

@interface QuestionContainerObject 
+ (NSArray*)questionArray; 
@end 

및 파일의

이 그것을 사용 (QuestionContainerObject.h) 헤더에이 방법을 정의 클래스 메소드 선언을 헤더 파일에 넣으시겠습니까?

Btw, static NSArray* questions = nil;을 메소드 본문 외부로 이동하고 = nil을 제거하십시오. 그렇지 않으면 원하는 효과를 미치지 못할 것입니다.