2011-09-09 4 views
3

그래서이 사용자 정의 클래스는 nslog를 수행하는 테스트 메소드로 구성되었습니다. 내 애플 리케이션에서 여러 번이 방법을 재사용 할 것이다. 인터페이스는 다음과 같습니다. 그런 다음보기에서Objective C 사용자 정의 클래스 메소드가 호출되지 않습니다.

@interface TestViewController: UIViewController { CMImageMover * imageMover } 

부하를했다 I :

imageMover = [[CmImageMover alloc] init]; 

내가 할 경우 : ALLOC 후

[imageMover testMethod]; 

오른쪽과가있는 viewDidLoad 기능 작동 init을하지만 난 그것을 호출하는 경우 뷰 컨트롤러의 다른 함수에서 아무것도 작동하지 않고 클래스 메서드가 호출되지 않습니다.

내가 여기서 잘못하고있다. 다른 모든 var 나는 NSArray/NSTimer처럼 선언, 나는 말을 할 그리고 나는 내 컨트롤러를 통해 액세스하고 그것을 사용할 수 있어요.

+0

testMethod를 호출 할 수없는 함수 본문을 제공 할 수 있습니까? – matthias

+0

전화 코드를 제시해야합니다. 그리고 그것은 "클래스 메소드"또는 "인스턴스 메소드"입니까? – an0

+0

클래스의 메서드는 다음과 같습니다. - (void) testM { NSLog (@ "in test"); } – Mike007

답변

2

"보기 컨트롤러의 다른 기능에서 다시 호출하면 아무 것도 작동하지 않습니다"라고 말하면 가장 먼저 확인할 항목은 testMethod입니다. 그것은 아무 일도 일어나지 않을 것입니다. 객관적인 C에서 nil에 메시지를 보내는 것은 아무 것도하지 않습니다. 찾으려면 NSLog를 추가하십시오. 또는 미친 뭔가 - -

NSLog(@"imageMover object is: %@", imageOver); 
[imageMover testMethod]; 

NSLog가 표시되면

이 전무하다 다음은 imageMover의 바르와 함께 무엇을하고 있는지 후속.

질문에 클래스 메소드를 언급했지만 코드 스 니펫에서 클래스 메소드를 참조하지 마십시오.

testMethod을 클래스 메소드로 정의한 경우 해당 메시지를 인스턴스로 보내면 실패합니다. (그리고 시끄럽게 실패합니다.) 클래스 메소드는 다음과 같이 소개 될 것이다 :

+ (void) testMethod 
{ 
     NSLog(@"CMImageMover testMethod called on Class"); 
} 

인스턴스 방법은 다음과 같이 소개 될 것이다 :

- (void) testMethod 
{ 
     NSLog(@"testMethod called on an instance of CMImageMover"); 
} 

사과를이 모든 당신에게 screamingly 분명하고 경우 질문의 요점을 놓치고. 문제가 어디에서 발생했는지는 분명하지 않습니다.

+0

NSLog (@ "object is : % @", [imageMover description]); testMethod를 호출하기 전에 null이라고 말합니다. – Mike007

+2

아, 고쳐 주셨습니다. 그래서 무슨 일이 있었는지 내 viewDidLoad에 많은 것들이 설정되어 있습니다. 나는 방금 클래스를 만들어 viewDidLoad의 끝에 alloc과 init을 붙였다. 처음에 다른 함수 호출은 할당되기 전에 testmethod를 호출했습니다. 내가 할당 및 초기화 viewDidLoad의 시작 부분으로 이동하고 모든 일이해야대로 작동합니다. 나는 산산조각이 난다. + class 메소드를 사용하여 새로운 것을 배웠기 때문에 답변으로 표시했습니다. – Mike007

관련 문제