我有AViewController
,它是navigationController中的rootViewController。
在AViewController
中,我有一个objectA
,我这样声明:
@interface AViewController : ParentVC
@property (strong, nonatomic) ObjectA *objectA;
@end
我也有一个
BViewController
,声明像这样:@interface BViewController : ParentVC
@property (strong, nonatomic) ObjectA *objectA;
@end
我所做的是在
AViewController
中:if (!_objectA)
{
_objectA = [ObjectA new];
}
BViewController *bViewController = [[BViewController alloc] init];
bViewController.ojectA = _objectA;
[self.navigationController pushViewController:bViewController animated:YES];
在
BViewController
中时,当我这样做时:[self.navigationController popToRootViewControllerAnimated:NO];
self.objectA = nil;
但是问题是,当我回到
AViewController
时,objectA
仍然不为零。看来我只是在BViewController
中取消了objectA。这两个objectA是分开的。我真正想做的是,在
BViewController
中仅指向AViewController
中的objectA。我怎样才能做到这一点?提前致谢。
最佳答案
您应该在BViewController中将其设置为弱而不是强,BViewController不拥有该对象,而AViewController拥有...
是否有充分的理由取消AViewcontrollers指向该对象的指针?这不是安全的对象管理恕我直言
编辑添加..
确定,在阅读您的评论后,我真的认为您应该编写一个协议,可以改进您的设计(或者,因为这是主观的,所以可以说更多“类似苹果的概念” :))
我认为你应该在BViewController.h中添加一个协议
@protocol <NSObject> BViewControllerDelegate
-(void)viewControllerDidLogout:(BViewController *)controller;
@end
在BViewController的界面内
@property id <BViewControllerDelegate> delegate
AViewController可以采用此协议,将BViewControllers委托设置为self,然后再推送它,然后BViewController可以使用此协议进行通讯。或者,您可以发布通知。
关于ios - 如何在其他ViewController中保持指向对象的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22061537/