好的,情况有点复杂,但对于比我更熟悉 Cocoa 内存管理的人来说,问题本身的性质应该很简单。
一些细节: - 从我的主应用程序中,我正在加载一个“可加载”包(由一个 组成NSWindowController
) - 两个项目(主应用程序和“插件”)都支持 ARC
在我的插件代码中,我有一个自定义初始化方法:
- (id)initWithAPI:(id)api
{
pluginWindowController* newPluginWindowController = [super initWithWindowNibName:@"PluginWindow"];
if (newPluginWindowController)
{
[newPluginWindowController setAPI:api];
}
return newPluginWindowController;
}
这API
是声明的方式:
@property (unsafe_unretained) id API;
现在,这是问题所在:
- 我正在初始化
initWithAPI:
并API
正在设置。 - 当我测试它
API
的价值时,- (void)windowDidLoad:
它仍然显示得很好。 - 但是:当尝试从另一种方法中执行相同的操作时(实际上是通过在我的插件窗口中单击按钮触发的 IBAction)...尝试获取
[self API]
触发EXC_BAD_ACCESS
错误。
我究竟做错了什么?有任何想法吗?