1

プロパティではないUIViewControllerインスタンス変数を持つを持っているとしましょう。私はしますUIBarButtomItem *buttonviewDidLoad

button = [[UIBarButtonItem alloc] init...] 

それから

self.navigationController.leftBarButtonItem = button

後で同じクラスで使用する場合は、ボタンオブジェクトを解放する必要がありますか?配列についても同じ質問があります(オブジェクトを配列に追加して後で使用します)。UIViewsコレクションとそれらに追加されたオブジェクトの両方が保持されているため、私は混乱しています

4

2 に答える 2

1

後でどのようにアクセスするかによって異なります。ターゲットコレクションではなくインスタンス変数でアクセスしている場合は、必ずリリースする必要があります。

于 2012-08-10T07:30:36.307 に答える
0

_button = [UIBarButtonItem alloc] init ..]//_buttonがクラスインスタンス変数であると仮定

ボタン保持カウントは1です。

これをleftBarButtonItemプロパティに割り当てると、保持カウントは2になります。

viewdidunload / deallocでボタンオブジェクトを解放する限り、leftBarButtonがなくなるか再割り当てされると、_buttonが0にカウントされ、オブジェクトが正しく解放されるので、問題はありません。

_buttonがインスタンス変数でない場合は、_buttonを離す必要があり、.leftBarButtonPropertyを使用して再びアクセスできます。

于 2012-08-10T07:32:19.473 に答える