有关xcode警告方法定义'XXX'的问题未找到

时间:2009-12-21 07:34:15

标签: iphone-sdk-3.0

我在这里看到了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'的方法定义

1 个答案:

答案 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