質問
iPhoneの開発はかなり始めたばかりで、Objective-Cについてはまだ頭を悩ませています。
メインビューコントローラーに属するオブジェクト内からラベルのテキストを変更しようとしています。うーんそれは正しいと思う。
AQRecorder :: MyInputBufferHandler
が呼び出されるたびに(つまり、入力バッファーがいっぱいになったとき)ラベルを更新しようとしています
最初のアプローチは、 AQRecorder
クラスを変更して、変更したコンストラクターにパラメーターとして送信する UILabel *
を含めることでした。うまくいきましたが、非常に間違っていると感じました。そして、いくつかの異なるUIコンポーネントを変更したいので、もっと良い方法があることを望んでいました。
基本的なものが欠けていると感じています。それか、リファクタリングが少し必要になります。
解決
の使用を検討する NSNotificationCenter
。分離された通知を提供するため、レコーダークラスはUIについて何も知る必要がありません。
他のヒント
通知のほか(Kristopherが提案)、「グローバル」があれば非常に便利です。おそらく複数のオブザーバーによる通知、頭に浮かぶ古典的なアプローチは委任です。
あなたの場合、イベントを処理するクラス( AQRecorder
?)はデリゲートプロトコルを定義し、デリゲートプロパティを持つことができますが、 UILabel
(メインビューコントローラー?)このプロトコルを実装し、プロトコル実装のラベルを更新します(または他に必要なことを行います)。