iOS12適配及兼容問(wèn)題解決

推薦閱讀:iOS開(kāi)發(fā)——BAT面試題合集(持續(xù)更新中)

1、Multiple commands produce 'xxx/Info.plist'

2、 iOS 12 系統(tǒng) WiFi 獲取 SSID (wifi名稱)和 BSSID (mac地址)失敗

3、 Xcode 10#import 的時(shí)候閃退或?qū)腩^文件不提示

4、[ Xcode 10 ] library not found for -lstdc++.6.0.9

5、[ iOS 12.1 ] 二級(jí)頁(yè)面返回時(shí) tabbar 圖標(biāo)和文字位置偏移

6、 webView 播放視頻返回后狀態(tài)欄消失

7狮鸭、[ iPhone X ] StatusBar 內(nèi)部結(jié)構(gòu)改變導(dǎo)致 crash

文章來(lái)自于我的簡(jiǎn)書(shū):原文在這里

  • 1、Multiple commands produce 'xxx/Info.plist'

    升級(jí) Xcode 10 之后多搀,編譯之前的項(xiàng)目歧蕉,發(fā)生編譯錯(cuò)誤: Multiple commands produce 'xxx/Info.plist' ,項(xiàng)目中存在重復(fù)命名的info.plist文件康铭。

    解決方案:

    (I)標(biāo)準(zhǔn)方案:刪除所有重復(fù)命名的文件惯退。

    (II)臨時(shí)方案:

    xcworkspace 項(xiàng)目:Xcode菜單欄 File -> Workspace Settings -> Build System ->Legacy Build System

    xcodeprj 項(xiàng)目:Xcode菜單欄 File -> Project Settings -> Build System -> Legacy Build System 从藤。

  • 2催跪、 iOS 12 系統(tǒng) WiFi 獲取 SSID (wifi名稱)和 BSSID (mac地址)失敗

    iOS 12 系統(tǒng)之后,蘋(píng)果提升了獲取 WiFi 名稱和 mac 地址的權(quán)限控制夷野,要獲取這些信息懊蒸,需要手動(dòng)為應(yīng)用打開(kāi)獲取WiFi信息的權(quán)限。具體操作可以參考《 獲取iOS設(shè)備WiFi名字和mac地址+iOS12系統(tǒng)獲取失敗解決 》悯搔。

    解決方案:

    在開(kāi)發(fā)者賬號(hào)中骑丸,勾選項(xiàng)目的 App IDAccess WiFi Infomation 選項(xiàng);

    在Xcode的 Capabilities 中妒貌,勾選項(xiàng)目的 Access WiFi Infomation 選項(xiàng)通危。

  • 3、 Xcode 10#import 的時(shí)候閃退或?qū)腩^文件不提示

    Xcode 10 中出現(xiàn)輸入 #import 引入文件/類庫(kù)頭文件的時(shí)候 Xcode 閃退灌曙【盏或者輸入 #import 導(dǎo)入頭文件時(shí)不提示。

    解決方案:

    xcworkspace 項(xiàng)目:Xcode菜單欄 File -> Workspace Settings -> Build System ->Legacy Build System 平匈;

    xcodeprj 項(xiàng)目:Xcode菜單欄 File -> Project Settings -> Build System -> Legacy Build System 框沟。

  • 4藏古、[ Xcode 10 ] library not found for -lstdc++.6.0.9

    蘋(píng)果在 Xcode 10iOS 12 中移除了 libstdc++ 庫(kù)增炭,由 libc++ 這個(gè)庫(kù)取而代之,蘋(píng)果的解釋是libstdc++已經(jīng)標(biāo)記為廢棄有5年了拧晕,建議大家使用經(jīng)過(guò)了llvm優(yōu)化過(guò)并且全面支持C++11的libc++庫(kù)隙姿。所以Xcode 10中l(wèi)ibstdc++相關(guān)的3個(gè)庫(kù)( libstdc++libstdc++.6 厂捞、libstdc++6.0.9 )都已被移除输玷,不可再使用队丝。

    解決方案:

    (I)調(diào)整代碼為依賴 libc++

    更改c++庫(kù)文件, TARGETS -> Build Phases -> Link Binary With Libraries 欲鹏,刪除stdc++.6.0.9 依賴机久,添加 libc++.tdbTARGETS -> Build Settings -> Other Linker Flags 赔嚎,刪除 -l "stdc++.6.0.9" 膘盖。修改代碼為依賴 libc++

    (II)從 Xcode 9 中導(dǎo)入 libstdc++Xcode 10 中尤误。

    找到 Xcode 9 中的 libstdc++ 庫(kù)文件copy到 Xcode 10lib 文件夾下侠畔。參考路徑方法如下,分別是真機(jī)和模擬器的運(yùn)行庫(kù)文件導(dǎo)入:

    <pre class="prettyprint hljs awk" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; word-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto;">cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/

    cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/
    復(fù)制代碼</pre>

  • 5损晤、[ iOS 12.1 ] 二級(jí)頁(yè)面返回時(shí) tabbar 圖標(biāo)和文字位置偏移

    iOS 12.1 系統(tǒng)中 UINavigationController+UITabBarController 软棺, UITabBar 為磨砂,并且 pushViewController 的時(shí)候使用 hidesBottomBarWhenPushed = YES 尤勋,則在使用 popViewController:animated 返回喘落,或者手勢(shì)返回的時(shí)候,就會(huì)出現(xiàn) tabbar 布局錯(cuò)亂最冰,圖標(biāo)和文字位置偏移的問(wèn)題揖盘。出現(xiàn)這個(gè)問(wèn)題的直接原因是 UITabBar 為磨砂的情況下,返回頁(yè)面時(shí) tabBar 內(nèi)的按鈕 UITabBarButton 被設(shè)置了錯(cuò)誤的 frame 锌奴, frame.size 變?yōu)榱?(0, 0) 兽狭。

    最簡(jiǎn)單的解決方案是:

    <pre class="hljs json" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 0.75em; font-size: 14px; line-height: 1.5em; word-break: break-all; word-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto;">[[UITabBar appearance].translucent = NO;
    復(fù)制代碼</pre>

  • 6、 webView 播放視頻返回后狀態(tài)欄消失

    視頻播放完成主 window 成為 KeyWindow 的時(shí)候仍隱藏著 UIStatusBar 鹿蜀。

    解決方案:

    <pre class="prettyprint hljs less" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; word-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto;">- (void)videoPlayerFinishedToShowStatusBar
    {
    if (@available(iOS 12.0, *)) {
    [[NSNotificationCenter defaultCenter] addObserverForName:UIWindowDidBecomeKeyNotification
    object:self.window
    queue:[NSOperationQueue mainQueue]
    usingBlock:^(NSNotification * _Nonnull note) {
    [[UIApplication sharedApplication] setStatusBarHidden:NO
    withAnimation:UIStatusBarAnimationNone];
    }];
    }
    }
    復(fù)制代碼</pre>

  • 7箕慧、[ iPhone X ] StatusBar 內(nèi)部結(jié)構(gòu)改變導(dǎo)致 crash

    蘋(píng)果17年底推出全面屏劉海手機(jī)之后,應(yīng)用頂部 StatusBar 內(nèi)部結(jié)構(gòu)發(fā)生改變茴恰,如果項(xiàng)目中使用狀態(tài)欄中圖標(biāo)獲取手機(jī)狀態(tài)信息(如:獲取當(dāng)前網(wǎng)絡(luò)的狀態(tài))颠焦,則在 iPhone X (Xs,Xs Max,XR) 手機(jī)上會(huì)發(fā)生崩潰。

    注意:發(fā)生崩潰的機(jī)型是有劉海的手機(jī) iPhone X (Xs,Xs Max,XR) 往枣。 例如獲取當(dāng)前網(wǎng)絡(luò)狀態(tài)伐庭。

    <pre class="prettyprint hljs vbnet" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; word-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto;">crash log:
    *** Terminating app due to uncaught exception 'NSUnknownKeyException',
    reason: '[<UIStatusBar_Modern 0x7ffbf2c05670> valueForUndefinedKey:]:
    this class is not key value coding-compliant for the key foregroundView.'
    復(fù)制代碼</pre>

    導(dǎo)致上面崩潰的代碼如下:

    <pre class="prettyprint hljs objectivec" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; word-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto;">- (NSString *)getiPhoneNetWorkStates
    {
    UIApplication *app = [UIApplication sharedApplication];
    NSString *states = @"UnKnow";
    NSArray *subViews = [[[app valueForKeyPath:@"statusBar"] valueForKeyPath:@"foregroundView"] subviews];
    for (id child in subViews) {
    if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
    int networkType = [[child valueForKeyPath:@"dataNetworkType"] intValue];
    NSString *networkStatus = @"UnKnow";
    switch (networkType) {
    case 0:
    networkStatus = @"UnKnow";
    break;
    case 1:
    networkStatus = @"2G";
    break;
    case 2:
    networkStatus = @"3G";
    break;
    case 3:
    networkStatus = @"4G";
    break;
    case 4:
    networkStatus = @"LTE";
    break;
    case 5:
    networkStatus = @"WiFi";
    break;
    default:
    break;
    }
    }
    }
    return states;
    }
    復(fù)制代碼</pre>

    導(dǎo)致崩潰的原因是: StatusBar 內(nèi)部結(jié)構(gòu)發(fā)生變化,在上面代碼第5行獲取 foregroundView 的時(shí)候分冈, foregroundView 不存在圾另。

    解決方案:

    iPhone X上通過(guò)StatusBar只能獲取到網(wǎng)絡(luò)是WiFi還是蜂窩網(wǎng),當(dāng)網(wǎng)絡(luò)為蜂窩網(wǎng)的時(shí)候雕沉,無(wú)法獲取到具體的網(wǎng)絡(luò)狀態(tài)集乔。要獲取更具體的網(wǎng)絡(luò)狀況,建議使用官方提供的Reachability坡椒。

    <pre class="prettyprint hljs objectivec" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; word-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto;">- (NSString *)getiPhoneNetWorkStates
    {
    UIApplication *app = [UIApplication sharedApplication];
    NSString *states = @"UnKnow";
    id statusBar = [app valueForKeyPath:@"statusBar"];
    if ([self checkDeviceIsiPhoneX]) {
    if ([statusBar isKindOfClass:NSClassFromString(@"UIStatusBar_Modern")]) {
    id curData = [statusBar valueForKeyPath:@"statusBar.currentData"];
    BOOL wifiEnable = [[curData valueForKeyPath:@"_wifiEntry.isEnabled"] boolValue];
    BOOL cellEnable = [[curData valueForKeyPath:@"_cellularEntry.isEnabled"] boolValue];
    // iPhone X上通過(guò)StatusBar只能獲取到網(wǎng)絡(luò)是WiFi還是蜂窩網(wǎng)
    // 當(dāng)網(wǎng)絡(luò)為蜂窩網(wǎng)的時(shí)候扰路,無(wú)法獲取到具體的網(wǎng)絡(luò)狀態(tài)
    if (wifiEnable) {
    states = @"WiFi";
    } else if (cellEnable) {
    states = @"Cellular";
    }
    }
    } else {
    NSArray *subViews = [[statusBar valueForKeyPath:@"foregroundView"] subviews];
    for (id child in subViews) {
    if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
    int networkType = [[child valueForKeyPath:@"dataNetworkType"] intValue];
    switch (networkType) {
    case 0:
    states = @"UnKnow";
    break;
    case 1:
    states = @"2G";
    break;
    case 2:
    states = @"3G";
    break;
    case 3:
    states = @"4G";
    break;
    case 4:
    states = @"LTE";
    break;
    case 5:
    states = @"WiFi";
    break;
    default:
    break;
    }
    }
    }
    }
    return states;
    }
    復(fù)制代碼</pre>

