MCK*_*pur 1 loops objective-c fast-enumeration
我们在快速枚举中释放一个参数吗?因此,此代码是准确的:
for (MKCircle *circle in localOverlays) {
[mapView addOverlay: circle];
[circle release]; // Is it perfectly alright to call this?
}
Run Code Online (Sandbox Code Playgroud)
我只是想知道,我第一次使用快速枚举!
答案在Apple内存管理规则中.
您拥有自己创建的任何对象
使用名称以"alloc","new","copy"或"mutableCopy"开头的方法创建对象
你创造了circle吗?没有.
您可以使用retain获取对象的所有权
你保留了circle吗?没有.
所以你不拥有这个对象.
您不得放弃您不拥有的对象的所有权
由于你已经确定自己不拥有,这似乎相当直接circle.您问题中的示例代码中的版本不应该存在.事实上,最有可能的是,它会在某个地方造成崩溃.
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |