我有一个NSMutableArray
,我需要从另一个类访问它。这就是我到目前为止所做的事情;
我在NSMutableArray *muArr
文件和.h
中声明了@property(nonatomic, retain) NSMutableArray *muArr
。
@synthasize muArr;
文件中 .m
,最后填充了它:
[muArr addObject: @"First"];
现在在SecondView
我添加了导入语句#import "FirstView.h"
并写了:FirstView *frv = [[FirstView alloc]init];
然后NSLog(@"%i",[frv.muArr count]);
这些代码行是用viewDidLoad
方法编写的。当NSLog
打印出来时,我得到了0
个记录,而不是1
。
这是为什么?我做错了什么,有人可以给我看一个示例代码/教程吗?
答案 0 :(得分:1)
您正在muArr
填充didSelectRowAtIndexPath
,在您选择一行之前不会被调用。通过在FirstView上调用init
,您可以创建一个新的FirstView,然后立即检查muArr
的计数。计数为0,因为您尚未选择任何行..
答案 1 :(得分:0)
您需要在SecondView类中创建一个属性(与创建muArr的方式相同)
步骤1):让我们说arrOfSecondView并合成它
步骤2)现在您可以将muArr数据添加到arrOfSecondView
SecondView *secondView = [[SecondView alloc]init];
secondView .arrOfFirstView = muArr;
//and i guess you are pushing to secondView controller
步骤3)检查arrOfFirstView计数
答案 2 :(得分:0)
你分配数组吗?在向其中添加项目之前,必须使用
进行分配myArr = [[NSMutableArray alloc] init];
如果你不这样做,[addObject]调用不会使程序崩溃,但不会有任何影响。数组的count
将永远保持为零。
@synthesize,与流行的看法相反,不分配ivar。它只是生成一个getter方法,并且可选地,在类中生成一个setter方法。