由于名称的选择,您的问题引起了一些混淆。
在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