たとえば、RootViewController
クラスとクラスがあり、 fromAnotherViewController
のプロパティを変更する必要があるとします...「RootViewController」プロパティを(そのインスタンス変数にアクセスできるように) 持つことは安全ですか?RootViewController
AnotherViewController
AnotherViewController.h
@interface AnotherViewController : UIViewController {
RootViewController *rootViewController;
}
@property (nonatomic, retain) RootViewController *rootViewController;
@end
@implementation AnotherViewController
@synthesize rootViewController;
- (void)someMethod {
// set the data was added flag, so the rootViewController knows to scroll to the bottom of the tableView to show the new data
self.rootViewController.dataWasAdded = YES;
// if the user came in via a search result, make the search controller's tableView go away
self.rootViewController.searchDisplayController.active = NO;
}
それが良い考えではない場合、誰かが理由を説明できますか?
上記のコードでは、プロトコル/デリゲートを使用して同じことを処理できたことがわかっています。おそらくそうすべきだと思います。しかし、私が読んだ本や他の資料のどれも、これについて実際に議論していません.
私が尋ねている理由は、アプリをユニバーサルにする過程にありUISplitViewController
、ユーザーが「詳細ビュー」で変更を加えると、「マスター ビュー」を頻繁に更新する必要があることに気付きました。だから、私は簡単なルートを取り、UIViewControllers
プロパティとして設定を開始しました...しかし、追跡が難しいメモリリークと時折のクラッシュが発生しています。「循環参照」について何か読んだことがありますが、それが問題の一部である可能性があるのではないかと思います(UIViewControllers
お互いのプロパティとして設定されている場所がいくつかあります)。
これをカバーする参考資料への洞察、またはポインタをありがとう。