由於名稱的選擇,您的問題引起了一些混淆。
在Objective-C有一個標準的方法copy
- 它返回一個全新的對象,它是一個拷貝,或克隆,現有對象的 - 它是由NSObject
實現。
你的標題:
如何類對象複製到另一個類對象
可以理解爲您希望覆蓋用另一個值的現有對象,您的copy:
方法確實如此:
-(void) copy: (Fraction*) f {
self.num = f.num;
self.denom = f.denom;
self.label = f.label;
}
This 用當前(self
)對象屬性的值替換/覆蓋與另一對象屬性的值(f
)。在Objective-C中調用copy:
是一個糟糕的選擇,因爲copy
會創建一個新對象。
您撥打電話copy
時出現錯誤代碼,而不是您自己的copy:
。嘗試改爲:
Fraction *g = [Fraction some initializer here]; // your original object
Fraction *f = [Fraction new]; // another object, with some default values
[f copy:g]; // set f's properties from g's
這應該工作,但令人困惑的是爲(a)它被稱爲copy:
及(b)它實際上並沒有在label
特性複製在所有,但股同一對象f
& g
之間。如果該對象是不可變的(NSString
),將不會有任何區別,但如果它是可變的(NSMutableString
),然後變異g
的label
也將變異f
的。\
如果你必須這樣做,也許你打電話方法reinitFrom:
,或其他東西,而不是copy:
。
HTH
來源
2016-08-01 00:10:26
CRD
這聽起來像是一個非常古老的教程或不是從基礎基類派生的例子。 – bbum