NSProxy類在分布式對(duì)象架構(gòu)中是很重要的。由于作用比較特別拴曲,NSProxy在Cocoa程序中出現(xiàn)頻率很低争舞。
NSProxy 是一個(gè)抽象類,它為一些表現(xiàn)的像是其它對(duì)象替身或者并不存在的對(duì)象定義一套API澈灼。一般的竞川,發(fā)送給代理的消息被轉(zhuǎn)發(fā)給一個(gè)真實(shí)的對(duì)象或者代理本身load
(或者將本身轉(zhuǎn)換成)一個(gè)真實(shí)的對(duì)象店溢。NSProxy的基類可以被用來(lái)透明的轉(zhuǎn)發(fā)消息或者耗費(fèi)巨大的對(duì)象的lazy
初始化。
NSProxy實(shí)現(xiàn)了包括NSObject協(xié)議在內(nèi)基類所需的基礎(chǔ)方法委乌,但是作為一個(gè)虛擬的基類并沒有提供初始化的方法床牧。它接收到任何自己沒有定義的方法他都會(huì)產(chǎn)生一個(gè)異常,所以一個(gè)實(shí)際的子類必須提供一個(gè)初始化方法或者創(chuàng)建方法遭贸,并且重載forwardInvocation:
方法和methodSignatureForSelector:
方法來(lái)處理自己沒有實(shí)現(xiàn)的消息戈咳。一個(gè)子類的forwardInvocation:
實(shí)現(xiàn)應(yīng)該采取所有措施來(lái)處理invocation
,比如轉(zhuǎn)發(fā)網(wǎng)絡(luò)消息壕吹,或者加載一個(gè)真實(shí)的對(duì)象著蛙,并把invocation
轉(zhuǎn)發(fā)給他。methodSignatureForSelector:
需要為給定消息提供參數(shù)類型信息耳贬,子類的實(shí)現(xiàn)應(yīng)該有能力決定他應(yīng)該轉(zhuǎn)發(fā)消息的參數(shù)類型踏堡,并構(gòu)造相對(duì)應(yīng)的NSMethodSignature對(duì)象。詳細(xì)信息可以查看NSDistantObject, NSInvocation, and NSMethodSignature的類型說(shuō)明咒劲。
相關(guān)資料:
NSProxy和NSObject設(shè)計(jì)代理類差異