Question: I have `AViewController` which is a rootViewController in it's navigationController.
In `AViewController`， i have a `objectA`, i declare it like this:

```
@interface AViewController : ParentVC 
@property (strong, nonatomic) ObjectA *objectA;
@end 

```

I also have a `BViewController`, declared similar like this: 

```
@interface BViewController : ParentVC 
@property (strong, nonatomic) ObjectA *objectA;
@end 

```

---

What i did is, in `AViewController`:

```
if (!_objectA)
    {
        _objectA = [ObjectA new];
    }
BViewController *bViewController = [[BViewController alloc] init];
bViewController.ojectA = _objectA;
[self.navigationController pushViewController:bViewController animated:YES];

```

While in `BViewController`, when i do this:

```
[self.navigationController popToRootViewControllerAnimated:NO];
        self.objectA = nil;

```

---

But the problem is, when i back into `AViewController`, the `objectA` is still not nil. It seems that i niled the objectA just in `BViewController`. These two objectA are separated.
What i really want to do is, in `BViewController` just keep a point to the objectA in `AViewController`.
How can i reach this? Thanks in advance.

Answer: 
You should set it to weak rather than strong in BViewController, BViewController does not own the object, AViewController does...

Is there a good reason to nil out AViewcontrollers pointer to this object? This is not safe object management IMHO 

edit addition..
ok after reading your comments i really think you should write a protocol, your design can be improved {or, as this is subjective, lets say more 'apple-like' :) }

i think you should add a protocol in BViewController.h 

```
@protocol <NSObject> BViewControllerDelegate

-(void)viewControllerDidLogout:(BViewController *)controller;

@end

```

and inside BViewController's interface

```
@property id <BViewControllerDelegate> delegate

```

AViewController can adopt this protocol, set BViewControllers delegate to self before pushing it, then BViewController can use this to communicate back. Alternatively you could post a notification..
try this: AViewController 's objectA is weak. and refer to B's objectA;

```
@interface AViewController : ParentVC 
@property (weak, nonatomic) ObjectA *objectA;
@end

BViewController *bViewController = [[BViewController alloc] init];
bViewController.objectA = [ObjectA new];
self.objectA = bViewController.objectA;
[self.navigationController pushViewController:bViewController animated:YES];

```