如何在Objective-C中调用方法?

53 objective-c

我正在尝试构建一个iPhone应用程序.我创建了一个
这样的方法:

- (void)score {
    // some code
}
Run Code Online (Sandbox Code Playgroud)

我试图用其他方法调用它:

- (void)score2 {
    @selector(score);
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.那么,我该如何正确调用方法呢?

ndu*_*sis 93

要在这种情况下发送一个objective-c消息,你会这样做

[self score];
Run Code Online (Sandbox Code Playgroud)

我建议你阅读Objective-C编程指南 Objective-C编程指南


Chu*_*uck 30

我建议你阅读Objective-C编程语言.关于消息传递的部分具体是你想要的,但整个过程将帮助你开始.之后,在您开始制作自己的应用之前,可以尝试做一些教程来感受它.

  • @fijiaaron:我没说"RTFM".我说这个问题是在一个基本的层面上,如果他不得不问它,他会发现他在Objective-C中的经历非常令人沮丧并且阅读介绍性指南是一条良好的开端.你知道,教一个人钓鱼.就个人而言,我发现这种答案比质量未知的代码呕吐更有帮助. (6认同)

Fer*_*cio 24

我想你要做的是:

-(void) score2 {
    [self score];
}
Run Code Online (Sandbox Code Playgroud)

[object message]语法是调用在目标C的方法以正常的方式.我认为在@selector需要在运行时确定要调用的方法时会使用语法,但我不太了解以便为您提供更多信息.


小智 17

调用方法是这样的

[className methodName] 
Run Code Online (Sandbox Code Playgroud)

但是如果你想在同一个类中调用该方法,你可以使用self

[self methodName] 
Run Code Online (Sandbox Code Playgroud)

以上所有是因为你的方法没有采取任何参数

但是如果你的方法需要参数,你需要这样做

[self methodName:Parameter]
Run Code Online (Sandbox Code Playgroud)


gan*_*noj 5

用这个:

[self score]; you don't need @sel for calling directly
Run Code Online (Sandbox Code Playgroud)

  • 如果可以为方法添加延迟,我一直在想.从来没有要求这样做,但总是想知道是否可以完成以及如何完成.:) 好一个.来了一件事,最终找到了有用的东西. (2认同)