1、Format string is not a string literal (potentially insecure)
Xcode 警告信息处理:Format string is not a string literal (potentially insecure)
解决:NSString 继承于 NSObject;
NSObject *obj = @"A string or other object.";
NSLog(@"%@",obj);
没有必要再调用 NSString的 stringWithFormat: 方法
2、工程一直提示ld: warning: directory not found for option:xxxxxx
解决:
这种提示,通常是由于添加了第三方SDK,但是后来改了个名字或者去掉了SDK,但是在Build Settings----->Search Paths---->Library Search Paths 中仍然没有删除掉对应的路径,所以需要到Library Search Paths和Framework Search Paths中删除掉警告的路径
3、unexpected file type 'wrapper.plug-in' in frameworks & libraries build phase
在General->Linked Frameworks and Libraries中,是因为在framework and library中添加了其他不是lib的文件,如bundle,删除即可。
4、directory not found for option -L..path
在Build Settings--->>Framework Search Path,Library Search Path中删除找不到的路径。
5、.pcm:no such file for requested architechture
将Debug Information Format的Debug改成DWARF
6、no rule to process file。。。
在compile source里删掉多余的文件.
7、Pointer is missing a nullability type specifier (__nonnull or __nullable)
nullability annotations。这一新特性的核心是两个新的类型注释:__nullable和__nonnull。从字面上我们可以猜到,__nullable表示对象可以是NULL或nil,而__nonnull表示对象不应该为空。当我们不遵循这一规则时,编译器就会给出警告。
8、如何解决使用ARC后出现的PerformSelector may cause a leak because its selector is unknown
原因:在ARC模式下,运行时需要知道如何处理你正在调用的方法的返回值。这个返回值可以是任意值,如void,int,char,NSString,id等等。ARC通过头文件的函数定义来得到这些信息。所以平时我们用到的静态选择器就不会出现这个警告。而使用[someController performSelector: NSSelectorFromString(@"someMethod")];运行时ARC并不知道该方法的返回值是什么,以及该如何处理?该忽略?还是标记为ns_returns_retained还是ns_returns_autoreleased?
解决1、使用宏:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[someController performSelector: NSSelectorFromString(@"someMethod")]
#pragma clang diagnostic pop
解决2、使用afterDelay
[self performSelector:aSelector withObject:nil afterDelay:0.0];
持续更新中。。。
网友评论