ios中关于-Objc、-all_load、-force_load的区别简介
-Objc: 作用就是将静态库中所有和对象相关的文件都加载出来。可以比如出现错误:"Selector not recognized"的时候使用
-all_load: 作用就是加载静态库中所有的文件
-force_load:作用就是加载静态库中指定的具体文件
在打包framework静态库的时候,其中包含了一些分类,结果调用的使用一直找不到分类的方法,报错如下:
-[_NSInlineData xxx:]: unrecognized selector sent to instance 0x280280380
2020-03-13 16:38:57.036858+0800 OmniLockDemo[2800:516889] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_NSInlineData xxx:]: unrecognized selector sent to instance 0x280280380'
*** First throw call stack:
(0x1ab9f3180 0x1aabcb9f8 0x1ab90f9bc 0x1ab9f89c8 0x1ab9fa65c 0x100847fbc 0x1008480cc 0x10084a448 0x100849bd0 0x1b1517af8 0x1b1517bb0 0x1b151373c 0x1b150e050 0x1b151c438 0x1009336f4 0x100934c78 0x10093cbf4 0x10093d8ec 0x10094256c 0x1ab984b20 0x1ab97fa58 0x1ab97efb4 0x1adb8079c 0x1d81e0c38 0x100833930 0x1ab4428e0)
libc++abi.dylib: terminating with uncaught exception of type NSException
通过查找资料,就是因为framework无法自动加载分类的方法,需要在"Build Setting -> Linking -> Other Linker Flags "加入 -all_load 或者 -force_load 即可。
不喜勿喷,欢迎学习交流!!!