在swift的viewcontroller中寫了如下**:
func
first ()
func
second ()
override
func
viewdidload()
執行結果:第乙個方法。發現沒有達到我們預期的目的,同樣的**用oc實現如下:
-(void
) first -(
void
) second
- (void
)viewdidload
執行結果:第
second
個方法。達到了我們預期的目的。為什麼在swift中方法交換失敗了呢,試著把上面方法交換的**放在
因為在swift**中已經沒有了objective-c的執行時訊息機制, 在**編譯時即確定了其實際呼叫的方法. 所以純粹的swift類和物件沒有辦法使用runtime, 更不存在method swizzling. 那是不是在swift中就不能使用runtime了呢?答案肯定是可以的。要使用runtime,我們需要在想要使用runtime的方法或者屬性前面加上dynamic關鍵字。
在swift中使用執行緒休眠
c 和php都有sleep讓執行緒休眠指定時間後再繼續執行後面的 swift中應該如何呢?首先,找一下objective c版本是怎麼做的 self performselector selector didtimeout withobject nil afterdelay 60 順便演示下取消 ns...
Swift中使用protocol的注意事項
oc中protocol是用weak和assign修飾的弱引用.swift中protocol功能被增強了,如果使用以下 就會變成強引用.protocol testdelegate class test nsobject testdelegate static func test deinit clas...
swift中使用Codable協議實現json解析
typealias codable decodable encodable 它其實另外兩個 protocol 的集合,也就是 decodable 和 encodable。乙個用作資料解析,另乙個用作資料編碼。建立乙個實體類,只宣告幾個屬性,將它例項編碼為json字串 struct person co...