如果你想創建子類有方法不同的實現,我想你可以創建一個協議與該方法
@protocol DoSomethingProtocol
- NSString* Update:(NSString *message);
創建3類符合這個協議並實現您想要的不同,這些類中的方法
@interface WorkerA<DoSomethingProtocol>
@interface WorkerB<DoSomethingProtocol>
@interface WorkerC<DoSomethingProtocol>
而在你的A類,聲明
@property(nonatomic, assign) id<DoSomethingProtocol> worker;
如果你想這個類做這樣的事情WorkerA可以做,只是一個工人A或B分配給它
- (id)initWithStrategy:(id<DoSomethingProtocol>) strategy{
// super init
worker = strategy;
}
,並在你的課A
self.message = [worker Update:self.message];
[self.flippedCards addObject:newObj];
所以你可以很容易地選擇什麼t他的工作人員應該這樣做,並且可以在您的班級中更新實例變量,而無需在兒童班級中調用它
這是委託在Objective-C圖案和與策略模式類似在.NET
僅調用'[超級XXX]'從一個重寫實施'xxx'方法。 – rmaddy