Objective-C协议vs继承与扩展?
问题描述:
我有几个类有差不多相同的代码。它们之间只有一个或两个字符串是不同的。我想要做的是从另一个定义这些函数的类中使它们成为“x”,然后使用常量或其他来定义那些不同的字符串。我不确定是否“x”是继承或扩展或什么。这是我需要帮助的。Objective-C协议vs继承与扩展?
例如:
objectA.m:
-(void)helloWorld {
NSLog("Hello %@",child.name);
}
objectBob.m:
#define name @"Bob"
objectJoe.m
#define name @"Joe"
(我不知道定义字符串是合法的,但这会得到结果e point across)
如果objectBob.m和objectJoe.m不需要定义方法,那么它们将是理想的,只是它们与objectA.m的关系。有没有办法做这样的事情?它有点像协议,除了相反,我想要“协议”来实际定义函数。
如果一切都失败我就做objectA.m:
-(void)helloWorld:(NSString *name) {
NSLog("Hello %@",name);
}
而且具有其他文件调用该函数(只是#import objectA.m
)。
答
只需在您的子类中创建一个-name
方法(您需要一个基类,然后是每个类型的子类)。
然后做:
- (void)helloWorld {
NSLog(@"hello %@", [self name]);
}
编辑:固定的非objc样方法命名。 再次编辑:固定方法。
+1除了它将通过可可命名标准调用“名称”。 – 2010-06-07 22:03:33
Objective-C getter方法不使用单词get。这只是'[自己的名字]'。以'get'开头的方法表明某个提供的缓冲区正在填充或正在获取远程资源。 – Chuck 2010-06-07 22:04:31
这看起来会很好。可以/我应该将它与一个定义基类所需函数的协议(如名称)结合起来?实际上,“名称”是否需要成为一种方法,或者有没有办法使它成为子类的常量? – RyanJM 2010-06-07 22:27:29