在每一次升級 后,難免會有一些莫名的 Bug 產生,在此記錄著,以便快速解決。
- 1、快捷鍵不靈
- 2、模擬器的選項不見了
- 3、打印時出現一大堆信息
- 4、插件失效
- 5、在查看全屏圖片時,隱藏狀態欄的功能壞掉了。(iOS 10)
- 6、推送不好使
- 7、私有權限設置
- 8、UILabel 長度問題
- 9、項目中某個類出現大量的“use of undeclared identifier”
1、快捷鍵不靈
像我最常用的 注釋 "Command" + "/" 居然不管用啦
It means you could just use the shortcut (? Option + ? Command + /) to add a documentation comment to your code if you are using Xcode 8 or above!
啟動終端輸入下面這句話,然后重啟電腦就好啦
~ sudo /usr/libexec/xpccachectl
但還好,大部分的快捷都還是OK的。
2、模擬器的選項不見了
很奇怪的感覺,公司的電腦更新沒有出現這個問題,回來后個人電腦出現啦。
一個最直接的方法,手動添加。直接到 Windows --> Devices, 看到左下角添加模擬器。
上述這個方法是應急用的。
3、打印時出現一大堆信息
一堆很奇怪的信息,暫時也不知什么情況。
2016-09-14 23:37:22.522261 TestXcode8[6606:870004] 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
2016-09-14 23:37:22.525813 TestXcode8[6606:870004] subsystem: com.apple.UIKit, category: HIDEventIncoming, 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
2016-09-14 23:37:22.538153 TestXcode8[6606:869999] subsystem: com.apple.BaseBoard, category: MachPort, enable_level: 1, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0, enable_private_data: 0
2016-09-14 23:37:22.559243 TestXcode8[6606:869878] subsystem: com.apple.UIKit, category: StatusBar, 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
在 Edit Scheme 中 ,如上圖設置 OS_ACTIVITY_MODE
: disable
, 然后就 OK 啦。參考 stackoverflow hide-xcode-8-logs
4、插件失效
Xcode 8 uses library validation. It won't load in-process plugins anymore.
這個是由于蘋果已經重置插件這塊,但有部分優秀的插件已經內置在Xcode了,整體來說,對我影響并不是那么大。
- 網上提供的 Xcode 8 plugins 方案:
自己還沒有嘗試過, 因為據說不是持久的解決方案,有需要和興趣再嘗試吧! 另外如果使用 MakeXcodeGr8Again 注意參考下這篇文章:如何讓 Xcode8 繼續支持 Plugin。
-
內置插件使用
例如 注釋鍵這個插件,直接通過內置的使用就 OK 了
VVDocument
然后將該操作設置成自己熟悉的快捷鍵,然后這個以往的插件就成為了我們常規的快捷鍵啦
設置成自己熟悉的快捷鍵
另外在Swift 中支持自動彈出圖片和顏色的那個插件,而在OC中是不支持的!這個對OC來說,很不爽。
5、隱藏狀態欄的功能壞掉了
升級到 iOS 10.0后,在查看全屏圖片的時候,需要在 Present 之前給要 present 的 view controller 設置 modalPresentationCapturesStatusBarAppearance = true。然后就好啦
TestViewController *testVC = [[TestViewController alloc] init];
testVC.modalPresentationCapturesStatusBarAppearance = true;
[self presentViewController:testVC animated:YES completion:nil];
6、推送不好使
Xcode 8 后,推送可能出現莫名的bug , 但其中有一點可以看看這個開關是否打開,一定要記得打開!
另外通知從手機上看確實在 iOS 10 改變了好多,更好用啦;而我還是先收集下相關資源:
7、私有權限設置
由于iOS10對 Security and Privacy Enhancements
安全和保密性增強,在申請很多私有權限時,都需要添加描述,不添加會crash。 所以我們需要在info plist 中添加描述信息。
NSBluetoothPeripheralUsageDescription //訪問藍牙
NSCalendarsUsageDescription //訪問日歷
NSCameraUsageDescription //相機
NSContactsUsageDescription //通訊錄
NSHealthShareUsageDescription // 訪問健康分享
NSHealthUpdateUsageDescription // 訪問健康更新
NSHomeKitUsageDescription //HomeKit
NSLocationAlwaysUsageDescription // 始終訪問位置
NSLocationWhenInUseUsageDescription //在使用期間訪問位置
NSMicrophoneUsageDescription // 麥克風
NSMotionUsageDescription // 訪問運動與健身
NSPhotoLibraryUsageDescription // 相冊
NSRemindersUsageDescription // 訪問提醒事項
NSSiriUsageDescription // Siri
NSSpeechRecognitionUsageDescription //語音識別
NSVideoSubscriberAccountUsageDescription // 視頻這塊的認證
NSVoIPUsageDescription // VoIP通話
例如我們常用的相機和相冊:
<key>NSCameraUsageDescription</key>
<string>允許使用相機</string>
// <string> Allows the use of the camera</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>允許訪問相冊</string>
// <string>Allow access to the photo album</string>
填的string會在彈出用戶允許時展示在描述里,如果描述空著提交AppStore時會被拒絕。
8、UILabel 長度問題
在動態計算一段文字的高度時,計算出來的高度在iOS10設備上不足以容納這段文字,所以導致 UILabel 上顯示不全的的問題
由于iOS10更換了系統字體,所以會導致文字的大小跟iOS9及之前的系統有點區別,如果繼續用Xcode 7 編譯,建議長度基礎上加上 4-5的距離,當然直接用 Xcode 8 編譯后適配更好!
另外英文是木有問題,此處只針對于 中文 才會有顯示不全的情況。
9、項目中某個類出現大量的“use of undeclared identifier”
在跑項目的時候,突然發現某個類出現大量的“use of undeclared identifier,但是又可以通過 command 找到其所屬,也可以運行,一下子不知所以然。但是那紅色警告太煩了。
但仔細觀察。發現通通都有一個規律,就是那些 undeclared identifier 都是通過 pch 文件 import 的,所以當我將所有的 import 全都放入到該類時,這些紅色的警告才消失。
此處話說是 Xcode 8 對 pch文件是不支持的,當然其實 Xcode 7 那時就不支持啦,只是很多時候我名字可以通過其他方法建立 pch 文件。所以此時建議是后期盡量不用 pch 文件的。當然,此處還如發現其他好的解決方式歡迎告知。
陸續添加中...
PS:方便的東東
-
1、Provisioning Profile 文件選取,已經從Buiid Settings移動到了General中,這樣更方便我們選取啦
General 中Provisioning Profile - 2、 日志處增加了 過濾搜索條件,這樣讓我們也可以像安卓同學那樣快速選取。另外刪除操作后暫時是沒有真正的刪除日志的,還可以通過點擊
filter
and空白日志頁
重新顯示出來 (Xcode 10.3 后這個刪除了就真的刪除了,重新顯示不出來啦)。
過濾條件 - 3、調試好東東
Memory Graph
紫色箭頭代表有問題
此處也可以看到
暫時用這個還不是很熟悉,但是我們第一眼至少能發現它一些明顯的問題,詳細可以看看Xcode8調試黑科技:Memory Graph實戰解決閉包引用循環問題。