aop為aspect oriented programming的縮寫,意為:
面向切面程式設計
,通過預編譯
方式和執行期動態**實現程式功能的統一維護的一種技術。
我的理解就是將每個特定的物件需要執行的同樣的**提煉出來,然後動態的載入到每個物件中。
實現主要用到了兩個知識點,乙個是runtime程式設計,乙個是+(void)load{}函式,runtime主要使用了其中的方法交換函式
method_exchangeimplementations;
load函式主要是考慮到其特性,即+(void)load; 在objective-c執行時載入類或者category時被呼叫,適合將需要的執行時**新增。
假設需求:網路發生變化的時候,post網路變化狀態需要每乙個控制器物件新增觀察者,可以使用切面程式設計思想,簡化**
具體實現:
1.建立基於uiviewcontroller的類別aop,即uiviewcontroller+aop
2.重寫load方法,具體**如下
+(void
)load); }
void
swizzlemethod(class class,
seloriginalselector,
selswizzledselector)
else }
-(void
bool
)animated -(
void
bool
)animated -(
void
)noti:(
nsnotification
*)noti -(
void
bool
)animated
3.在pch檔案中定義
kpass和uiviewcontroller+aop
感謝諸位大牛的講解,略作歸納整理!
aop 面向切面程式設計
起源 研究人員就對物件導向思想的侷限性進行了分析。他們研究出了一種新的程式設計思想,借助這一思想或許可以通過減少 重複模組從而幫助開發人員提高工作效率。隨著研究的逐漸深入,aop也逐漸發展成一套完整的程式設計思想,各種應用aop的技術也應運而生。aop思想 定義乙個切面,在切面的縱向定義處理方法,處...
AOP面向切面程式設計
1 概念 面向切面程式設計,通過預編譯方式和執行期動態 實現程式功能的統一維護的一種技術。aop是oop的延續,利用aop可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程式的可重用性,同時提高了開發的效率 2 作用 1.解耦,將通用性的功能模組 與業務 解耦 ioc專...
AOP 面向切面程式設計
aop aspect oriented programming 即面向切面程式設計,可以說是oop object oriented programming 物件導向程式設計的補充和完善。面向切面程式設計是物件導向中的一種方式而已。在 執行過程中,動態嵌入其他 叫做面向切面程式設計。常見的使用場景 日...