Xcode8,你為什么這么坑

開(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)題

NSUserDefaults問(wèn)題

坑五:插件無(wú)法使用問(wèn)題

如何優(yōu)雅的使用Xcode8或iOS10 SDK

坑六: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)行提交。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容