我有一個NSArray的MyObjects。有關複製NSArray的最後一個對象的問題
我想複製我的數組的最後一個對象。換句話說,我想向數組中添加一個新的對象,它與最後一個完全相同。
我試着用:
id object = [[self arrangedObjects] lastObject];
id newObject = [object copy];
但我意識到,我不能用複製的方法,因爲它不是在NSObject的實現。
我應該實現的MyObject類的複製方法,返回MyObject來的新實例,並更改代碼如下:
MyObject object = [[self arrangedObjects] lastObject];
MyObject newObject = [object copy];
還是有其他solutoins?
UPDATE 從NSObject的文檔
NSObject的本身並不支持NSCopying協議。子類 必須支持該協議並實現copyWithZone:方法。 A copyWithZone:方法的子類版本應該先發送消息 以超級優先,以合併其實現,除非子類 直接從NSObject下降。
它說選擇器副本無法識別。我在NSObject拷貝文檔中發現了這一點:NSObject本身不支持NSCopying協議。子類必須支持該協議並實現copyWithZone:方法。 copyWithZone:方法的子類版本應首先將消息發送到超級,以合併其實現,除非子類直接從NSObject下降。 – aneuryzm
該文檔說:如果沒有對copyWithZone:的實現,則會引發異常。這必須是你無法識別的選擇器:) NSObject必須做額外的驗證 – Geoffroy
回答我的問題..我不能用NSObject複製,但我需要繼承它並使用MyObject類來實現NSCopying協議。正確嗎? – aneuryzm