您好,登錄后才能下訂單哦!
在collection集合類中如NSSet中是不允許有相同的元素的,但是如果這樣寫:
這樣就會第一個set的輸出結果是兩個相同的元素,第二個set的輸出結果只有一個元素
類族模式:由于在OC中沒有抽象基類,因此用工廠模式,比如我們可以用創建UIButton類似的方法:判斷某個實例所屬的類是否在類族之中,要用isKindOfClass不能用isMemeberOfClass,因為有些類會有內部類型
關聯對象的使用,實際上就是在局部空間建立一個通道來共享某些類,如在UIAlert里面共享block
消息是由接受消息的對象和函數指針構成的,若是沒有用到runtime,編譯器生成函數代碼的指令是硬編碼,如果用到動態綁定:
第一,先要用@dynamic關鍵字修飾需要動態生成的屬性,然后重寫類的resolveInstanceMethod方法
第二,如果第一步還是沒有找到合適的方法,就會調用forwardingTargetForSelector方法轉發給其他對象,一直執行到NSObject
第三,如果第二步還沒有成功,就要啟動完整的消息轉發機制,首先創建NSInvocation對象,把尚未處理的消息信息全部封裝在這個對象里
可以通過方法調換的方式,改變objc_msgSend中函數列表中IMP的指針
OC對象實際上使用結構體和指針來構造的,用isMemberOfClass判斷是否為某一特定類的實例,用isKindOfClass判斷是否為其類或者派生類的實例,而不要用[A Class] == [B Class]
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。