Objective c 未调用目标C自定义类方法

Objective c 未调用目标C自定义类方法,objective-c,ios,cocoa-touch,class,Objective C,Ios,Cocoa Touch,Class,因此,我有一个自定义类,它只包含一个测试方法,该方法不需要nslog。我将在我的应用程序中多次重复使用此方法。界面如下所示 @interface TestViewController: UIViewController { CMImageMover * imageMover } 然后在视图中加载I: imageMover = [[CmImageMover alloc] init]; 如果我这样做: [imageMover testMethod]; 在alloc和init之后,它在view

因此,我有一个自定义类,它只包含一个测试方法,该方法不需要nslog。我将在我的应用程序中多次重复使用此方法。界面如下所示

@interface TestViewController: UIViewController {  CMImageMover * imageMover }
然后在视图中加载I:

imageMover = [[CmImageMover alloc] init];
如果我这样做:

[imageMover testMethod];
在alloc和init之后,它在viewDidLoad函数中工作,但是如果我从视图控制器中的另一个函数中再次调用它,则什么都不起作用,类方法也不会被调用

我做错了什么。我声明的每一个其他变量,比如NSArray/NSTimer,我都按照自己的方式进行操作,并且我能够在整个控制器中访问和使用它

当您说“如果我从视图控制器中的另一个函数再次调用它,则什么都不起作用”时,首先要检查的是您发送的
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");
 }
下面将介绍一个实例方法:

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

如果这对你来说是非常明显的,并且没有抓住问题的关键,我会向你道歉。您的问题并不清楚问题所在。

能否提供一个无法调用testMethod的函数体?您应该向我们展示调用代码。它是“类方法”还是“实例方法”?类中的方法是:-(void)testM{NSLog(@“in test”);}如果我做NSLog(@“object is:%@),[imageMover description]);在我调用testMethod之前,它说它是null。啊,我修正了它。所以发生的事情是我在viewDidLoad中设置了很多东西。我刚刚创建了一个类,我只是把alloc和init放在viewDidLoad的末尾。开始时的其他函数调用是在分配testmethod之前调用它。我将alloc和init移到viewDidLoad的开头,一切都正常工作。我是个糊涂虫。我将您的答案标记为已回答,因为我通过+类方法学到了一些新东西