英语轻松读发新版了,欢迎下载、更新

NSObject 的 +load() 方法不调用了?

prepostrous 发布于 2014年03月07日 | 更新于 2014年03月08日
无人欣赏。

让大家失望了,是技术问题。。。不是XXXXX。

我的一个类 (NSObject) 的 +load() 方法 突然就不被调用了。。。求解释。。各种不理解。

补充: 是这样,我在项目里建了一个framework,其中的几个类,我都实现了他们的+(void)load方法,这个方法应该是只要类文件引入了工程就执行的,之前一直正常,但是晚上下班我手欠改了一些地方,然后这个几个类里的这个方法就不执行了。 求解释。。。

共7条回复
prepostrous 回复于 2014年03月07日

不灌水,不能活吗?

tinyfool 回复于 2014年03月07日

1楼 @prepostrous 标题词不达意,就是灌水

tinyfool 回复于 2014年03月07日

1楼 @prepostrous 内容表达不清更是灌水

prepostrous 回复于 2014年03月07日

3楼 @tinyfool 胖叔我错了。。。想当把标题党吸引大家进来。。。我反省。

prepostrous 回复于 2014年03月07日

3楼 @tinyfool 是这样,我在项目里建了一个framework,其中的几个类,我都实现了他们的+(void)load方法,这个方法应该是只要类文件引入了工程就执行的,之前一直正常,但是晚上下班我手欠改了一些地方,然后这个几个类里的这个方法就不执行了。 求解释。。。

tinyfool 回复于 2014年03月07日

5楼 @prepostrous 贴下代码吧,包括实现和你手欠的部分

prepostrous 回复于 2014年03月08日

好吧,自己解答一下。。。手欠到把项目里 Other Link Flags 的 -ObjC给去掉了,解决问题的时候竟然忘了 这个参数的作用,瞎找了半天。真跪了。。。

解释一下让后来者少走弯路: 我提过的,我自己做的framework里的类的那个方法不调用。 其实我用这个framework的时候,虽然作为子工程嵌入了项目,但是加载的时候是作为静态库加载到项目里的,跟项目本地的代码加载不同。 之所以那个load不调用是因为我本地Build Setting里的 Other Link Flags里 去掉了-ObjC。 而-ObjC的作用恰恰就是 :

“Other Linker Flags”:常用参数: -ObjC 否则的话链接器不会加载你的类 -all_load 如果你的库中有类别,不加的话分类得不到加载 -fobjc-arc 如果你连接的库使用了ARC而你的应用没有使用ARC

登录 或者 注册