1

理解できない!私は初心者なので、これはObjective-C、生命、宇宙、および/またはすべてについての私の根本的な誤解かもしれません。優しくしてください。

  1. テキストフィールドのinputViewをself.datePickerに設定しました。これはviewDidLoadで初期化された標準のUIDatePickerです。
  2. datePickerにいくつかのサブビューを追加します。クレイジーに聞こえます、私は知っていますが、私に耐えてください。
  3. 私は今、そのフィールドにファーストレスポンダーを辞任させ、self.datePicker=nilを呼び出します。さらにクレイジーです、はい。
  4. textFieldをもう一度タップすると、2つのうちの1つが期待されます。どちらか、datePickerなし。破壊しましたよね?再割り当てして初期化する必要があります。または2つ、追加のサブビューなしの新しいdatePicker。なぜ私がこれを期待するのかわかりませんが(繰り返しますが、私はそれを破壊しました!)、ねえ、それは可能です。
  5. 私が得たのは同じピッカーで、サブビューが追加され、さらに以前に設定された日付が含まれています。なに?!?私は言います。

なぜ私がこれをしたいのか疑問に思っていることを私は知っています。なぜdatePickerにビューを追加するのか、そして必要なときにそれらをスーパービューから削除しないのはなぜですか。しかし、私がこれを行う正当な理由があり、それをこのように行うと仮定しましょう。誰かが私の明らかに奇妙なオブジェクトの振る舞いの理解を修正できますか?

4

2 に答える 2

1

datePickerへの参照が2つあるように見えますが、設定しているのはそのうちの1つだけです。私があなたをフォローしている場合、2つの参照はself.datePickerとtextField.inputViewです。ただし、最初の1つをnilに設定しているだけです。したがって、オブジェクトはtextField.inputViewによって「保持」されます。

一般に、オブジェクトを破壊するためにARCに依存することはかなり不安定に思えます。また、datePickerが破棄されると、textField.inputViewは新しいdatePickerではなくnilになりませんか?

于 2012-11-28T14:36:22.723 に答える
1

いいえ、viewControllerのプロパティを単にnilledしただけで破壊しませんでした。デザインが少しずれていると思いますが、ある種のカスタム日付ピッカーを作成した場合は、カスタム日付ピッカーを基本状態に戻すリセットメソッドを追加する必要があります。

UITextFieldプロパティからdatepickerinputViewの新しいインスタンスにそれを削除します。

于 2012-11-28T14:31:54.783 に答える