SEL数据类型
SEL
SEL是一種數據類型,表示的是方法的存儲位置。
假設有一個Person類,實例化該類后就有了person對象,那么每個對象都會有一個isa指針指向該類的代碼存儲區。在代碼存儲區中,會有SEL包裝過的一些方法的調用地址,通過SEL指向的地址來調用該具體的方法。
用下代碼來解釋,也許會更清晰點:
如代碼中所示,首先用SEL聲明了一個方法的名稱,
接著創建了一個NSString類的對象abc,那么這個對象創建的時候,相對應的會有一個isa指針指向該類的一些方法名稱,比如
SEL s1 = stringByAppendingString:
如此這般
每個對象都可以通過performSelector: withObject:方法去查方法表里是否有這個方法,有的話,就會指向方法地址去調用,沒有的話,就會報錯,后面的withObject:指的是調用該方法所傳入的參數。
運行結果:
總結
- 上一篇: 大学python实训总结-python实
- 下一篇: ffmpeg去除视频黑边命令