在objective-c中复制一个对象

时间:2011-07-04 15:14:13

标签: objective-c object copy

  

可能重复:
  How to copy an object in objective c

我有一个非常基本的问题。 我想复制一个对象。所以复制它。

就像:

    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

1 个答案:

答案 0 :(得分:3)

pTemp是一个新对象,其属性包含的值可以是标量属性类型的pCopy属性的副本,也可以是对象属性类型的引用。 在Objective-C中,对象的默认值是引用。在Cocoa中,您可以使用copy选择器制作实现NSCopying协议的对象的副本。如果ProductEntity符合NSCopying协议,则此代码可能有效:

ProductEntity *pCopy = [[sourceArray objectAtIndex:2] copy]; 

要使NSObject的子类符合NSCopying协议,您需要实现copyWithZone:,请参阅NSCopying Protocol