何时在界面上定义方法而何时不在?

时间:2011-09-03 21:13:31

标签: objective-c cocos2d-iphone

我正在使用Objective-C框架进行游戏开发,名为Cocos2d-iphone。

这是我在游戏中创建按钮图形的方式:

CCMenuItemImage *battle;
    battle = [CCMenuItemImage itemFromNormalImage:@"BattleFightOption1.png" selectedImage:@"BattleFightOption2.png"
                                           target:self selector:@selector(battleFightOption)];

基本上,当用户点击按钮时,方法battleFightOption会运行。

但我想知道,我从来没有在界面中定义battleFightOption ..所以,我的问题是:什么时候需要在界面中定义一个方法,什么时候不是?

3 个答案:

答案 0 :(得分:1)

简而言之,必须在接口中声明从类外部使用的每个方法;省略了类实现内部的方法。后者通常在类扩展中声明。

答案 1 :(得分:1)

使用@selector(methodName:)之类的选择器时,会在运行时动态调用methodName:。编译器不必知道它在哪里,并且在编译时不检查该方法是否存在。

但是,私下声明它仍然是一个好主意,这通常是通过在.m文件的顶部放置一个未命名的类别(通常称为类扩展):

#import "Class.h"

@interface Class ()

- (void)privateMethod;

@end

@implementation Class
...

答案 2 :(得分:0)

应该在界面中定义您打算公开的任何内容,在类外部调用。如果你只想使用@selector(battleFightOption),你真的不需要在任何地方定义方法,但我建议你在class extension中添加一个定义,就像你使用任何其他私有方法一样。