2017-05-24 9 views
1

私はいくつかのビューコントローラを含むストーリーボードを使用するオープンソースプロジェクトを熟読してきました。何らかの理由で、UI要素は.hファイルに@property IBOutlet宣言を使用しますが、むしろ、IVARの(時には__weak)はそうのような.mファイルで宣言されていません。代わりに、私はいつもやったのなぜIBOutlet変数をivar(プロパティではない)にするのですか?

@implementation FunnyScreen { 
    __weak IBOutlet SillyButton *bouton; 
} 

誰かが最初の例のようにコードを書く理由、つまりivarのアプローチは誰にも分かりますか?それはどんな目的にも役立ちますか?私は開かれた心を保っています。ストレージプラス2つのアクセサメソッド:

答えて

2

合成するプロパティについての素晴らしいところは、それはあなたに3つのコードのいずれかの簡潔なラインで物事を与えることです。

しかし、あなたがそれらのアクセサメソッドを必要としない場合は?一度値が設定されると、それは決して変更されないでしょうか?そして、このクラスの外ではアクセスする必要はありません(IBOutletの一般的なルールです)。

さて、あなたは、単に実装ブロック内で宣言IVARあるストレージを必要とします。

は個人的に、私は多くの場合、まさにそのためアイバーズを使用します。内部値を非変更 - さえユビキタス性質のこれらの日に。私はこのコードの作者が何を考えていたかは確かに言えませんが、それは妥当と思われます。

+0

OK、なぜあなたは、彼らはそれが弱い作っ思いますか? – asdfkjaasdflf

+0

大きな質問です。私は良い答えがありません。習慣/反射、(あるとは思えない)彼らはそれがある時点で去ることを期待しますが、その後は再設定されないようにし、オートニルの振る舞いを望みます。 –

関連する問題