我尝试在SecondViewController
中创建如下方法:
-(void)setValue:(NSMutableArray*)array
{
//NSMutableArray *newArray = [[NSMutableArray alloc] init];
newArray = [array retain];
}
并使用名为second FirstViewController
的对象从SecondViewController
传递值:
[second setValue:existingArray];
existingArray
是一个NSMutableArray。
可能出现什么问题?
答案 0 :(得分:3)
在代码中,您已将数组设置为second
的“SecondViewController
”对象。
所以你需要使用该对象来显示SecondeViewController
,否则它将不会显示数组。
检查以下代码。
// In the FirstViewController
- (void)buttonClicked:(id)sender{
SecondViewController *second = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle: nil];
[second setValue:existingArray];
[self.navigationController pushViewController:second animated:YES];
[second release];
}
在代码中,我将数据分配给“second”对象中的数组,并且我正在使用该对象来显示控制器。
此致
Satya
答案 1 :(得分:0)
您可以使用属性而不是您在那里的setter(看起来很糟糕)。问题是你真的需要在数组上做一个副本还是保留就足够了?
在SecondViewController中创建一个NSMutableArray * myArray作为局部变量。添加属性@property(nonatomic,retain)NSMutableArray * myArray;在界面中。
合成它并设置它只需调用[mySecondViewController setMyArray:newArray];
如果你已经正确地实例化了SecondViewController,并且你想要发送的数组不是nil那么它应该可以工作。
如果你这样做:
-(void)setValue:(NSMutableArray*)array
{
NSMutableArray *newArray = [[NSMutableArray alloc] init];
newArray = [array mutableCopy];
}
newArray是在SetValue方法中声明的变量,在程序退出setValue方法后,newArray变量将不再可访问。你也泄漏了内存,因为永远不会释放newArray。