gpt4 book ai didi

objective-c - 在我可以使用我的方法本地 NSOpenSavePanelDelegate 之前,ARC 会杀死它。有解决办法吗?

转载 作者:行者123 更新时间:2023-12-03 17:02:44 27 4
gpt4 key购买 nike

我正在使用我的应用程序委托(delegate)作为我的开放面板文件过滤器。这看起来太多了,所以我将面板委托(delegate)代码拆分到一个新类中。设置 NSOpenPanel 对象时,我将它们的委托(delegate)分配给我 alloc/init 的对象。

我使用 -panel:validateURL:error:,当我按下“打开”按钮时会触发它,可能表示不允许给定文件。我遇到了崩溃,EXEC_BAD_ACCESS。当我添加 initdealloc 方法来调用 NSLog 时,两个生命周期方法都会在面板打开之前调用。

是否有一些非常规的调整可以让本地对象在面板调用和 block 响应中存活下来?或者我是否必须切换回某种全局委托(delegate)实例?

最佳答案

您是否使用带有完成处理程序 block 的异步方法之一,beginSheetModalForWindow:completionHandler:beginWithCompletionHandler:?如果是这样,只需在完成处理程序中放置对委托(delegate)对象的引用即可。例如,在一个无用的语句中调用 -self

关于objective-c - 在我可以使用我的方法本地 NSOpenSavePanelDelegate 之前,ARC 会杀死它。有解决办法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25460512/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com