美文网首页曾经都是新手iOS Objective-C开发技巧
iOS-常见错误总结(持续更新)

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

作者: 逛吃逛吃萌萌哒 | 来源:发表于2019-10-18 14:51 被阅读0次

    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 <UIKit/UIKit.h>
    

    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-常见错误总结(持续更新)

        本文链接:https://www.haomeiwen.com/subject/mwiimctx.html