我们是否在快速枚举中释放了一个参数

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)

我只是想知道,我第一次使用快速枚举!

Jer*_*myP 6

答案在Apple内存管理规则中.

  • 您拥有自己创建的任何对象

    使用名称以"alloc","new","copy"或"mutableCopy"开头的方法创建对象

你创造了circle吗?没有.

您可以使用retain获取对象的所有权

你保留了circle吗?没有.

所以你不拥有这个对象.

您不得放弃您不拥有的对象的所有权

由于你已经确定自己不拥有,这似乎相当直接circle.您问题中的示例代码中的版本不应该存在.事实上,最有可能的是,它会在某个地方造成崩溃.