0

私は、必要でない限りクラス変数を公開しないのが好きです。私が目にするほとんどの Objective-C コードでは、部外者が決して使用しない変数であっても、変数はプロパティとして宣言されています。

@interface DetailViewController : UIViewController {
    __weak IBOutlet UILabel *name;
}

@interface DetailViewController : UIViewController

@property (weak, nonatomic) UILabel *name;

ソフトウェア エンジニアリングの学生として、これはカプセル化などの原則に対するかなり悪い違反であり、大規模なプロジェクトで望ましくない結合につながる可能性があると思われます。

プロパティを使用する KVC の側面は理解していますが、上記の UILabel など、明らかにクラス内でのみ使用されることを意図した変数を公開する理由はわかりません。

iOS で Objective-C を使用する場合、なぜこれが好ましい方法なのか説明してもらえますか?

4

3 に答える 3

0

最初の例は、ラベルを Xib または Storyboard のアウトレットとして使用することを示しています。この回答は、そのケースにいくつかの光を当てています: https://stackoverflow.com/a/1236985/171933

ただし、通常、内部インスタンス変数をプロパティとして宣言する必要はありません。実際には、次のように .m ファイルに入れることで、ヘッダーから完全に移動できます。

@implementation DetailViewController 
{
    NSInteger _someValue;
    UILabel *_someLabel;
}

そうすれば、外部から見えるはずのものだけをヘッダーに保持することができます。そして、それらは通常、プロパティまたは単純な古いメソッドのいずれかです。

于 2013-10-18T20:57:09.293 に答える