当前位置:  开发笔记 > 编程语言 > 正文

内存管理.复制方法

如何解决《内存管理.复制方法》经验,为你挑选了1个好方法。

我使用此代码复制和我的类的实例

//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)之类的不可变类不需要提供实际的副本,因为它们不能被更改.我的猜测是这些类只是执行一个不应该影响复印机行为的优化.



1> NilObject..:

诸如NSString(但不是NSMutableString)之类的不可变类不需要提供实际的副本,因为它们不能被更改.我的猜测是这些类只是执行一个不应该影响复印机行为的优化.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有