例如,假设我有一个RootViewController
类和一个AnotherViewController
类,并且我需要更改我的RootViewController
from中的一个属性AnotherViewController
……在其中有一个“RootViewController”属性是否安全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
被设置为彼此的属性)。
感谢您提供任何见解或指向涵盖此内容的参考材料。