如何访问已在不同类中保湿的NSMutableArray? 有我的示例代码:
Class1.h:我有一个iVar NSMutableArray *anArray
;
我在@synthesize anArray;
Class1.m
在RootViewController中,我导入了Class1.h
并添加了@Class "Class1";
在界面中,我在Class1 *aClass1;
我RootViewController.m
和@synthesize
ViewWillAppear
aClass1 = [[Class1 alloc] init];
aClass1.anArray = [[NSMutableArray alloc] initWithObjects: @"string1",@"string2",nil];
NSLog(@"aClass1.anArray is Class1 %@",aClass1.anArray); // It works as I expected
现在在新类我称之为DetailsViewController
与导入.h和RootViewController.h
的{{1}}相同。
同样在@class "Class1";
我导入了DetailsViewController.m
所以现在在DetailsViewController中我尝试在viewWillAppear
中执行此操作"Class1.h"
我已在此地址中添加了此示例项目:http://www.epicdesign.com.au/test2.zip
答案 0 :(得分:1)
在将其推入导航控制器之前,您只是忘记设置详细信息视图控制器的aClass1 ivar。以下是didSelectRowAtIndexPath方法中应该包含的代码:
DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
// ...
// Pass the selected object to the new view controller.
detailViewController.aClass1 = aClass1; // this line was added
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
添加上面添加的行后,您的数组现在将在详细视图控制器中正确显示。
答案 1 :(得分:0)
您正在访问尚未在Class1.h中声明的属性,因此您必须添加:
@property (nonatomic, copy) NSMutableArray *anArray;
因为它应该工作,我宁愿不传递任何NSMutableArray作为参数。你最好在Class1.h中声明一个NSArray属性,将它传递给你的方法,然后mutableCopy
在你想要对数组进行修改的地方(仅在方法内部)。请记住,mutableCopy和copy会增加数组的保留计数,因此必须在完成后释放它。