Jam*_*B41 0 memory-management objective-c autorelease ios
我正在构建一个有三种不同尺寸的益智游戏.加载的图像取决于拼图的大小.为简单起见,我称之为小/中/大.当我加载我的视图时,我告诉它拼图的大小,我正在调用loadImages方法.
我有一个像这样设置的属性:
@property (nonatomic, retain) UIImage *solidSquare;
Run Code Online (Sandbox Code Playgroud)
所以在我的loadImages方法中,我有:
self.solidSquare = [[[UIImage alloc] initWithContentsOfFile:solidPath] autorelease];
Run Code Online (Sandbox Code Playgroud)
solidPath是根据拼图大小动态确定的.
现在,如果用户切换到不同的拼图大小,我会在游戏开始时再次调用loadImages.我该如何处理这种记忆情况?我觉得我需要在loadImages方法的开头调用它.
[self.solidSquare release];
Run Code Online (Sandbox Code Playgroud)
我呢?我如何评估它是否是第一次装载,或者我是否需要?
小智 6
不,你不(或它会崩溃).由于该对象是自动释放的,因此您不必再担心它的引用 - 它不会使其指针悬空并且不会泄漏内存.此外,使用属性时,属性设置器可确保自动释放旧对象.
总而言之,您可以安全地重新分配酒店.
编辑:但你也必须将它设置为nil在-dealloc.
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |