我使用此代码复制和我的类的实例
//Create the copy and pass it onto edit controller PoolFacility *poolCopy = [self.thePoolFacility copy]; self.childController.thePoolFacilityCopy = poolCopy; [poolCopy release];
现在,当我在调试器中查看变量时,为什么某些类的字段具有相同的内存地址?他们不应该独立吗?根据Apple的说法
NSCopying协议声明了一种提供对象功能副本的方法."复制"的确切含义因类而异,但复制必须是功能独立的对象,其值与复制时的原始值相同.
这两个实例是poolCopy和原始的thePoolFacility
我的类复制方法如下所示:
- (id)copyWithZone:(NSZone *)zone { PoolFacility *copy = [[[self class] allocWithZone:zone]init]; copy.name = [self.name copy]; copy.type = [self.type copy]; copy.phoneNumber = [self.phoneNumber copy]; //make sure I get proper copies of my dictionaries copy.address = [self.address mutableCopy]; copy.webAddress = [self.webAddress copy]; copy.prices = [self.prices mutableCopy]; copy.pools = [self.pools mutableCopy]; return copy; }
NilObject.. 6
诸如NSString(但不是NSMutableString)之类的不可变类不需要提供实际的副本,因为它们不能被更改.我的猜测是这些类只是执行一个不应该影响复印机行为的优化.
诸如NSString(但不是NSMutableString)之类的不可变类不需要提供实际的副本,因为它们不能被更改.我的猜测是这些类只是执行一个不应该影响复印机行为的优化.