2. Unknownclass <XXClass> in Interface Builder file.1
3. Undefinedsymbols for architecture i386:1
1. nib文件加载
类似initWithNibName这样的方法, nib文件不能带有扩展名
2. Unknown class <XXClass> in InterfaceBuilder file.
现象:
link报错, Unknown class <XXClass> in Interface Builder file., 而XXClass确实存在而且没有任何问题
原因:
参见:
因为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,可以很容易的发觉。