Objective c 同一UIViewController的多个实例

Objective c 同一UIViewController的多个实例,objective-c,uiviewcontroller,uinavigationcontroller,Objective C,Uiviewcontroller,Uinavigationcontroller,我有一个UIViewController,它的根在UINavigationController中。我在那里做的是实例化另一个相同类型的UIViewController,设置一些属性并将其推到堆栈顶部 这里的问题是父视图控制器也在更改其属性 我是这样做的: RootViewController *rootViewController = [[RootViewController alloc] initWithRequest:request]; [self.navigationController

我有一个
UIViewController
,它的根在
UINavigationController
中。我在那里做的是实例化另一个相同类型的
UIViewController
,设置一些属性并将其推到堆栈顶部

这里的问题是父视图控制器也在更改其属性

我是这样做的:

RootViewController *rootViewController = [[RootViewController alloc] initWithRequest:request];
[self.navigationController pushViewController:rootViewController animated:YES];

为什么会这样?这不是在创建视图控制器的新实例并将相同的精确属性复制到不同的对象实例中吗?

两个视图控制器现在都有一个指向相同的
请求
对象的指针。您所做的任何更改都会反映在两个控制器中。如果控制器能够修改,您可能需要复制
请求
对象

哦。。为什么呢?
alloc init
没有实例化一个新的不同对象吗?或者Objective-C中的默认值与C/C++中的不同?我尝试在
request
上使用
copy
属性,但没有成功。那么我如何复制它呢?您只分配/初始化了视图控制器。这是一个不同的对象,但从问题中有限的信息来看,控制器中显示的内容可能取决于
请求的属性,您没有描述这些属性。如果是自定义对象,则需要自己实现复制。有关详细信息,请参阅NSCopying协议。是-我已从AppDelegate分配了它。然后再从应用程序本身内部,如上所示。这不是意味着两个不同的对象具有相同属性的不同副本吗?请求保存一个
NSURLRequest
。它在视图控制器内的
UIWebView
中处理。这里是属性:
@property(非原子,强)NSURLRequest*request。我要怎么复制?使用
NSCopying
?(非原子,复制)但你失去了我一点。我为您的问题添加了一条注释,请通过编辑您的问题来回答。您所说的“父视图控制器也在更改其属性”到底是什么意思?返回到父视图控制器时会发生哪些更改?我假设在视图控制器的某个地方,您能指出这个代码片段的位置吗。