Objective C自定义类方法未被调用

时间:2011-09-09 15:19:43

标签: objective-c ios cocoa-touch class

所以我有这个自定义类只有一个测试方法,它执行nslog。我将在我的应用程序中多次重用此方法。界面看起来像这样。

@interface TestViewController: UIViewController {  CMImageMover * imageMover }

然后在视图中加载I:

imageMover = [[CmImageMover alloc] init];

如果我这样做:

[imageMover testMethod];

在alloc和init之后,它在viewDidLoad函数中工作,但是如果我再次从视图控制器中的另一个函数调用它,则没有任何工作,并且不会调用类方法。

我在这里做错了什么。每个其他var我声明像NSArray / NSTimer,我说的方式,我能够访问并在我的控制器中使用它。

1 个答案:

答案 0 :(得分:2)

当你说“如果我从视图控制器中的另一个函数再次调用它时没有任何作用”,那么首先要检查的是你发送testMethod的内容。它可能是零,在这种情况下不会发生任何事情。在目标C中发送消息给nil什么都不做。添加NSLog以查找,例如

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

如果NSLog显示它是零 - 或者说是疯狂的东西 - 那么用imageMover ivar跟进你正在做的事情。

您在提问中提到了一种类方法,但不要在代码段中引用它。

如果您已将testMethod定义为类方法,那么当您将该消息发送到实例时,它将失败。 (它会失败吵闹。)类方法会像这样介绍:

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

将引入一个实例方法:

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

道歉,如果这对您来说非常明显,并且错过了问题的重点。从问题所在的问题来看,问题并不明确。