藍懿iOS 技術交流和心得分享16.1.2

   我們在複習一些重要的東西:

1數據持久化的方式:1.歸檔 2.UserDefault 3.CoreData 4.sqlite 

 

多線程: 

1.不能在主線程中寫耗時的操作 因爲會導致主線程中系統代碼晚執行  界面就會出現卡死現象嚴重影響用戶體驗度 

2.不能在子線程中修改頁面 要回到主線程中去修改 

 

耗時操作有哪些:1.大量運算  2.處理大文件 3.網絡相關 4.睡眠代碼 

dispath 

開啓線程的方式有三種: 

1.NSThread: 

2.GCD: 中央任務分發 C語言支持 執行效率高 代碼簡潔 

3.NSOperation:可以控制同時執行的線程數量 可以控制線程之間的關係 

 

多線程可能會出現的問題 

同步:不同時 讓線程依次執行 

異步:同時 多線程本身就是同時執行的 但是同時操作同一份數據的時候可能會出現問題 需要通過 線程同步 來解決 

線程同步:三種方式:1.NSLock 2.NSCondition 3.同步代碼塊 synchronized 

 

 

線程間通信 :通過 self performSelector實現線程間的通信 

進程間通信:兩個應用程序間的通信

在IOS開發中例如微博,QQ聊天界面中要顯示大量的文字信息,這樣需要計算出文字部分的尺寸,才能設計出合適的控件尺寸和位置。下面是IOS 7.0計算文本尺寸的方法。  

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context NS_AVAILABLE_IOS(7_0);  

這是NSString的對象方法,一個字符串實例調用該方法時,方法會通過傳入的參數返回一個CGRect型數據,這個數據的size就是此時字符串顯示成文本的尺寸。  

size:限制尺寸,用於計算文本繪製時佔據的矩形塊,例如微博開發中size.w不超過scence.w。可以將size.y設置爲無限大MAXFLOAT以便於顯示所有文字內容。  

option:文本繪製時的附加選項。  

有四種類型:1.NSStringDrawingTruncatesLastVisibleLine 2.NSStringDrawingUsesLineFragmentOrigin  

3. NSStringDrawingUsesFontLeading  

4. NSStringDrawingUsesDeviceMetrics  

通常使用NSStringDrawingUsesLineFragmentOrigin,如果options參數爲NSStringDrawingUsesLineFragmentOrigin,那麼整個文本將以每行組成的矩形爲單位計算整個文本的尺寸。  

attributes:將文本UIFront存入字典傳到這裏。例如, NSDictionary *dict = @{NSFontAttributeName : font}  

context:context上下文。包括一些信息,例如如何調整字間距以及縮放。最終,該對象包含的信息將用於文本繪製。該參數可爲 nil 。

1.[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key resultLabel.出錯原因:sb控件和代碼關聯出錯解決方案:找到相對應的頁面的黃色圓點(ViewController)在此上面右鍵 刪除 黃色歎號2.<__NSArrayM: 0x7c0320b0> was mutated while being enumerated.出錯原因:forin循環時修改了數組 但繼續循環瞭解決方案: 修改數組後 加break或return3.-[__NSArrayM objectAtIndex:]: index 3 beyond bounds [0 .. 0]'出錯原因:數組角標越界解決方案:角標的取值 要小於數組的count4.-[ViewController addZombX]: unrecognized selector sent to instance 0x79174e00'出錯原因:在ViewController中找不到方法

解決方案:在某個類中沒有實現這個方法  或者是對象類型錯了

5.This application is modifying the autolayout engine from a background thread出錯原因:子線程中修改了界面解決方案:回到主線程修改就可以了6.An

instance 0x7fb6dad221e0 of class Mouse was deallocated

while key value observers were still registered with it

原因:監聽了一個已經被釋放的對象

解決方案:在適當的位置刪除監聽

學習ios  重要還是要理清楚思路  在做或者看老師代碼的時候 自己多想想爲什麼  不要自己看着就抄       另外還是要推薦一下 藍懿IOS這個培訓機構  和劉國斌老師劉國斌老師還是很有名氣的,聽朋友說劉老師成立了藍懿iOS,,老師講課方式很獨特,能夠儘量讓每個人都能弄明白,有的比較難懂的地方,如果有的地方還是不懂得話,老師會換個其它方法再講解,這對於我們這些學習iOS的同學是非常好的,多種方式的講解會理解得更全面,這個必須得給個贊,嘻嘻,還有就是這裏的學習環境很好,很安靜,可以很安心的學習,安靜的環境是學習的基礎,小班講課,每個班20幾個學生,學習氛圍非常好,每天都學到9點多才離開教室,練習的時間很充裕,而且如果在練習的過程中有什麼困難,隨時可以向老師求助,不像其它機構,通過視頻教學,有的甚至學完之後都看不到講師本人,問點問題都不方便,這就是藍懿與其它機構的區別,相信在劉國斌老師的細心指導下,每個藍懿學員都能找到滿意的工作,加油!

                                                                  寫博客第八十四天;

                                                                              QQ:565803433


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章