我有一个非常基本的问题。 我想复制一个对象。所以复制它。
就像:
ProductEntity *pCopy = [[ProductEntity alloc]init];
ProductEntity *pTemp = [[ProductEntity alloc]init];
pCopy = [sourceArray objectAtIndex:[sourceCoverFlow selectedCoverIndex]];
[pTemp setBalance:pCopy.balance];
[pTemp setAvailableBalance:pCopy.availableBalance];
[pTemp setProductType:pCopy.productType];
[pTemp setProductTypeDesc:pCopy.productTypeDesc];
[pTemp setIsCorpAccount:pCopy.isCorpAccount];
[pTemp setIndex:pCopy.index];
[pTemp setAlias:pCopy.alias];
[pTemp setSaveAccount:pCopy.saveAccount];
[pTemp setAccount:pCopy.account];
那么,pTemp是一个新的Object,它是pCopy的副本吗?
如果我修改某些pTemp,会修改pCopy吗?
Thnks
答案 0 :(得分:3)
pTemp是一个新对象,其属性包含的值可以是标量属性类型的pCopy属性的副本,也可以是对象属性类型的引用。
在Objective-C中,对象的默认值是引用。在Cocoa中,您可以使用copy
选择器制作实现NSCopying协议的对象的副本。如果ProductEntity符合NSCopying协议,则此代码可能有效:
ProductEntity *pCopy = [[sourceArray objectAtIndex:2] copy];
要使NSObject的子类符合NSCopying协议,您需要实现copyWithZone:
,请参阅NSCopying Protocol