開(kāi)啟吐槽模式
為了迎合Xcode8所帶來(lái)的更新,我是驚喜萬(wàn)分(奔潰至極)。絲毫不敢怠慢,生怕跟不上入坑的隊(duì)伍??
坑一:storyboard或xib部分圖片真機(jī)顯示不了
- (void)awakeFromNib {
[super awakeFromNib];
//加上這句
[self layoutIfNeeded];
}
坑二:打包之后無(wú)法在開(kāi)發(fā)者中間看到新構(gòu)建的版本(或iOS10訪問(wèn)相機(jī)、相冊(cè)等閃退)
原因是iOS10為了保護(hù)隱私,需要在 info.plist 里添加配置,包括定位、攝像頭、麥克風(fēng)、相冊(cè)、相機(jī)等等。

plist文件
訪問(wèn)權(quán)限一覽表
<!-- 相冊(cè) -->
<key>NSPhotoLibraryUsageDescription</key>
<string>App需要您的同意,才能訪問(wèn)相冊(cè)</string>
<!-- 相機(jī) -->
<key>NSCameraUsageDescription</key>
<string>App需要您的同意,才能訪問(wèn)相機(jī)</string>
<!-- 麥克風(fēng) -->
<key>NSMicrophoneUsageDescription</key>
<string>App需要您的同意,才能訪問(wèn)麥克風(fēng)</string>
<!-- 位置 -->
<key>NSLocationUsageDescription</key>
<string>App需要您的同意,才能訪問(wèn)位置</string>
<!-- 在使用期間訪問(wèn)位置 -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>App需要您的同意,才能在使用期間訪問(wèn)位置</string>
<!-- 始終訪問(wèn)位置 -->
<key>NSLocationAlwaysUsageDescription</key>
<string>App需要您的同意,才能始終訪問(wèn)位置</string>
<!-- 日歷 -->
<key>NSCalendarsUsageDescription</key>
<string>App需要您的同意,才能訪問(wèn)日歷</string>
<!-- 提醒事項(xiàng) -->
<key>NSRemindersUsageDescription</key>
<string>App需要您的同意,才能訪問(wèn)提醒事項(xiàng)</string>
<!-- 運(yùn)動(dòng)與健身 -->
<key>NSMotionUsageDescription</key>
<string>App需要您的同意,才能訪問(wèn)運(yùn)動(dòng)與健身</string>
<!-- 健康更新 -->
<key>NSHealthUpdateUsageDescription</key>
<string>App需要您的同意,才能訪問(wèn)健康更新 </string>
<!-- 健康分享 -->
<key>NSHealthShareUsageDescription</key>
<string>App需要您的同意,才能訪問(wèn)健康分享</string>
<!-- 藍(lán)牙 -->
<key>NSBluetoothPeripheralUsageDescription</key>
<string>App需要您的同意,才能訪問(wèn)藍(lán)牙</string>
<!-- 媒體資料庫(kù) -->
<key>NSAppleMusicUsageDescription</key>
<string>App需要您的同意,才能訪問(wèn)媒體資料庫(kù)</string>
如果不起作用,可以請(qǐng)求后臺(tái)權(quán)限,類似于這樣:
<key>UIBackgroundModes</key>
<array>
<!-- 在這里寫上你在后臺(tái)模式下要使用權(quán)限對(duì)應(yīng)的key -->
<string>location</string>
...
</array>
或者在Xcode里選中當(dāng)前的target,選擇 Capabilities ,找到 Background Modes ,打開(kāi)它,在里面選擇對(duì)應(yīng)權(quán)限

Background Modes
坑三:控制面板輸出不完整
#define NSLog(format, ...) printf("\n[%s] %s [第%d行] %s\n", __TIME__, __FUNCTION__, __LINE__, [[NSString stringWithFormat:format, ## __VA_ARGS__] UTF8String]);
坑四:NSUserDefaults問(wèn)題
坑五:插件無(wú)法使用問(wèn)題
坑六:Xcode8之xib
Xcode8 打開(kāi)Xib之后,Xcode7 無(wú)法打開(kāi)
當(dāng)我們使用Xcode8打開(kāi)以前的舊工程的xib文件時(shí),會(huì)彈窗提示我們選擇設(shè)備。

選擇設(shè)備
當(dāng)我們選擇之后雖然Xcode8可以查看xib文件,但是當(dāng)我們使用舊版本Xcode打開(kāi)查看xib文件是就會(huì)提示無(wú)法查看,需要使用高版本Xcode打開(kāi)。

xib報(bào)警告
想要能夠在低版本Xcode查看Xib,需要在Xcode8上面重新選擇xib打開(kāi)的版本為Xcode7.x

選擇最低版本
Xcode8 打開(kāi)Xib更新之后,約束報(bào)警告
被xib坑完之后,接下來(lái)就是崩潰的時(shí)刻,所有有涉及約束的視圖全部報(bào)警告。我們需要更新所有存在警告視圖的frame。

更新frame
坑七:應(yīng)用提交AppStore失敗
使用舊版本的Application Loader進(jìn)行提交。