我正在构建一个有三种不同尺寸的益智游戏。加载的图像取决于拼图的大小。为了简单起见,我会称它们为小/中/大。当我加载我的视图时,我告诉它这个拼图的大小,我打电话给一个loadImages方法。重新分配自动释放对象
我有我们设置了这样的特性:
@property (nonatomic, retain) UIImage *solidSquare;
所以在我loadImages方法我有:
self.solidSquare = [[[UIImage alloc] initWithContentsOfFile:solidPath] autorelease];
solidPath基于拼图大小动态确定。
现在,如果用户切换到不同的拼图大小,我会在游戏开始时再次调用loadImages。我如何处理这种记忆状况?我觉得我需要在我的loadImages方法开始时调用它。
[self.solidSquare release];
是吗?我如何评估它是第一次加载,还是我需要?
当我读完这个问题时,你已经有了答案。 +1解释autorelease意味着什么,特别是,该属性负责保留/释放。不过你可能想提一下,这是'保留'/'强'的属性,在这种情况下,它具有魔力。 – ATaylor 2012-08-04 15:14:39
因此,当我的视图被释放时,我甚至不需要释放它?我想这是有道理的。我没有意识到如果它被重新分配,它会释放旧对象,这是很好的知道。如果我想手动管理这个,我是否需要评估solidSquare == nil,如果是的话,在分配它之前释放它? – JamesB41 2012-08-04 15:23:43
@ JamesB41你必须在dealloc中将它设置为'nil'。查看更新。 – 2012-08-04 15:53:22