2013-03-21 45 views
0

這是一個普遍的問題。我可以將我的問題分成兩部分:如何根據父對象定義子對象?

我有一個ChildClass類,它從ParentClass開始。

  • ParentClass有許多屬性和方法。
  • ChildClass有一些新的方法和一些新的屬性。

1)我想定義一個initFromParentClass方法,其簽名會

 - (id) initFromParentClass:(ParentClass)anObjectFromTheParentClass 

這將創造ChildClass一個新實例,基於anObjectFromTheParentClass - 也就是新的所有屬性實例從「父實例」的實例中「複製」。

2)這兩個父/子對象可以動態鏈接嗎?即:如果父母改變,孩子改變了?

謝謝

回答

1

一個熟悉的成語是給孩子治病類委託現有的方法讓父的實例:

@implementation ChildClass 
@property (nonatomic, strong) ParentClass *obj; 
- (void) mill 
{ 
     [obj mill]; 
} 

- (NSInteger) count 
{ 
     return [obj count]; 
} 

這可能是繁瑣且難以維持,如果父類具有廣闊和快速變化的API。在這種情況下,您可能根本不想繼承,而是從ParentClass和ChildClass中提取一個通用接口,並且可能讓ChildClass的實例觀察對它們進行初始化的對象的更改。

+0

不錯的主意!感謝名單 – Colas 2014-01-24 08:13:10

相關問題