Например, скажем, у меня есть класс RootViewController
и класс AnotherViewController
, и мне нужно изменить свойство в моем RootViewController
с 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
задаются как свойства друг друга).
Спасибо за пониманиеили указатели на справочные материалы, которые покрывают это.