在objective-c中,NSCopying協議爲我們提供了copy
和mutableCopy
。他們都實現了copyWithZone:
選擇器。現在,我的要求是:iOS,如何複製一個對象而不改變它的指針?
爲:地址爲0x00002bfa
A.name = @"John";
A.age = 10;
對於B:地址是0x0000843d
B.name = @"Lily";
B.age = 20;
後A = [B customCopy];
現在是:
對於A:地址是0x00002bfa
A.name = @"Lily";
A.age = 20;
只改變A的屬性值,地址仍然沒有改變。 因爲它是自定義的NSObject。我認爲NSCopying無法正常工作。原因copy
和mutableCopy
將改變A的指針,讓它指向B.這不是我的意願。
是否清楚?任何想法!很長一段時間我對這個問題感到困惑。謝謝!
NSCopying只改變值而不是地址。而且我認爲你希望對象A的地址在值更改時也改變了? –
請澄清你的問題。如果你想改變A的地址,那麼你爲什麼要複製和分配?只需創建一個新實例並使用屬性B初始化它。 – Annie
感謝AniKhechoyan和warisshams,我不希望更改A的地址。我想要保留它的舊指針。NSCopying不能這樣做,我堅信!在我的例子中,我向你展示了從開始到結尾A的地址是'0x00002bfa'! – ziacke