从另一个类访问NSMutableArray

时间:2011-09-28 16:43:49

标签: objective-c cocoa-touch properties nsmutablearray

我有一个NSMutableArray,我需要从另一个类访问它。这就是我到目前为止所做的事情;

  1. 我在NSMutableArray *muArr文件和.h中声明了@property(nonatomic, retain) NSMutableArray *muArr

  2. @synthasize muArr;文件中
  3. .m,最后填充了它:

    [muArr addObject: @"First"];

  4. 现在在SecondView我添加了导入语句#import "FirstView.h"并写了:FirstView *frv = [[FirstView alloc]init];然后NSLog(@"%i",[frv.muArr count]);

  5. 这些代码行是用viewDidLoad方法编写的。当NSLog打印出来时,我得到了0个记录,而不是1

    这是为什么?我做错了什么,有人可以给我看一个示例代码/教程吗?

3 个答案:

答案 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方法。