問題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
暫時沒查到原因以及解決方法...