我在這裏有一個泡菜..建立一個包含iOS遊戲可以說兩個視圖:BaseView和MapView。現在,這些當然有相同的AppDelegate。應用程序委託分配的對象顯示在多個子視圖?
這些都使用名爲rivbox的UIView子類。在之前的版本中,我在Base和Map-view中都分配了一個rivbox實例。當我意識到我會有很多使用這個rivbox的子視圖時,我選擇在appDelegate中分配只有一個rivbox實例,然後,當子視圖加載時,通過appDelegate從「借用」rivbox使用這些漂亮的功能。
-(void)viewDidLoad {
//Get all the sweets from the parent!
appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
rivbox = appDelegate.rivbox;
[self.view addSubview:rivbox];
...
}
而這個功能是用於更新的所有權,如果我們回到這個觀點再次
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if(rivbox != nil) {
[rivbox setDelegate:self];
[self.view addSubview:rivbox];
}
}
這工作得很好!我在appDelegate中找到了rivbox,它已經更新了!當我移動到另一個視圖時,它在那裏加載也很好!但是當我回到第一個視圖時,這似乎在泄漏?!?!即使先前的視圖現在擁有它,我仍然無法在我回到之前的視圖中看到流鏡盒!
問題是:這有什麼問題?每當我返回到已經加載的視圖時,是否真的必須添加rivbox作爲子視圖?如果我刪除該字符串,那麼當我返回到先前的視圖時,我看不到MyBox。
最小化對象的分配?提及代表有什麼問題? – Hjalmar 2012-01-04 16:42:42
用更多描述更新了我的答案。 – 2012-01-04 17:47:46