我有一个自动合成的readonly
&weak
属性:
@property (nonatomic, readonly, weak) KTWindowController* windowController;
我分配合成的 ivar,然后将其添加到数组中:
_windowController = [KTWindowController controller];
[self addSubController:_windowController];
这在调试版本中运行良好。但我得到一份报告,在发布(临时)构建中,这将立即 nil _windowController
,然后它尝试将 nil 添加到数组中,导致应用程序崩溃。
与 Debug 构建相比,发布(临时)构建中的哪些特定设置(优化级别?)会改变此行为?
奇怪的是,这种行为会从 Debug 版本变为 Release 版本。但是我能够重现这种行为,而且它实际上是有道理的——只是当它与调试版本中发生的事情不一致时就不行了。
建议的解决方法:
KTWindowController* windowController = [KTWindowController controller];
[self addSubController:windowController];
_windowController = windowController;
除了使用上面看到的局部变量之外,在这种情况下您会推荐什么解决方法?