1
我有以下代碼:如何處理自定義UIViewController委託(ARC)?
- (IBAction)mapPressed:(id)sender
{
MapViewController *mapVC = [[MapViewController alloc] initWithNibName:@"MapViewController" bundle:[NSBundle mainBundle]];
mapVC.delegate = self;
[self.navigationController pushViewController:mapVC animated:YES];
}
對於MapViewController中:
//MapViewController.h
@protocol MapViewDelegate
@required
- (void)selectedPlacemark:(MKPlacemark*)placemark;
@end
//...
@property (nonatomic, weak) id<MapViewDelegate> delegate;
//...
如果ARC啓用,我還需要向mapVC.delegate設置爲零?如果是這樣,這是否意味着我不應該在本地創建MapViewController,而是爲該對象設置一個實例變量?
這一切對我來說都不錯。你看到問題嗎?如果是這樣,它可能有助於更具體地瞭解它們是什麼。或者這只是一個問題,要仔細檢查你是否正確? – 2012-04-20 10:00:19
那麼假設fooViewController創建MapViewController,而fooViewController將自己設置爲MapViewController的委託。如果fooViewController被銷燬,並且MapViewController的委託方法被調用,它會不會崩潰? – ninjaneer 2012-04-20 10:02:55
我不認爲這會,那是我相信的弱點。然而,我還沒有太多ARC的經驗,所以我會留給那些確認的人。 – 2012-04-20 10:08:34