Other Linker Flags中添加-ObjC和-all_load 什么意思
来源:互联网 发布:突破公司网络限制 编辑:程序博客网 时间:2024/05/02 01:50
我之前在做项目的时候遇到一个问题,解决办法是 在Other Linker Flags中添加-ObjC和-all_load。
当时不知道是什么意思,加上这句,问题就解决了,现在对这个有点明白了 。
简单的说:这两个参数是 是关闭LingFlag 优化 选项
这个涉及到 静态库方面的知识。
什么是静态库?什么是动态库
详细介绍 请移步到 静态库和动态库的区别
下面是介绍
Unknown class MyClass in Interface Builder file.
由于静态框架采用静态链接,linker会剔除所有它认为无用的代码。不幸的是,linker不会检查xib文件,因此如果类是在xib中引用,而没有在O-C代码中引用,linker将从最终的可执行文件中删除类。这是linker的问题,不是框架的问题(当你编译一个静态库时也会发生这个问题)。苹果内置框架不会发生这个问题,因为他们是运行时动态加载的,存在于iOS设备固件中的动态库是不可能被删除的。
有两个解决的办法:
让框架的最终用户关闭linker的优化选项,通过在他们的项目的Other Linker Flags中添加-ObjC和-all_load。
在框架的另一个类中加一个该类的代码引用。例如,假设你有个MyTextField类,被linker剔除了。假设你还有一个MyViewController,它在xib中使用了MyTextField,MyViewController并没有被剔除。你应该这样做:
在MyTextField中:
+ (void)forceLinkerLoad_ {}
在MyViewController中:
+(void) initialize { [MyTextField forceLinkerLoad_]; }
他们仍然需要添加-ObjC到linker设置,但不需要强制all_load了。
第2种方法需要你多做一点工作,但却让最终用户避免在使用你的框架时关闭linker优化(关闭linker优化会导致object文件膨胀)。
- Other Linker Flags中添加-ObjC和-all_load 什么意思
- Other Linker Flags 中加入-ObjC或者-all_load 作用
- Other Linker Flags参数-ObjC、-all_load和-force_load讲解
- Other Linker Flags参数-ObjC、-all_load和-force_load讲解
- Other Linker Flags参数 -ObjC、-all_load和-force_load
- other linker flags objc配置
- [Error]集成第三方API时Other Linker Flags项添加-all_load引起的冲突
- 关于 Other Linker Flags 编译选项意思
- Xcode中other linker flags的作用
- Xcode中other linker flags的作用
- Xcode中other linker flags的作用
- IOS学习 Other linker flags和OTHER_LDFLAGS
- <iOS>other linker flags
- <iOS>other linker flags
- other linker flags
- <iOS>other linker flags
- Other linker flags
- <iOS>other linker flags
- Halcon PDF文档(hdevelop_users_guide)学习总结之七——关于Halcon语法
- Java性能调优
- linux自学笔记(对day1的补充)
- MYSQL5.X版本安装不成功的处理方法
- weblogic上以War包部署的项目中 request.getRealPath()或者getServletContext.getRealPath()为null的原因及解决方法
- Other Linker Flags中添加-ObjC和-all_load 什么意思
- 第五章 树和二叉树
- 使用opencv创建一张纯黑色的图片与其他图片进行合成
- gtest中的事件机制
- 常用代码......................Messagebox..................
- AngularJS
- Selain itu Tapi apa
- 中断处理“下半部”机制
- 如何科学增高