2011-07-12 44 views
0

我在我的rootviewcontroller中有一个NSMutableArray,它充满了问题对象,其中每个问题都包含必要的问题文本,它的选项和选择的值(如果问题还未回答,则为null)iPhone传递对象引用UIViewcontroller

我也有其他的uiview xib,我根据questiontype推送到导航控制器。

当需要一个要问的问题我想相关的问题变量传递给相关的.xib

但我要传递的变量的对象引用,所以当用户编辑,输入一些值,这个问题,我不想发回任何值,但能够直接从该viewcontroller子类设置我的问题变量的值(通过referanace)

那么什么是正确的方式来声明@property和正确的方式初始化我的uiviewcontroller?

在下面的代码中,该变量在rootviewcontroller数组中的值是否也发生了变化?我想不是因为它看起来像我在那里通过价值而不是通过参考,我该如何改变它?

在rootview控制器:

MultiSelectionTableViewController *multiSelectionViewController =[[MultiSelectionTableViewController alloc] initWithNibName:@"MultiSelectionTableViewController" bundle:nil]; 

NSMutableArray *variableitems; 

    multiSelectionViewController.question=variableItems[0]; 

和uiviewsub控制器:

Question * question; 
@property(nonatomic, retain); 
[email protected]"answer"; 

还做你的建议使用NSManagedObjects或在此arctitecture任何coredata?这些问题是从XML中解析出来的,并且会回传为XML。

回答

2

Objective C中的所有对象都通过引用传递,除非将该属性定义为副本。因此,在其他视图控制器中的variableItems[0]中的任何更改都会影响调用视图控制器中的对象。如果variableItems[0]是一个对象指针。

如果使用对象列表,需要存储数据,那么明智地使用CoreData。

+0

variableItems [0]是一个充满问题的nsmutable数组。 – Spring

+0

然后,使用它们的视图控制器之间的变量itemsItems [0]中的项目中的任何更改都会受到影响。 – karim

-1

试用assign财产。这可以通过引用发送对象。

+0

@Downvoter你能解释为什么吗? – Spring