2011-11-19 33 views
0

我有一個對象,所有我的viewControllers之間使用,所以我堅持它的應用程序委託內。 (我認爲這是正確的地方?)。iPhone - 何時發佈應用程序委託?

如果需要發送的東西的viewController火災內的行動,上述目標,我執行以下操作:

- (IBAction)sliderMoved:(id) sender{ 
    MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
    [[delegate myObject] setSpeed:(int)slider]; 
    // [delegate release]; 
} 

我有點擔心我不釋放委託對象的任何地方,這樣行嗎?如果我刪除了註釋行[delegate release],它只會使應用程序崩潰。

回答

4

您不擁有您在此代碼段中創建的delegate對象。您尚未使用allocnewcopy創建它。你也沒有保留它。所以,釋放它不是你的責任。

至於將對象放入應用程序委託只是爲了能夠從代碼的其他部分訪問它 - 這是糟糕的OOP設計IMO。

編輯補充

我想我最好還是舉個例子

假設你有你想要創建一個對象,你可以繞過一個類MyClass

您的應用程序代理,它似乎你已經做創建:

MyObject *myObject = [[MyObject alloc] init]; 

然後再創建一個視圖控制器 - 你通常會做,只是此視圖控制器有一個屬性:

@property(retain) MyObject *object; 

然後你在創建視圖控制器設置該屬性:

YourViewController *vc = [[YourViewController alloc] init]; 
vc.object = myObject; 

而且,如果您按要求將此對象傳遞給其他視圖控制器。

+0

謝謝。我應該在哪裏存儲這個對象? (我是iphone和MVC的新手)。我需要初始化多個viewController可以交互的這個類的一個對象。 – user649716

+1

我這樣做的方法是在每個使用它的視圖控制器中爲此對象創建一個屬性,然後從其他控制器中設置它。 – Abizern

+0

我有點困惑。我認爲屬性創建了一個對象併爲其設置了訪問器方法。這將如何初始化一個可以在viewControllers之間共享的對象?抱歉有這些問題。 – user649716