1. Missing @end
这种是很基础的错误,但是不懂的人往往不知道到底哪儿出了问题。
这种问题就是,类中某个方法少了个大括号‘}’
2. Unknown type name 'xxxx'
在工具类中出现这类问题比较多,一般出现的就是Unknown type name 'NSString'
等这类基础数据类型,解决办法很统一,在头文件上加上
#import <UIKit/UIKit.h>
3. JSONKit Direct access to objective-c's isa is deprecated in favor of object_setClass() and object_getClass()
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.
这个问题的答案一搜一大堆。
在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设备调试回话中读取,这样就很慢了。