Разве плохо установить два представления в SplitView для хранения ссылки друг на друга?
В настоящее время я пишу программу RSS, в которой представления моего splitViewController должны общаться друг с другом. Оба они в настоящее время содержат собственный экземпляр, объявленный в делегате приложения, как указано ниже. Я хочу знать, если это плохая практика программирования, и что я должен сделать, чтобы избежать этого, если так?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
FCListViewController *lvc = [[FCListViewController alloc]initWithStyle:UITableViewStylePlain];
UINavigationController *masterNav = [[UINavigationController alloc] initWithRootViewController:lvc];
FCContentViewController *cvc = [[FCContentViewController alloc] init];
/*----------------------------------------- */ //<---------My question lies here
[lvc setContentViewController:cvc];
[cvc setListViewController:lvc];
/-----------------------------------------/
//[lvc setWebViewController:wvc];
//[[lvc navigationItem]setTitle:@"Falcon RSS Feed"];
// [[self window] setRootViewController:masterNav];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
UINavigationController *detailNav = [[UINavigationController alloc] initWithRootViewController:cvc];
NSArray *vcs = [NSArray arrayWithObjects:masterNav, detailNav, nil];
UISplitViewController *svc = [[UISplitViewController alloc] init];
[svc setDelegate:cvc];
[svc setViewControllers:vcs];
[[self window]setRootViewController:svc];
[[svc view] setBackgroundColor:[UIColor clearColor]]; //eliminates annoying black background for the listViewController when rotated
}
else{
[[self window] setRootViewController:masterNav];
}
UIColor *blueHue = [UIColor colorWithRed:.2 green:.3 blue:.5 alpha:.7];
self.window.backgroundColor = blueHue; //Sets upper most background.. noticed when rotating
[self.window makeKeyAndVisible];
return YES;
}
1 ответ
Если я правильно понимаю ваш вопрос, вы можете сделать это, но если это истинная круговая ссылка и оба свойства являются "сильными", то у вас может возникнуть ситуация, когда они никогда не будут освобождены. Из-за этого, если у вас есть обратная ссылка на объект, то вы хотите использовать "слабый", чтобы он не увеличивал счет удержания и не удерживал его, когда он должен быть уничтожен.