Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将自定义iOS框架导入到两个不同的Xcode项目中不';我得不到同样的结果_Ios_Swift_Xcode_Frameworks - Fatal编程技术网

将自定义iOS框架导入到两个不同的Xcode项目中不';我得不到同样的结果

将自定义iOS框架导入到两个不同的Xcode项目中不';我得不到同样的结果,ios,swift,xcode,frameworks,Ios,Swift,Xcode,Frameworks,在过去的两天里,我遇到了一些问题,但我在网上找不到任何能帮助我解决这些问题的东西 问题是: 我有自己的定制iOS框架 我有两个不同的Xcode项目使用这个定制框架 在第一个项目中,没有问题,一切都很完美 在第二个项目中,由于未捕获的异常“NSInvalidArgumentException”,我收到一个终止的应用程序,原因:“-[**:]:当我调用在第一个项目中也调用的方法时,无法识别的选择器发送到实例0x101b02f90”,该方法在第一个项目中运行良好 两个项目使用相同的自定义iOS框架版

在过去的两天里,我遇到了一些问题,但我在网上找不到任何能帮助我解决这些问题的东西

问题是:

  • 我有自己的定制iOS框架
  • 我有两个不同的Xcode项目使用这个定制框架
  • 在第一个项目中,没有问题,一切都很完美
  • 在第二个项目中,由于未捕获的异常“NSInvalidArgumentException”,我收到一个终止的应用程序,原因:“-[**:]:当我调用在第一个项目中也调用的方法时,无法识别的选择器发送到实例0x101b02f90”,该方法在第一个项目中运行良好
  • 两个项目使用相同的自定义iOS框架版本和内部版本
在过去的两天里,我尝试了以下几点:

  • 清理项目>清理生成项目>重建项目-不工作
  • 重建框架并将其添加到两个项目中——问题仍然存在
一件非常奇怪的事情是,我在两个项目中都打印了框架中可用的方法,在第一个项目中,我有130可用的方法,在第二个项目中,我只有72可用的方法

有人知道发生了什么事吗

问候,


杰里米

我终于找到了问题的根源。我需要在第二个项目的构建设置中的“其他链接器标志”中添加-ObjC标志


我不明白为什么没有这个标志,框架只有72个方法,有了这些标志,所有方法都可用。有人有主意了吗?

sry,我刚刚看到你的第一个问题/答案

需要这样做的主要原因是静态库中的类别或其他动态元素。Objective C的类别与Swift中的扩展大致相同,因此您可以使用其他方法扩展类/对象

在Objective C中,您可以创建一个静态库来链接到您的项目中。但是,如果没有此标志(-ObjC general of-force_load for a specific library),类别的符号不会加载到库之外。我猜最初的动机是对内部内容使用类别,因此默认情况下不加载它们。这也使得二进制文件稍微小一些。然而,许多库实际上添加了它们想要公开的类别(=扩展名),所以通常需要一个或多个标志


希望这有点帮助。

是objc吗?还是斯威夫特?在objc上,您可能需要在加载它的项目上添加-load_all或-force_load,以便获得符号…?应用程序在swift中,框架在objc中。我应该在哪里添加这些标志?顺便说一句:如果我上面的答案对你有帮助,也许你可以接受它作为答案?