0

私はBOOLプロパティ(ポインタではない)を持つView Controllerを持っていますが、これはNOであるか、viewDidLoadで割り当てられていないかのように見ているだけです。BOOLは、必要なときに割り当てられます。ビューコントローラが割り当て解除され(私はアークを使用しています)、後で再作成されたときに、そのBOOLの以前のインスタンス値が(VCが割り当て解除される前に)YESだった場合、新しいインスタンスのBOOL変数の初期値もYESになります。これは非常に奇妙なことです。

  1. 宣言されたプロパティ(非アトミック、割り当て)
  2. viewDidLoadには設定されておらず、アクションメソッドの他の場所に設定されています
  3. Deallocで変更されていません

私はこれが奇妙であることを知っています、その間に私はviewDidLoadで適切なデフォルト値を設定しました。

アップデート

これはiVarとしてのBOOLで発生していたことを念頭に置いて(私はそれをプロパティに変更しました)、BOOLが割り当てられる前に比較が行われました。私は奇妙な振る舞いをそれに任せています。

4

2 に答える 2

0

それらは最初はグローバル変数であり、インスタンス間で保持されていたことがわかりました。

于 2013-03-20T09:37:33.087 に答える
0

ガベージを使用すると、よりも多くの値が得られる可能性がYESはるかに高くなります:)NO!=0==0

ただし、型の AFAIK インスタンス変数は(すべての ivar が 0 に設定されているため)BOOLに初期化さNOれます。調べていなくても、これは自動合成されたプロパティ バッキング ivar にも当てはまると思います。それはNO毎回そうであることを物語っています。

それは常に古い状態を反映していることYESNO気付きますか? 私の推測では、上記の仮定が正しくないか、インスタンスが実際に解放されていないかのいずれかです。インスタンスのアドレスが同一であるかどうかを確認しましたか?

于 2013-03-19T15:04:41.617 に答える