我們在複習一些重要的東西:
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