0

我有一个 LayerClass (Scene1.M) 的实例,它生成移动的海洋、云等。这将创建我的 Parachutist.M 类的一个实例,以使精灵降落伞进入大海。在那里,我希望 parachutist 实例调用 Scene1.M 类中的一些方法。我通过 Scene1.M 调用 parachutist = [Parachutist createParachutist:self];

在 Parachutist.h 中 createParachutist 被定义为 +(id) createParachutist:(id)parentID; Parachutist 实例可以通过 [parentID method1] 等从 Scene1.M 运行方法,这很有效。问题是当我过渡到一个新场景时,我意识到 Scene1.M 实例没有被释放,因为 createParachutist 实例拥有所有权,所以我有一个保留周期。我读过关于 __weak 但 ARC 似乎不允许这样做。我研究了回调和委托,但看不到要使用什么。我想要的只是将 Scene1 实例的 ID 传递给 Parachutist 实例,而不创建保留循环,但允许 parachutist 调用 Scene1 中的方法。


非常感谢 Vladimir 和 Rob 确认 __weak 应该与 ARC 一起使用。我一直忙于关注委托/回调等,只有当您确认 ARC 应该允许 __weak 时,我才深入研究并发现我的部署目标是 4.6 倍。一旦我将其更改为 5 然后 __weak 被允许,这已经解决了问题

4

0 回答 0