错误集_ nib文件加载,Unknown class <XXClass> in Interface Builder file.,Undefined symbolsfor architecture

1.   nib文件加载... 1

2.   Unknownclass  <XXClass>  in Interface Builder file.1

3.   Undefinedsymbols for architecture i386:1

4.   对象的isa属性为0x01

 

1.       nib文件加载

类似initWithNibName这样的方法, nib文件不能带有扩展名

2.       Unknown class <XXClass>  in InterfaceBuilder file.

现象:

link报错, Unknown class  <XXClass>  in Interface Builder file., 而XXClass确实存在而且没有任何问题

原因:

参见:

http://stackoverflow.com/questions/1725881/unknown-class-myclass-in-interface-builder-file-error-at-runtime

       因为XXClass只在nib文件中被引用, 其它地方没有被引用到, 因此被link优化掉, 运行时nib文件试图加载XXClass时, 产生运行时错误

解决方案:

A.      link flag中指定 -all_load –ObjC
B.       在某处引用XXClass一次, 例如 [XXClassclass]
C.       在project中删除XXClass的文件, 并重新add进去

3.       Undefined symbols for architecture i386:

现象:

link报错,

Undefined symbols for architecture i386:

 "_AudioServicesCreateSystemSoundID", refereced from:

原因:

       没有将对应的framework加入工程

解决方案:

       在工程选项的 Linked Frameworks and Libraries中, 加入AudioToolbox.framework

4.       对象的isa属性为0x0

       对象id不为nil,但对象的isa属性为0x0,说明对象已经释放,注意检查对象计数。

       比如,将self.obj=arg 写为 obj=arg,局部变量arg释放后,obj就不存在了(因为单纯的赋值没有对arg进行retain或者copy),指针无效。

       将property和变量实际名字分别命名可以避免这类错误,例如将obj的变量命名为_obj,而属性名为obj,那么如果写出obj=arg,可以很容易的发觉。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值