任何方法調(diào)用的本質(zhì): 其實(shí)是發(fā)送了一個(gè)消息, 用runtime發(fā)送消息, OC底層實(shí)現(xiàn)通過(guò)runtime實(shí)現(xiàn)
最終生成消息機(jī)制, 編譯器做的事情, clang -rewrite-objc main.m 查看最終生成代碼
?使用runtime創(chuàng)建一個(gè)NSobject對(duì)象的步驟:
1. 必須要導(dǎo)入頭文件
在xcode6之前, 蘋(píng)果運(yùn)行使用objc_msgSend是有參數(shù)提示的, xcode6之后蘋(píng)果不推薦我們使用runtime, 可以通過(guò)xcode的buile setting, 搜索msg把runtime設(shè)置為NO就可以使用runtime了
2. 使用runtime調(diào)用私有方法
下面我定義了一個(gè)person類繼承于NSObject, 在.m文件里面直接實(shí)現(xiàn)了-(void)eat{}方法, 如果按照我們平時(shí)的習(xí)慣, 直接調(diào)用 [p eat] 方法會(huì)報(bào)錯(cuò)的, 但是使用runtime方法調(diào)用則不會(huì)