我知道,一旦你在编码方面做得更好,就会知道变量是什么,并且在这里出现空值,可能不会发生。在通往这种心态的过程中,是否有任何方法可以使您的变量声称为null,并验证它确实为null,或者您只是使用了错误的代码?
示例:
-(IBAction) startMotion: (id)sender {
NSLog(@"Forward or back button is being pressed.");
UIButton * buttonName = (UIButton *) sender;
NSLog(@"Button Name: %@", buttonName.currentTitle);
}
按钮名称:( null)是控制台中显示的内容
由于
答案 0 :(得分:1)
According to Apple's docs, the value for currentTitle
may be nil.
可能没有设置。
您始终可以if (myObject == nil)
进行检查,或者在这种情况下:
-(IBAction) startMotion: (id)sender {
NSLog(@"Forward or back button is being pressed.");
UIButton * buttonName = (UIButton *) sender;
if (buttonName != nil) {
NSString *title = buttonName.currentTitle;
NSLog(@"Button Name: %@", title);
}
}
检查后退或前进按钮是否被按下的另一种方法是检查id
本身。
//in the interface, and connect it up in IB
//IBOutlet UIButton *fwdButton;
//IBOutlet UIButton *bckButton;
-(IBAction) startMotion: (id)sender {
NSLog(@"Forward or back button is being pressed.");
UIButton * buttonName = (UIButton *) sender;
if (buttonName == fwdButton) {
NSLog(@"FWD Button");
}
if (buttonName == bckButton) {
NSLog(@"BCK Button");
}
}
另外,请确保您的插座和操作都在IB中连接,并保存并重新构建项目。我已经离开了我在IB中更改某些内容的地方,保存了.m
文件(不是笔尖)并且就像“为什么这不起作用?”
答案 1 :(得分:0)
我在Interface Builder中使用了错误的字段我使用Interface Builder Identity中的Name而不是按钮设置中的Title。
答案 2 :(得分:-3)
buttonName
不能为空,否则buttonName.currentTitle
会产生错误。
因此currentTitle
属性本身必须为空。
或者,currentTitle
可能是一个值为(null)
的字符串。
通常,在Objective-C中,如果您有[[[myObject aMethod] anotherMethod] xyz]
且结果为null
,则很难知道哪个方法返回null。但是使用点语法.
并非如此。