我在这里看到了1的内容,声明我可以通过更改像( - IBAction)shakeShakeShake这样的方法来删除xcode 3中的这些错误 - (IBAction)shakeShakeShake(id)sender
我在雪豹上使用iphone sdk 3.0和xcode 3.2.1
我的错误是:
Classes / MainViewController.m:156:警告:'MainViewController'可能无法响应'-shakeShakeShake'
/ Users / temp / Desktop / src / Count Down Timer(Utility App)/Classes/MainViewController.m:156:0 / Users / temp / Desktop / src / Count Down Timer(Utility App)/ Classes / MainViewController。 m:156:警告:(没有匹配方法签名的消息
Classes / MainViewController.m:顶级:
Classes / MainViewController.m:467:警告:类'MainViewController'的实现不完整
Classes / MainViewController.m:467:警告:'-pickerView:'的方法定义未找到
Classes / MainViewController.m:467:warning:'-shakeShakeShake:'找不到的方法定义
-----(抱歉长错误消息,我试图通过删除编译器和路径信息来减少它们)---
我尝试添加
之类的内容-(void)shakeShakeShake: (id) sender ;
作为.h文件和.m文件的原型
- (IBAction) shakeShakeShake: (id) sender {
dimView.alpha = 0.0f; }
进行这些更改会使警告消失,但是当我运行程序并执行此功能时,它将通过控制台消息退出Springboard:
[MainViewController shakeShakeShake]:无法识别的选择器发送到实例0x1213a20 2009-12-21 02:19:17.389倒数计时器(实用程序)[43704:207] *由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'* - [MainViewController shakeShakeShake]:无法识别的选择器发送到实例0x1213a20'
当我将函数更改回 - (IBAction)shakeShakeShake { (即使我将原型样式保留在:(id)sender)中,程序(一个简单的实用程序计时器)运行正常并且不会给控制台带来任何错误。
我似乎无法弄清楚我做错了什么,但我总是被教导如果可能的话删除警告,因为他们可能会注意到之后只会浮现并且很难找到的问题。
有人能指出我在正确的方向吗?非常感谢你的耐心,我还是新手! ; - )
谢谢Piesia
BTW,在这里调用shakeShakeShake:
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if(event.type == UIEventSubtypeMotionShake){ //你的代码在这里 [self shakeShakeShake]; } }
----错误消息跟随
Classes / FlipsideViewController.m:401:警告:类'FlipsideViewController'的实现不完整 Classes / FlipsideViewController.m:401:警告:找不到'-pickerView:'的方法定义 Classes / FlipsideViewController.m:401:警告:未找到'-shakeShakeShake'的方法定义
答案 0 :(得分:0)
看起来我需要在消息调用中明确地给出sender参数:
//instance method declaration
- (IBAction) shakeShakeShake: (id) sender ;
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
if (event.type == UIEventSubtypeMotionShake) {
// message -- method signature + parameter information
[ self shakeShakeShake: self ] ;
}
}
// ^-- needed for shake
//instance method definition
- (IBAction) shakeShakeShake: (id) sender {
// make window clear
dimView.alpha = 0.0f ; // always undim screen in shake as a failsafe
}
当我这样做时,警告会消失,应用程序似乎也能正常工作。谢谢你的时间。 Piesia