iOS-常见错误总结(持续更新)

1. Missing @end

屏幕快照 2016-08-24 18.07.01.png

这种是很基础的错误,但是不懂的人往往不知道到底哪儿出了问题。
这种问题就是,类中某个方法少了个大括号‘}’

2. Unknown type name 'xxxx'

屏幕快照 2016-08-24 18.11.18.png

在工具类中出现这类问题比较多,一般出现的就是Unknown type name 'NSString'等这类基础数据类型,解决办法很统一,在头文件上加上

#import 

3. JSONKit Direct access to objective-c's isa is deprecated in favor of object_setClass() and object_getClass()

屏幕快照 2016-08-25 12.02.12.png

array->isa 这是个弃用的函数,这里不兼容。
解决方法:
1.在target的Build Settings里面,搜索 Direct usage of 'isa' 将 YES(treat as error) 改为NO
2.更改代码
array->isa=_JKArrayClass替换为 object_setClass(array,_JKArrayClass)
dictionary->isa=_JKDictionaryClass替换为 object_setClass(dictionary,_JKDictionaryClass)

4. using an empty LLDB target which can cause slow memory reads from remote devices.

屏幕快照 2016-09-01 16.38.56.png

这个问题的答案一搜一大堆。

屏幕快照 2016-09-01 16.46.18.png

在Valid Architectures 后面支持的加上arm64就行了。
那么问题来了
> #为什么为什么为什么呢?
Build Active Architecture Only这个属性,设置为yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本。而设置为no时,会编译所有的版本。编译出的版本是向下兼容的,比如你设置此值为yes,用iphone4编译出来的是armv7版本的,iphone5也可以运行,但是armv6的设备就不能运行。
而上面那个警告⚠️ ,是针对设备调试而出现的。大概原因呢,是Xcode复制设备的library和framework到Mac上,然后保存在一个LLDB目录。开始调试时,LLDB看到基础框架被你的APP用了,它就从MAC上读出副本。不然的话,它就要从iOS设备调试回话中读取,这样就很慢了。

你可能感兴趣的:(iOS-常见错误总结(持续更新))