美文网首页
iOS开发Xcode之Analyze静态分析(每日日志)

iOS开发Xcode之Analyze静态分析(每日日志)

作者: 徐帆_a15b | 来源:发表于2019-04-18 10:56 被阅读0次

    1.在使用GSKeyChain时遇到 GSKeyChain Potential leak of an object stored into 'keychainQuery'

    没有释放的 keychainQuery 没有释放的 keychainQuery

    问题:GSKeyChain中出现内存漏洞,需要释放对应的'keychainQuery',但是不能直接释放,需要做一下处理。

    解决方法:先将值接收下来,再释放。

    将keychainQuery接收一下,再释放 将keychainQuery接收一下,再释放

    我的代码里面需要查看keychainQuery的值,所以我加了NSLog,如果不需要可以去掉下面两行代码:

    keychainQuery = (__bridgeNSMutableDictionary*)newDic;

    NSLog(@"%@", keychainQuery);

    2.LocalizabilityIssue --User-facing text should use localized string macro

    大概意思是:面向用户的文本应使用本地化的字符串宏

    问题:代码中有用到字符串,在Analyze时候就会出现这个问题,而且会很多。

    解决方法:(1)在 Build Settings 里面找到 Missing Localizability(缺少本地化)设置为NO,就会忽略这个问题啦;

                      (2)你也可以在应用里面进行本地化 ---->> 即将文字存成plist,然后在代码中去访问。

    (1)第一种解决方法

    3.Dead store

    问题:无效数据, 就是有一些属性或者对象初始化了又没被使用。

    解决方法:去掉初始化方法,直接赋值。


    4.Logic error 逻辑错误

    Converting a pointer value of type 'NSNumber *' to a primitive boolean value; instead, either compare the pointer to nil or call -boolValue(将类型为“NSNumber*”的指针值转换为原始布尔值; 相反,要么将指针与nil进行比较,要么调用-boolValue)

    问题:使用NSNumber作为判断条件的时候,没有指定类型,编译器不知道怎么判断。

    解决办法:指定 NSNumber 对象与 nil 进行比较。

    5.Memory error 内存错误

    nil passed to a callee that requires a non-null 1st parameter(nil传递给需要非null第一个参数的被调用者)

    问题:param 可能为nil。

    解决办法:通常这种情况下,只需要添加一个非空判断,保证传入的参数不为空即可。

    6.出现Potential leak of an object stored into...

    题:在Reachability.m(用于检测当前网络状态)中出现内存泄漏’ref‘。

    解决方法查了一下发现,在ARC下,只有OC对象才能自动释放,但这里的ref并不是一个对象类型。在调用ref内存计数+1了,但是在后面用完后却没release。

    所以呢在ref用完之后,要手动释放。加一句CFRelease(ref);

    相关文章

      网友评论

          本文标题:iOS开发Xcode之Analyze静态分析(每日日志)

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