首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个复制类方法会泄漏内存吗?

这个复制类方法会泄漏内存吗?
EN

Stack Overflow用户
提问于 2009-02-18 10:20:04
回答 2查看 1.2K关注 0票数 2
代码语言:javascript
复制
- (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;
}

任何人都能看到任何内存泄漏吗?

以下是属性类型:

代码语言:javascript
复制
NSString *name;
NSString *type;
NSMutableDictionary *address;

NSString *phoneNumber;
NSString *webAddress;   

NSMutableArray *prices;
NSMutableArray *pools;

以下是属性声明:

代码语言:javascript
复制
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *type;
@property (nonatomic, copy) NSString *phoneNumber;
@property (nonatomic, retain) NSMutableDictionary *address;
@property (nonatomic, copy) NSString *webAddress;
@property (nonatomic, retain) NSMutableArray *prices;
@property (nonatomic, retain) NSMutableArray *pools;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-02-18 10:37:25

定义为 copy 和not retain的属性将有一个额外的副本,如下所示(您的代码)

代码语言:javascript
复制
copy.name = [self.name copy];
copy.type = [self.type copy];
copy.phoneNumber = [self.phoneNumber copy];
copy.webAddress = [self.webAddress copy];

只需将它们写为

代码语言:javascript
复制
copy.name = self.name;
copy.type = self.type;
copy.phoneNumber = self.phoneNumber;
copy.webAddress = self.webAddress;
票数 7
EN

Stack Overflow用户

发布于 2009-02-18 16:58:46

这几乎肯定会像筛子一样泄漏。您需要提供您的@property和其他方法声明,以便我们推荐修复它的最佳方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/560507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档