如何實現一個iOS AOP框架?

前言

不自覺的想起自己從業的這十幾年,如白駒過隙。現在談到上還熟悉的的語言以ASM/C/C++/OC/JS/Lua/Ruby/Shell等爲主,其他的基本上都是用時拈來過時忘,語言這種東西變化是在太快了, 不過大體換湯不換藥,我感覺近幾年來所有的語言隱隱都有一種大統一的走勢,一旦有個特性不錯,你會在不同的語言中都找到這種技術的影子。所以我對使用哪種語言並不是很執着,不過C/C++是信仰罷了 : )

Lokie

工作中大部分用OC和Ruby、Shell之類的東西,前段時間一直想找一款合適的iOS下能用的AOP框架。iOS業內比較被熟知的應該就是Aspect了。但是Aspect性能比較差,Aspect的trampoline函數借助了OC語言的消息轉發流程,函數調用使用了NSInvocation,我們知道,這兩樣都是性能大戶。有一份測試數據,基本上NSInvocation的調用效率是普通消息發送效率的100倍左右。事實上,Aspect只能適用於每秒中調用次數不超過1000次的場景。當然還有一些其他的庫,雖然性能有所提升,但不支持多線程場景,一旦加鎖,性能又有明顯的損耗。

找來找去也沒有什麼趁手的庫,於是想了想,自己寫一個吧。於是Lokie便誕生了。

原文鏈接:【https://www.infoq.cn/article/rSBXle7EB4gNw5D5ewZz】。未經作者許可,禁止轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章