macOS-自定义框架中的对象抛出无法识别的选择器错误

时间:2019-03-01 19:05:19

标签: objective-c xcode macos cocoa

我是第一次创建自定义框架,我打算在插件中使用它。由于它不是应用程序,因此我不能简单地将自定义框架拖到应用程序目标的“嵌入式二进制文件”部分中。从不同的教程中一起刮掉,我执行了以下步骤:

  1. 在插件目标的构建阶段中创建了其他复制文件条目,将我的框架添加到产品的./Frameworks路径中。
  2. 在目标的“带库的二进制链接”部分中添加了框架
  3. 在“构建设置”的目标框架搜索路径中添加条目

从那里,我插件的XCode项目能够成功引用我在自定义框架中定义的类,并在其各自的宿主应用程序中运行它时实例化对象。但是,实例化框架中定义的一个子类NSViewControllers时,当我尝试调用其方法之一时,它很快崩溃了。在控制台中,原因是unrecognized selector sent to instance <memory_address> abort() called,其中所涉及的选择器是我调用的setter方法。

我以前在我的插件项目中使用和定义过子类化的NSViewController,而不仅仅是在框架中。我不确定我的插件项目的框架设置是否是问题,还是某些笔尖加载奇怪。我观察到的另一个怪异之处是,随机情况下我的NSViewController的某些属性丢失了,如XCode的调试器中未列出的那样。发生这种情况时,这就是我的插件崩溃的地方,并告诉我有关无法识别的选择器问题。谁能在这里阐明一些想法?

先谢谢您。

1 个答案:

答案 0 :(得分:0)

内存地址可能指向其他类型的对象或释放的内存块。可能是由于某个地方的过度释放/保留不足。您使用过NSZombies吗?地址消毒器?我相信这实际上是无关紧要的。