我正在使用Objective-C框架进行游戏开发,名为Cocos2d-iphone。
这是我在游戏中创建按钮图形的方式:
CCMenuItemImage *battle;
battle = [CCMenuItemImage itemFromNormalImage:@"BattleFightOption1.png" selectedImage:@"BattleFightOption2.png"
target:self selector:@selector(battleFightOption)];
基本上,当用户点击按钮时,方法battleFightOption
会运行。
但我想知道,我从来没有在界面中定义battleFightOption
..所以,我的问题是:什么时候需要在界面中定义一个方法,什么时候不是?
答案 0 :(得分:1)
简而言之,必须在接口中声明从类外部使用的每个方法;省略了类实现内部的方法。后者通常在类扩展中声明。
答案 1 :(得分:1)
使用@selector(methodName:)
之类的选择器时,会在运行时动态调用methodName:
。编译器不必知道它在哪里,并且在编译时不检查该方法是否存在。
但是,私下声明它仍然是一个好主意,这通常是通过在.m
文件的顶部放置一个未命名的类别(通常称为类扩展):
#import "Class.h"
@interface Class ()
- (void)privateMethod;
@end
@implementation Class
...
答案 2 :(得分:0)
应该在界面中定义您打算公开的任何内容,在类外部调用。如果你只想使用@selector(battleFightOption)
,你真的不需要在任何地方定义方法,但我建议你在class extension中添加一个定义,就像你使用任何其他私有方法一样。