我正在使用第三方框架,由于未定义的选择器而导致崩溃。供应商告诉我需要添加all_load作为链接器标志。看来这个编译的库是将方法注入到UIViewController中来处理某些未知的细节。我不愿意使用all_load链接器标志,因为它会加载所有内容,这会使我的应用程序二进制文件膨胀,而不仅仅是来自此库的所有内容,而是每个库。我正在尽我所能保持我的应用程序二进制文件的大小,所以我要求供应商消除这个要求以及在@protocols中声明的属性,这些属性要求我在我的实现中合成这些属性。这个库通过泄漏如此多的关键细节来打破封装。我宁愿让代表和块做任何需要做的事情,但是这个库正在使用我认为有害的技术并且实际上导致应用程序崩溃。
不要求all_load作为链接器标志或者我太挑剔了吗?允许第三方库使用类别将方法注入到UIViewController等对象中是不是很危险,特别是如果可能存在名称冲突?
答案 0 :(得分:1)
我也遇到了同样的问题。我修改了第三方库的源代码,删除了类别。 使用-ObjC链接器标志可能会导致名称冲突,特别是如果我们创建使用其他第三方的库。