我對ARC有點誤解。我使用下面的代碼創建一個新的UIViewController:ARC和ViewControllers
CGRect screenRect = [[UIScreen mainScreen] bounds];
LocationProfileView *locationProfile = [[LocationProfileView alloc] initWithLocation:l];
locationProfile.view.frame = CGRectMake(0, screenRect.size.height, screenRect.size.width, 400);
[appDelegate.window addSubview:locationProfile.view];
[UIView animateWithDuration:.25 animations:^{
locationProfile.view.frame = CGRectMake(0, 0, screenRect.size.width, screenRect.size.height);
}];
在它的UIView我把一個按鈕,用於去除屏幕視圖。這個問題是,locationProfile
被添加到屏幕後立即被釋放,所以每次我試圖點擊「關閉」按鈕(這將調用LocationProfileView
類中的方法),我的應用程序將崩潰。
所以我增加了一個屬性:
@property(nonatomic, strong) LocationProfileView *locationProfile;
,改變代碼的第二行:
locationProfile = [[LocationProfileView alloc] initWithLocation:l];
,但現在我的課不會被釋放,直到我再次啓動它(因爲它失去對LocationProfileView
的第一個實例的引用?)。每次點擊「關閉」按鈕時,我應該怎麼做才能讓我的課程被釋放?我想設置locationProfile
到nil
會工作,但這意味着我將不得不在主類(包含代碼塊)中調用一個方法。
這樣做的正確方法是什麼?對不起,如果我的問題太不理智。
注: l
是其中包含了一些相關信息將顯示在LocationProfileView
的UIVIew
自定義類的一個實例。
哪裏'UIViewController'你提到? – Richard 2013-03-01 17:00:41