我不是100%確定我明白你的意思。所以我可能會回答錯誤的問題
如果在你的類中你需要使用一個對象(我稱之爲worker在下面)來完成你的工作,但是這個對象的類直到後來才知道,你可以使用依賴注入(DI)。
MyClass.h
@interface MyClass : NSObject
@property (nonatomic, retain) id<WorkerInterface> worker;
@end
MyClass.m
@implementation MyClass
@synthesize worker = _worker;
- (void)myMethod;
{
[self.worker doSomething];
}
// You could also provide a default class to use if one is not passed in
//
// - (id<WorkerInterface)worker;
// {
// if (!_worker) {
// _worker = [[DefaultWorker alloc] init];
// }
// return _worker;
// }
@end
現在,每當我實例這個I類可以簡單地通過在適當的對象要使用例如:
MyWorkerClass *worker = [[MyWorkerClass alloc] init]; // <- Conforms to @protocol(WorkerInterface)
MyClass *instance = [[MyClass alloc] init];
instance.worker = worker;
[instance doSomething];
這是一種方法。可能有十幾種變化。但請注意,您可以使用'self'來獲取類 - 它將是子類的類,而不是超類。 – 2012-01-14 14:25:36