我最近创建了一个可以从其他类调用的方法,这是我的代码。
在ViewController1.h
中+ (void)updateName:(id)sender;
在ViewController1.m
中+ (void)updateName:(id)sender {
}
方法是调用和工作,但是我在ViewController1.m文件中有另一个方法
-(void)updateString {
NSLog(@"IT WORKED");
}
但是,我尝试在我的updateName方法中调用它:
+ (void)updateName:(id)sender {
[self updateString];
}
但是我得到一个错误说"没有已知的选择器类的方法' updateString' "任何人都可以告诉为什么会发生这种情况以及如何调用此方法?感谢。
答案 0 :(得分:0)
方法前面的+表示一个类方法,即您不需要创建ViewController1
的新实例来调用该方法。其中[self updateString]
是一个实例方法,即您需要创建该类的新实例才能执行它。这里的问题是范围的差异。见下文:
在另一个班级里面:
[ViewController1 updateName:SOMETHING];
VS
ViewController1 *newViewController1 = [[ViewController1 alloc] init];
[newViewController1 updateString];
<强> 修改 强>
如果你想从那个类中调用该方法,你可以这样做吗?
+ (void)updateName:(id)sender {
[ViewController1 updateString];
}
但是,它无法引用或更新任何类属性等。因此,根据您的方法名称,这可能无法解决您的问题。
这有意义吗?
答案 1 :(得分:0)
您正在做一些奇怪的事情,但要解决您的问题,只需在您的方法名称前面替换 - +。