喜歡的話可以點(diǎn)個(gè)贊+1:或關(guān)注多多支持哦 小編會(huì)經(jīng)常給小伙伴們更新關(guān)于IOS當(dāng)下熱點(diǎn)尤溜。

另外小編給大家推薦一個(gè)iOS技術(shù)交流群:638302184!群內(nèi)提供數(shù)據(jù)結(jié)構(gòu)與算法汗唱、底層進(jìn)階宫莱、swift、逆向哩罪、整合面試題等免費(fèi)資料
附上一份收集的各大廠面試題(附答案) ! 群文件直接獲取

各大廠面試題

文章來(lái)源網(wǎng)絡(luò) 如有侵權(quán)請(qǐng)聯(lián)系小編刪除

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梢睛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子识椰,更是在濱河造成了極大的恐慌绝葡,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腹鹉,死亡現(xiàn)場(chǎng)離奇詭異藏畅,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)功咒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)愉阎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人力奋,你說(shuō)我怎么就攤上這事榜旦。” “怎么了景殷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵溅呢,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我猿挚,道長(zhǎng)咐旧,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任绩蜻,我火速辦了婚禮铣墨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘办绝。我一直安慰自己伊约,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布孕蝉。 她就那樣靜靜地躺著屡律,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昔驱。 梳的紋絲不亂的頭發(fā)上疹尾,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天上忍,我揣著相機(jī)與錄音骤肛,去河邊找鬼纳本。 笑死,一個(gè)胖子當(dāng)著我的面吹牛腋颠,可吹牛的內(nèi)容都是我干的繁成。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼淑玫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼巾腕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起絮蒿,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤尊搬,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后土涝,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體佛寿,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年但壮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冀泻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜡饵,死狀恐怖弹渔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情溯祸,我是刑警寧澤肢专,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站焦辅,受9級(jí)特大地震影響鸟召,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜氨鹏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一欧募、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧仆抵,春花似錦跟继、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至莺匠,卻和暖如春金吗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工摇庙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旱物,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓卫袒,卻偏偏與公主長(zhǎng)得像宵呛,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夕凝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1宝穗、Multiple commands produce 'xxx/Info.plist'2、iOS 12系統(tǒng)WiF...
    CircusJonathan閱讀 6,101評(píng)論 0 7
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)码秉、插件逮矛、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,105評(píng)論 4 62
  • Multiple commands produce 'xxx/Info.plist' 原因:項(xiàng)目中存在重復(fù)命名的i...
    DDY閱讀 1,983評(píng)論 0 8
  • 新聞攝影 新聞攝影最基本的標(biāo)準(zhǔn)是要具有時(shí)效性以及畫(huà)面內(nèi)容的完整性,同時(shí)要能夠以足夠的視覺(jué)沖擊力...
    花間鄊舍閱讀 203評(píng)論 0 0
  • 樂(lè)微APP即校友共享圈APP转砖,是拉近校友關(guān)系橱鹏,連接校友活動(dòng),實(shí)現(xiàn)資源共享的社交平臺(tái)堪藐。該APP致力于打造一個(gè)通過(guò)運(yùn)用...
    致遠(yuǎn)clothand閱讀 2,759評(píng)論 0 1