IOS常見知識點

2021-06-25 10:40:16 字數 1908 閱讀 1990

xcode 4.4 陣列和物件的訪問都可以簡寫了,例如賦值  array = @[@"string",@1],     dic = @,    取值  array[1],dic[@1]。

早期的xcode編譯環境對方法順序要求很高,前面的函式體找不到後面的例項方法,發出警告,要麼只能在類別中宣告,多寫**,要麼打亂函式順序,導致維護麻煩,新的llvm改變了以往順序編譯的規則,先掃瞄方法宣告,再對方法實現進行編譯,避免發出警告。

uicollectionview 詳細攻略  

runtime知識 isa指標, sel與imp, msg_send, dynamic屬性, 訊息**

coredata總結:   

nsmanagedobject對應一條資料,屬於弱型別,因此採用類似dic的方式進行訪問,容易出錯,且需要查詢,可以用xcode將每個資料表對映成乙個類,從而變成強型別的訪問。

coredata執行緒不安全,需要每個執行緒建立乙個nsmanagedobjectcontext,,共用乙個nspresistentstorecoordinator,因為每個context在使用前會對coordinator加鎖

coregraphic是一套基於c的繪圖框架,基於quartz作為繪圖引擎,函式以cg開頭,coreanimation比較複雜,包含calayer,動畫及紀時類等,uiview提供了一些類方法可以對ui元件再不同屬性值之間轉換的效果進行動畫程式設計,可以抽空學習一下facebook的pop引擎

coretext在更細的力度用c的 api繪製  則是乙個濾鏡影象處理框架,包含cicontext,ciimage(儲存影象資料),cifilter

nsnotification的特點呢,就是需要被觀察者先主動發出通知,然後觀察者註冊監聽後再來進行響應,比kvo多了傳送通知的一步,但是其優點是監聽不侷限於屬性的變化,還可以對多種多樣的狀態變化進行監聽,監聽範圍廣,使用也更靈活。另外kvo通過字串進行匹配,編碼容易出錯,同時都可用delegate實現,不過很麻煩,每乙個notification都需要乙個protocol, notification更簡潔,不需要知道監聽者的資訊

實現了 nscopying **的object才能使用copy 方法,  四線了nscoding**的object才能使用 [nskeyedarchiver archiveddatawithrootobject]

關於繪圖:

kvo的實現本質上是新增了observe後,物件的isa就變成了乙個原類的子類,這個子類重寫了set函式,呼叫了observevalueforkeypath函式 

object_setclass(myobject, [mysubclass class]);

objc_setassociatedobject 的實現是執行時有乙個全域性的hashmap,key為class,value為乙個包含了具體key和value的map.

@dynamic僅僅是告訴編譯器這兩個方法在執行期會有的,無需產生警告。

category與extension:前者不能新增變數,只能新增方法,重寫方法會覆蓋原方法。extension可以新增變數一般在implemention上方,定義的方法必須在implemention裡面實現,

如果找不到乙個selector無法找到,先去

+ (bool)resolveinstancemethod:(sel)aselector  可以用來給類新增方法,如果不行則呼叫

-(id)forwardingtargetforselector:(sel)aselector 進行訊息**

響應鏈條:乙個touch事件被包裝成乙個uievent,從rootview自頂向下找尋第一響應者,然後自底向上根據響應鏈尋找處理邏輯。

arc 和 非arc情況下 uiview 加上和不加上 __block區別

iOS中Foundation的常見知識點

字串類 nsstring nsstring 1.按格式生成 nsstring stringwithformat the result is 5 2.得到字串長度 mystring.length 3.將字串寫入檔案 nsstring mystring hello world nserror error...

iOS小知識點

1.nslog日誌列印 ifdef debug 除錯 define czlog nslog va args else 發布 define czlog endif 2.自定義導航欄後實現滑動返回功能 self interactivepopgesturerecognizer delegate nil 3...

iOS面試知識點

現在進入本篇的正題。本篇的面試題是我認為比較好的ios開發基礎知識點,希望大家看過這後在理解的基礎上掌握而不是死記硬背。死記硬背很快也會忘記的。1.1 父類實現深拷貝時,子類如何實現深度拷貝。父類沒有實現深拷貝時,子類如何實現深度拷貝。1.2 kvo,nsnotification,delegate及...