在实际开发过程中,我们常常要编写自定义的framework。
framework写好后会面对着这样一个问题,我的应用程序加载的时候如何能找到我自己写的framework呢?
首先要弄清楚,应用程序加载时寻找framework的路径顺序时怎样的:
1、首先从用户自定义路径中寻找
2、从/Library/Frameworks中寻找--------第三方framework一般放这里
3、从/System/Library/Frameworks中寻找----------苹果官方framework一般放这
补充一下,如果要让应用程序只给单用户使用,第三方的framework一般放入/Users/username/Library/Frameworks
如果我们的framework要放入上面第2个路径,则需要我们打包程序时将framework放入该路径。
本主题主要讨论如何嵌入自定义framework到应用程序中,这就涉及到第一点所说,我们必须给我们的自定义framework指定安装路径。
具体操作如下:
双击target下的自定义framework,在弹出窗口中选择build>>Deployment>>Installation Directory
我们主要是要在这里指定framework的安装路径,如果要让应用程序能在自己的包内找到该framework,则该framework的Installation Directory通常配置如下:
@executable_path/../Frameworks
在我们的应用程序中,我们可以通过选中添加目录,按住Ctrl键,选择添加Existing framework,找到我们自定义framework添加进来后,记得拖该framework到targets的Link Binary With Libraries文件夹下,保证编译后链接成功。
当做完这个工作后运行我们的应用程序的时候,会出现Image not found的错误,这个原因是应用程序没有找到我们添加的framework。
其原因就是我们没有将自定义framework放入系统标准存放framework的地方,也没有将我们的自定义framework放入应用程序包中。
具体解决方法就是:
选中Targets下的应用程序,右键Add>>New Build Phase>>New Copy Files Build Phase .
弹出对话框中默认Destination是Resources,我们需要改成Framewroks,对应@executable_path/../Frameworks,按照我们这里的做法Path可以不填,因为我们没有指定字路径。
大功告成!恭喜你!