2012-04-15 9 views
-2

Xcodeに関する2つの基本的な質問があります。私は窓の背景から来て、C#のコードを主に使っています。Xcodeファイルの所有者と@propertyに関するクエリ

最初のプロジェクトの例では、単一ビューのアプリケーションを作成し、ラベルとボタンをビューにドロップしました。ドラッグして始めとアクションを作成する。最後に.mファイルで、label.textを変更するボタンアクションをクリックします。これはそれです:設定なしFile Ownerまたは@property

次の例では、テキストボックスも追加され、label.textはtextBox値で更新されます。こっち私は気づいた

  • (BOOL)textFieldShouldReturn:(UITextFieldの*)テキストフィールド{}
私はFileOwnerにテキストボックスをドラッグしていない場合

は発生しません。デリゲート処理のために、私はfileOwnerに接続する必要があります。この仮定は正しいですか? 別の例では、チュートリアルで実際にボタンをfileOwnerに接続する方法が示されています。なぜそれが必要でしょうか?

次の質問:最初の例では、@プロパティを設定せずにlabel.textを変更できました。 2番目の例からtextBoxを読むこともできます。もう1つの例では、@properyコードを使用しています。これは、C#のgetter/setterのような@propertyについて理解したものです。 C#では、他の設定をせずにtextAreaの.textメソッドを取得または設定できます。だからなぜ/いつ@propertyを使うのか。

私はそれが本当に簡単だと確信していますが、私はそれをあまりにもc#とvbと比較していると思います。

更新:私は他の3冊の本を調べようとしましたが、実際にはなぜ私が特定のことをしているのかを実際に説明している人はいません(FileOwnerへのリンク)。私はコードを演奏した後であるFileOwner上で少しを推測しています。ボタンがfileOwnerにリンクされなければならない理由はわかりません。イベントを作成するためにドラッグすると、それ以外に何が必要なのでしょうか?

@propertyの場合、私は原子/非原子を読んで、小売りしました。私が理解できないことは、label/textAreaを読み書きできるのであれば、なぜ@propertyが必要なのでしょうか?

言い換え質問:

私は/設定label.text = @ "こんにちは" を得ることができます。なぜ私は@properyを作り、そのラベルを合成するのですか?またはユーザー入力を伴うtextAreaの場合?

次のページ:なぜチュートリアルでfileOwnerにボタンを追加するように頼んでいますか?

答えて

0

このプログラミングパラダイムはios(あなたのタグで示されているように)、または目的-cに限定されません。デリゲートのパラダイムが存在するため、元のクラスを変更せずにクラスの動作をカスタマイズできます。したがって、特定のロジックの場合、オブジェクトはデリゲートにコールして処理方法の指示を取得します。

C#のプロパティとobjective-cのプロパティはほとんど同じです。どちらも、基礎となるgetterメソッドとsetterメソッドを使用して、クラス内に格納されている(プライベートまたは保護された)値を操作します。手作業のgetterとsetterメソッド(これは、私が知る限り、Objective-Cを手に入れようとするとき、ほとんどの古いハットのCプログラマがやっていることです)でも、KVO(key-価値観)。これは、プロパティの値が変更されたときにイベントを介して監視することを可能にするobjective-cのシステムです。無意味なコードがたくさんあるでしょう...誰もがメンバー変数を設定する20の関数を必要としないので、C#のようにコンパイラのためのショートカットがあります。C#ではこれが{ get; set; }パターンであり、Objective-Cではパターンです。

したがって、上記のあなたの例の場合と同様に、テキストはテキストフィールドの財産あるとtextFieldShouldReturnは動作です。カスタムビヘイビアは、主にデリゲートオブジェクトで処理されます。私はあなたが知っていると確信しているので、C#も代議員を持っています。それらは関数ポインタのようなもので、関数を変数として設定することができます。 Objective-Cデリゲートの振る舞いは、プロキシオブジェクト(通常はViewControllerですが、いつもそうではありません)を介して関数のグループ全体を変数(一部はオプションで、一部はそうではないもの)に設定するようなものです。

これはあなたのために物事をクリアすることを望む、私は物事を簡潔に入れて偉大ではない。私もObjective-Cの前にC#の背景から来たので、この質問が私に興味を持っています。

+0

こんにちはBorrden、すばやく返信いただきありがとうございます。午前中はかなり早いですが、長い夜を過ごしました。私は本当に答えを理解していませんでしたので、私の質問を言い換えてください:label.text = @ "Hello";なぜ私は@properyを作成し、合成するのですか?次へ:このチュートリアルでは、なぜfileOwnerにボタンを追加するように頼んでいますか?ボタンにはどのようなカスタム動作がありますか? buttonTextを編集したい場合、私はOutsetを作成する必要があることを理解しています。 fileOwnerの部分は理解できません。 –

+0

あなたが何を求めているのか分かりません。 ** UILabelのプロパティなので、label.text **を設定することができます。これを行うために別のプロパティを作成する必要はありません。私はあなたがfileOwnerのビジネス全体で何を得ているのか分かりません。 File Ownerは、通常XIBファイルから来るフレーズです。 XIBを使用していますか? – borrrden

関連する問題