我只是想学习目标-c。
我已经看过不同语言的AbstractFactory模式的维基百科示例。
这是按钮定义:
@protocol Button
- (void)paint;
@end
@interface WinButton : NSObject <Button>
@end
这是一个工厂:
@implementation WinFactory
- (id)createButton {
return [[[WinButton alloc] init] autorelease];
}
@end
据我所知,obj-c 的id
关键字应该类似于 C#'svar
或 C++11's auto
,对吧?
所以我的问题是:
为什么让工厂返回一个未指定类型的通用对象?这是一个错误(让工厂返回其他不是按钮的东西)还是有任何理由这样做?
我会这样写一个工厂:
@implementation WinFactory
- (id<Button>)createButton {
return [[[WinButton alloc] init] autorelease];
}
@end
我错了吗?