私は客観的なcで楽しいです。シンプルなプログラムとして、私は時計アプリケーションを書こうと思っていました。シンプルクロックアプリケーション:毎秒委譲またはコールバックを使用しますか?
基本的に、UITextFieldは現在の時刻を表示し、毎秒更新する必要があります。
私の最初の考えは、委譲を使用して、 'Value Changed'イベントが発生したときにUITextFieldがクラスをコールバックさせることでした。初期値の変更を(例えば、アプリケーションの起動時に時間を設定するなどして) 'ブートストラップ'することで、後で「値変更」イベントを継続してトリガーすることができると考えました(UITextFieldは自動的に変更され、デリゲートメソッドをトリガーします)。私は多くのことを試みましたが、これは決して働きませんでした。私は、委任されたメソッドが呼び出されることを期待して、UITextFieldを任意のテキスト値に設定するボタンを作成しようとしました(UITextFieldを起動時に設定するのではなく)。私のコードが正しいことを証明するために、「Touch Down」のような他のアクションを使用すると、時間が更新されました。例えば、UITextFieldのクリックごとに時間が得られます。
私は結局、[self performSelector ...]を使用して毎秒コールバックを使用できることを知り、それが機能しました。
「値の変更」アクションを使用している私の委任がうまくいかなかった根本的な理由はありますか?
これは意味があります。私にとっては無限ループはAppleの本拠地でした;) – azog
技術的には無限ループではありませんが、私は信じる無限の再帰です。これはスタックのオーバーフローを引き起こします。 – morningstar