问题1
刚升级完Xcode8之后运行应用在控制台会出现很多如下的代码:
subsystem:com.apple.UIKit,category:HIDEventFiltered, enable_level:0, persist_level:0, default_ttl:0, info_ttl:0, debug_ttl:0, generate_symptoms:0, enable_oversize:1, privacy_setting: 2, enable_private_data:0
虽然不知道这些代码是什么意思,但是看着会觉得很不舒服,于是上网找了一下解决的方法.
下面是消除这些警告的方法:
按步骤Product->Scheme->Edit Scheme->Run->Arguments->Environment Variables,在Environment Variables下添加OS_ACTIVITY_MODE,且将value值设置为disable.
重新运行Xcode,警告就没有了.
问题2 iOS10真机调试NSLog无效
如果你在遇到上面问题1的时候就行了如下的修改
并且NSLog宏定义是这样的话:#define NSLog(format, ...) NSLog(format, ## __VA_ARGS__)
,那么你在进行真机调试的时候应该会遇到nslog不输出的这个问题.
解决方法:
所以需要定义成另一个函数来输出,例如printf()
这里我使用了别人的一个方法
#ifdef DEBUG
#define NSLog(format, ...) printf("\n[%s] %s [第%d行] %s\n", __TIME__, __FUNCTION__, __LINE__, [[NSString stringWithFormat:format, ## __VA_ARGS__] UTF8String]);
#else
#define NSLog(format, ...)
#endif
问题3 One of the two will be used. Which one is undefined.
在控制台会有如下的代码
objc[2886]:Class PLBuildVersion is implemented in both /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/AssetsLibraryServices.framework/AssetsLibraryServices(0x119bb1910) and /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/PrivateFrameworks/PhotoLibraryServices.framework/PhotoLibraryServices (0x1199db210). One of the two will be used. Which one is undefined.
查找资料发现原因:objc runtime 对所用app使用同一个命名空间(flat namespace),运行机制如下:
- 首先二进制映像被加载,检查程序依赖关系
- 每一个二进制映像被加载的同时,程序的objc classes在objc runtime命名空间中注册
- 如果具有相同名称的类被再次加载,objc runtime的行为是不可预知的。一种可能的情况是任意一个程序的该类会被加载(这应该也是默认动作)
解决办法:暂时没查到...
问题4 Xcode 8 Command + / 不能注释
解决方法:
在终端输入 sudo /usr/libexec/xpccachectl
然后必须要重启下电脑
问题5 -canOpenURL: failed for URL
暂时没查到原因以及解决方法...