2010-01-22 91 views
3

我的問題其實很簡單,我如何創建一個對象來充當委託,而不是在我的視圖中包含委託方法?創建一個對象作爲委託 - 目標C

例如,我有x功能需要委託方法,他們目前安裝使用self作爲委託。我想將這些方法放在它們自己的對象中,以便可以調用委託方法,並在視圖結束時執行其他操作。

最好的方法是什麼?

回答

2

例如,的NSXMLParser委託方法 - 它們的存在,委託定義,但我不想叫他們在自我我視圖控制器...我還有什麼其他選擇?

如果您願意,您可以指定另一個自定義類來處理委託方法。簡單地創建一個課程,稱之爲MyXMLParserDelegate或類似的東西。然後,你所要做的就是告訴你的對象它應該使用你的類的一個實例作爲它的委託。

如果使用界面生成器,添加一個新的對象到XIB文件,它的類設置爲MyXMLParserDelegate,然後拖動從NSXMLParser對象的delegate選擇新對象的連接。

如果以編程方式做,基本操作是這樣的:

MyXMLParserDelegate * myDelegate = [[MyXMLParserDelegate alloc] init]; 
[someXMLParser setDelegate:myDelegate]; 

請記住,但是,委託不會保留,所以爲了做到這一點不泄漏內存,您應該添加MyXMLParserDelegate類型的的viewController類的實例變量,然後執行以下操作:

// in your @interface block: 
{ 
    ... 
    MyXMLParserDelegate * myDelegate; 
} 

// in your init method: 
myDelegate = [[MyXMLParserDelegate alloc] init]; 

// in your awakeFromNib method (or anywhere else it seems appropriate): 
[someXMLParser setDelegate:myDelegate]; 

// in your dealloc method: 
[myDelegate release]; 
+0

嗨 謝謝 - 這確實有效,而且我正在做,所以這很好。 – mootymoots 2010-01-22 15:37:28

1

退房這個答案,我認爲它涵蓋了你需要的東西:How to use custom delegates in Objective-C

+0

心不是該解釋如何創建一個委託?委託方法等已經創建爲我創建的自定義類對象的一部分。我只是不想把我的視圖控制器所需的委託方法。 – mootymoots 2010-01-22 14:55:47

+0

例如,NSXMLParser委託方法 - 它們存在,委託被定義,但我不想在我的視圖控制器中將它們稱爲self ...我還有其他選項嗎? – mootymoots 2010-01-22 14:57:45