我正在快速浏览一个寻找内存泄漏的大型项目,并遇到了一个@property (nonatomic, retain)
没有对应release
的 in dealloc
. 哎呀,快速修复,我想。
在后来的崩溃之后,我仔细观察并且setFoo
方法被覆盖,并且值被保留但不是由 ivar - 为了这个问题,假设它被放入 NSDictionary。
(好的,如果您不想假设 - 设置值实际上是 cocos2d 中的 CCSprite setNormalSprite
,并且它作为子项添加,因此保留,但只是分配给 ivar:
- (void)setNormalSprite:(CCSprite *)sprite
{
if (normalSprite) {
[self removeChild:normalSprite cleanup:YES];
normalSprite = nil;
}
normalSprite = sprite;
[self addChild:normalSprite];
(...omitted...)
}
)
对于设置器导致保留计数增加但不是因为与其关联的 ivar 被保留的值的正确关键字是什么?