IOS知識點收集

17  duplicate symbols for architecture armv7s

    用cocoapods 的時候出現,這種錯誤通常是由重複引用庫文件引發。android

緣由:本身嘗試添加Reachability的時候,用import ""導入, 發現沒又Reachability.h文件,就到link binary with libs裏添加了Reachability靜態庫。ios

使用cocoapod 文件都是以import <> 方式導入,刪掉project裏添加的,無需添加,直接引用便可。git

 

16  cocoapods error: incompatible character encodings: UTF-8 and ASCII-8BIT. Updating CocoaPods might fix the issue.

  文本文件中的單引號自動變成了中文的單引號,理所固然編碼會出現問題。json

15 刪除添加的代碼片斷

xcode 中添加了代碼片斷,要刪除的步驟。api

1.選中代碼片斷。 2. 點擊鍵盤delete 鍵。xcode

14.mutating method sent to immutable object'

 

從字面上理解:可變的消息發給了不可變的對象。好比NSDictionary類型的對象調用setValue方法.應該把NSDictionary 改爲NSMutableDictionary類型app

 

13。'NSInvalidArgumentException', reason: '+[GMSCameraPosition cameraWithLatitude:longitude:zoom:]: unrecognized selector sent to class

   在build setting 的Other Linker Flags中設置爲-ObjC
socket

 

12.The operation couldn’t be completed. (com.google.HTTPStatus error 400.)

在谷歌map api 沒設置好。步驟:在developer console中心,post

1:將 Google Maps SDK for iOS 的功能打開,ui

2.申請與你ios項目對應boundle ID 的App Key。

通常app key在申請過程有幾個小時才能生效。肯定生效後才能調用地圖。

11.udp 鎖屏 致使出新中斷信號

 

今天終於肯定了,原來ios在鎖屏以後,從新解鎖,這個過程會致使socket失效。 以前 的表現就是鎖屏,解鎖以後,程序直接crash。(實際上是解鎖以後,發送第一個包,在sendto以後會致使crash)。 

 

目前的解決辦法是,從新建立了一個socket,close了以前的。

 

 這好像是由於ios的鎖屏和按home鍵,最終的狀態時不同的, home鍵會致使程序進入後臺,也就是background狀態。

 

 

10. self.mapview = [BMKMapView alloc]init]; 報exc_bad_access 錯誤。

一般這個是由於內存釋放致使,可是在百度ios7上出現這個錯誤。緣由是mapapi.bundle 不存在,或者不是最新版本,嘗試把mapapi.bundle拖到百度地圖sdk中。運行。

 

9. iOS7 xcode5 百度地圖Api出現-[__NSCFString stringFromMD5]: unrecognized selector sent to

other linker  flags 添加 -all_load參數。
 Project ->build settings ->linking->Other Linker flags

 

 

8.ios 7兼容

http://diwu.me/2013/09/23/ios7jie-mian-guo-du/

7. UITapGestureRecognizer手勢和tableview 觸摸選擇事件不兼容解決辦法。

緣由:

  若view 中加了UITapGestureRecognizer手勢和tableview ,UITapGestureRecognizer手勢調用後,就不會繼續往下傳遞(被攔截),這致使了tableview的點擊事件失效。

解決:

  1.手勢設置委託方法。

    UITapGestureRecognizer *tap =[[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(btnClicked:)];

    tap.delegate =self;

    tap.numberOfTapsRequired =1;

    [self.viewaddGestureRecognizer:tap];

2.在回調方法中進行判斷,若觸摸的是tableviewcell的contentview,着不響應。使得事件往下傳遞。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

{

    // 輸出點擊的view的類名

    NSLog(@"%@", NSStringFromClass([touch.viewclass]));

    

    // 若爲UITableViewCellContentView(即點擊了tableViewCell),則不截獲Touch事件

    if ([NSStringFromClass([touch.viewclass]) isEqualToString:@"UITableViewCellContentView"]) {

        return NO;

    }

    return  YES;

}

 

6"ld: library not found for -l...." 問題的解決

現象:

  在編譯工程時,有時會遇到相似「ld: library not found for -l....」的錯誤提示。

緣由:

  一般這是因爲工程在編譯時找不到須要的連接庫而致使的。

解決方法:

  通常能夠經過以下方法解決,在工程的Target中選中要執行編譯的某個target,而後「get info」,打開Build設置頁面,在「Library Search Path」中添加缺失連接庫的所在文件夾的路徑便可。

 

5.去掉xcode編譯warning:ld: warning: directory not found for option '-L

  1. 選擇工程, 編譯的 (targets)
  2. 選擇 Build Settings 菜單
  3. 查找 Library Search Paths 和 Framework Search Paths, 刪掉編譯報warning的路徑即OK

 

 

4.字典轉換錯誤:

-[NSDecimalNumber isEqualToString:]:

用sbjson解析字典時候出現如上錯誤。緣由是字典中的值不是字符串「1」,而是1的數字表示。

要直接獲得字符串的形式,在解析後給字典加上描述,如:

[[jsonObjects valueForKey:@"id"] description];

3.圖片自適應寬高。

    imageView1.contentMode = UIViewContentModeScaleAspectFit;  
    [self.view addSubview:imageView1];  

2.控件旋轉

宏定義 旋轉角度 :

#define degreesToRadians(x) (M_PI*(x)/180.0)

CGAffineTransform rotation = CGAffineTransformMakeRotation(degreesToRadians(180));//旋轉180度
[xxx setTransform:rotation];

順便記錄一些常量,之後用的着!

#define M_E         2.71828182845904523536028747135266250   e
#define M_LOG2E     1.44269504088896340735992468100189214   log 2e
#define M_LOG10E    0.434294481903251827651128918916605082  log 10e
#define M_LN2       0.693147180559945309417232121458176568  log e2
#define M_LN10      2.30258509299404568401799145468436421   log e10
#define M_PI        3.14159265358979323846264338327950288   pi
#define M_PI_2      1.57079632679489661923132169163975144   pi/2
#define M_PI_4      0.785398163397448309615660845819875721  pi/4
#define M_1_PI      0.318309886183790671537767526745028724  1/pi
#define M_2_PI      0.636619772367581343075535053490057448  2/pi
#define M_2_SQRTPI  1.12837916709551257389615890312154517   2/sqrt(pi)
#define M_SQRT2     1.41421356237309504880168872420969808   sqrt(2)
#define M_SQRT1_2   0.707106781186547524400844362104849039  1/sqrt(2)

 

1.ios 沙盒文件

描述:在對文件進行寫入時候出現失敗的狀況。排查錯誤,.路徑相同,仍然失敗,查找到此緣由。

沙盒裏面的,文件保存的位置分爲四個:

 

 

1,工程沙盒裏(就是程序user Document文件夾下,以讀取文件,寫入文件方式)

2,工程自身裏(就是在工程裏手動建立一個如.plist文件,把固定的內容寫入,這個須要人工手動寫入,即xxx.app文件)

3,工程沙盒裏(保存到user Document下,不過不須要讀寫文件,用系統的 NSUserDefaults 能夠快速保存添加讀取刪除基本數據類型,相似於android裏的Sharedpreferences )

4.tmp文件

要想真正的在app中對程序進行讀寫,只能把文件放在document,tmp裏面。

相關文章
相關標籤/搜索