setValue:forKey:
- 從這個類中查詢
setKey:
方法,如果方法找到了就檢查方法引數. - 如果引數型別是objc物件指標則以value為引數直接呼叫步驟1中找到的set函式
- 如果引數型別不是objc物件指標並且value是nil,就呼叫
setNilValueForKey:
,這個方法的預設實現是丟擲NSInvalidArgumentException
異常. - 如果引數型別是基本型別,需要將value轉為
NSNumber/NSValue
後在呼叫步驟1中找到的set函式 - 如果set函式沒有找到,檢查accessInstanceVariablesDirectly屬性,如果是YES,就按照_key,_isKey,key,isKey的順序來對屬性賦值
- 否則的話呼叫
setValue:forUndefinedKey:
函式,這個函式的預設實現是丟擲NSUndefinedKeyException
異常。