前段時間升級了Xcode8,整體來說對OC的影響不大,但是還是跳一個坑,消耗了不少時間。這里總結下遇到的適配問題。
1、權限問題
Xcode8 訪問相機、相冊等需要權限的地方崩潰
解決辦法:
在使用私有權限時,添加Info.plist文件中添加配置:


下面是各種key,需要哪個添哪個
NSBluetoothPeripheralUsageDescription
NSCalendarsUsageDescription
NSCameraUsageDescription
NSContactsUsageDescription
NSHealthShareUsageDescription
NSHealthUpdateUsageDescription
NSHomeKitUsageDescription
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
NSMicrophoneUsageDescription
NSMotionUsageDescription
NSPhotoLibraryUsageDescription
NSRemindersUsageDescription
NSSiriUsageDescription
NSSpeechRecognitionUsageDescription
NSVideoSubscriberAccountUsageDescription
NSVoIPUsageDescription
2、回調跳轉問題(openUrl) (PBItemCollectionServicer connection disconnected 友盟第三方登錄時 授權后不回調的原因)
iOS10 openUrl需要在下面方法中進行回調配置:
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options NS_AVAILABLE_IOS(9_0); // no equiv. notification. return NO if the application can't open for some reason
3、應用程序語言英文問題
解決辦法:
去掉Use Base Internationalization的勾選

4、關於推送問題(我用的是極光推送,iOS10相關配置官方文檔說的很明白,自行修改)
打開Push Notifications 開關

5、快捷注釋問題
升級后,使用command+/ 快捷注釋,我出現了下不能使用的問題,重啟后就能好了(Xcode8.1)(使用中偶爾也會出現注釋快捷鍵失效的情況,重啟xcode或重啟機器O__O")。
還是敲下網上的解決辦法:
終端命令行輸入:sudo /usr/libexec/xpccachectl
之后必須重啟電腦
6、廢棄的方法
如果還需要兼容可以定義下版本的宏,然后根據版本來處理方法的使用,替換被廢棄方法的方法一般會通過warning 給出,點進去蘋果文檔查看即可
舉個栗子:
#define IOS_10 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0 ? YES : NO)
