我對於Objective-C語言(少於三個月)很新穎,但它是我真正需要了解的東西。objective-c代表和事件設計(我不明白)
假設有一個控制器(在iOS環境中)管理用戶輸入數據的表視圖。該表必須具有可編輯單元格和某些功能,以便更輕鬆地進行值的選擇,例如,顯示帶有可能的字段值的彈出式窗口的按鈕。
假設有一個字段來存儲國家名稱。 popover首先顯示了大陸的列表;當用戶選擇一個大陸時,彈出窗口的控制器必須顯示所選大陸預覽的國家。
現在,這個彈出窗口出現在應用程序的許多地方,所以如果我可以封裝它以備後用,它將會很好。我會想到這個酥料餅是這樣的:
...
@protocol MyPopoverDelegate<NSObject> {
-(void)didSelectCountry:(NSString *)countryName;
{
...
MyPopoverController *dataSelector = [[MyPopoverController] alloc] init];
dataSelector.dataType = CountryDataType;
dataSelector.delegate = self;
[dataSelector show];
[dataSelector release];
...
這裏的問題是該行[dataSelector release]
因爲管理酥料餅,直至該國選擇必須存活代碼。這意味着dataSelector
變量必須是調用者類的屬性,並且很糟糕。
那麼問題是: 我該如何組織這樣的情況有一個可重用的控制器?
感謝
vodkhang答案後編輯:
好吧,這是一個很好的一個,但dataSelector
仍然是一個屬性。 如果我這樣做:
@implementation MyPopoverController
- (id)init {
...
[self retain];
...
}
- (void)popoverControllerDidDismissPopover: (UIPopoverController *)popoverController {
...
[delegate didFinishSelectingCountry:countryName];
[self release];
}
@end
我從來沒有看到在Objective-C這種行爲,我覺得這是沒有的想法。 爲什麼它錯了?
可能的答案:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/AboutViewControllers/AboutViewControllers.html中的「關於自定義視圖控制器」部分 – 2010-10-03 15:53:46