0

私は最近、ViewControllersのプロパティだけでなくivarを宣言する必要がなくなったという投稿を読み、重複する宣言をコードから削除していることに気づきました。

私が気付いた本当に不可解な効果は、プロパティに宣言されたivarがない場合、その前に次のようにする必要があるということself.です。

CustomVC.h:

@interface CustomVC : UIViewController <UITableViewDelegate,UITableViewDataSource> {
...
@property (nonatomic, strong) IBOutlet UITableView *itemsTableView;

CustomVC.m:

[itemsTableView reloadData]; // cellForRowAtIndexPath not called
[self.itemsTableView reloadData]; // table view refreshed as expected

なしで変数にアクセスする際に問題が発生した場合はself.、コンパイル時または実行時エラーが発生すると予想されますが、黙って失敗するようで、デバッグが困難になります。

4

1 に答える 1

1

ivar(直接アクセス)を呼び出してself.myIvar(アクセサーメソッド-プロパティ-)を使用することは同じではありません。

直接ivarアクセス​​を使用している場合、オブザーバーに通知しないため、一部のイベントはトリガーされません。self.myIvarを使用するのが常に最善です(ただし、同意しない人もいます)。

非常に詳細で非常に興味深いリンクの答えを読んでください。

もう1つの良い点は、次のようなプロパティを合成することです。

@synthesize myIvar = myIvar_;

これにより、誤ってivarに直接アクセスすることを回避できます(「自己」を忘れる)。

于 2012-03-31T12:43:29.560 に答える