我有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/

10-12 04:02