ARCに関して少し誤解があります。次のコードを使用して、新しいUIViewControllerを作成しています。
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;
次のコードの2行目を変更しました。
locationProfile = [[LocationProfileView alloc] initWithLocation:l];
しかし、クラスを再度開始するまで、クラスの割り当てが解除されません(LocationProfileView
?の最初のインスタンスへの参照が失われるため)。「閉じる」ボタンをタップするたびにクラスの割り当てを解除するにはどうすればよいですか?locationProfile
toの設定nil
は機能すると思いますが、これは、メインクラス(コードブロックを含むメソッド)のメソッドを呼び出す必要があることを意味します。
これを行うための適切な方法は何ですか?私の質問があまりにもうるさい場合は申し訳ありません。
注:
は、 'sl
に表示されるいくつかの情報を含むカスタムクラスのインスタンスです。LocationProfileView
UIVIew