iOS開發debug集錦

1.添加第三方庫時,須要注意使用環境xcode

duplicate symbol _llvm.embedded.module in:
    /Users/dengw/360Cloud/xcode_code/application/OnceNote/Pods/ShareSDK3/libraries/extends/WeChatSDK/libWeChatSDK.a(MTAEvent.o)
    /Users/dengw/360Cloud/xcode_code/application/OnceNote/Pods/ShareSDK3/libraries/extends/WeChatSDK/libWeChatSDK.a(MTATestSpeed.o)
ld: 24 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

 

緣由:使用的這個第三方SDK的靜態庫,就是.a後綴的文件,不支持模擬器指令集,由於模擬器是電腦的CPU, x86_64構架。app

解決方案:build或run時,選擇「iOS Device」,使用真機調試。或者,添加模擬器使用庫。框架

2.自定義日誌輸出ide

//自定義日誌輸出
#ifdef DEBUG
//調試狀態
#define XLog(...) NSLog(@"%s line:%d\n %@ \n\n", __func__, __LINE__, [NSString stringWithFormat:__VA_ARGS__])
#else
//發佈狀態
#define XLog(...)
#endif

   經過NSLog()可使用%@格式說明符來輸出對象。NSLog()處理%@說明符時,它會詢問參數列表中相應的對象以獲得這個對象的描述。從技術上講,就是NSLog()給這個對象發送描述消息,而後對象的description方法生成一個NSString並返回。以後NSLog()在其輸出中包含這個字符串。在類中添加description方法就能夠自定義NSLog()如何輸出對象。ui

3.cocoapods使用問題spa

  使用pod install命令時,卡在Updating local specs repositories不動。3d

  解決辦法:「pod install」 換成「pod install --verbose --no-repo-update」命令,前面的命令被牆了。調試

4.The operation couldn’t be completed. (LaunchServicesError error 0.)日誌

  

解決辦法:退出Xcode,退出Simulator,必定要徹底退出。code

5.包含的文件找不到

1)libxml/parser.h file not found

解決方法:在Xcode菜單 Project->Project Settings的All標籤,搜索 Header Search Path ,添加/usr/include/libxml2 便可。

6.設置UISearchBar取消按鈕

UISearchBar *searchBar = [[UISearchBar alloc] init];
//顯示取消按鈕
[searchBar setShowsCancelButton:YES animated:YES];
//設置取消按鈕的文字(默認是cancel)
for (UIView *view in [[searchBar.subviews lastObject] subviews]) {
   if ([view isKindOfClass:[UIButton class]]) {
       UIButton *cancelBtn = (UIButton *)view;
       [cancelBtn setTitle:@"取消" forState:UIControlStateNormal];
    }
}

7.真機調試team ID not found問題

問題:No valid signing identities (i.e. certificate and private key pair) matching the team ID 「***********」 were found.

注:一般這種狀況出如今下載並打開別人項目時

解決方案:
1)、將Build Setting裏面的Code Signing更改成本身的證書;
2)、嘗試修改target -> General -> Identity -> Team,將其值修改成None(一般不能被修改);
3)、若2不成功,則針對項目的target複製多一份副本,

  
選擇Duplicate;
4)、將複製後的target的Team設置爲None;

  
5)、選擇當前運行target爲複製並更改後的副本,Run;

  

  

至此,該問題已經解決。

8.Xcode編譯C++

將.cpp改爲.mm

9.添加類名前綴

Build Setting頁,右側Project Document-->Class Prefix項

10.Xcode中沒法從Button到View Controller拖線

緣由:xib 或者 storyboard中的那個viewController 跟你要連接的那個Controller沒對應上。

解決方案:在xib 或者 storyboard裏,在class裏寫一下那個類名便可。

11.使用官方私有API的方式

法1.只導頭文件進去工程。
法2.拷貝私有框架進工程,再導入頭文件。
法3.使用extern方式添加聲明。
實例:
@interface NSObject ()
- (NSString *)originalString;
- (void)removeLineFromNewTextLineInfoRange;
- (id)productName;
+ (BOOL)canConvertToObjC2:(id)arg1;
- (BOOL)taskStopRunning;
@end

 12.Xcode build failure 「Undefined symbols for architecture x86_64」

解決辦法:導入所引發問題的框架。

......

 

【掃描關注更多幹貨】

公衆號:xiaoniu

相關文章
相關標籤/搜索