Objective c 从另一个类访问NSMutableArray

Objective c 从另一个类访问NSMutableArray,objective-c,cocoa-touch,properties,nsmutablearray,Objective C,Cocoa Touch,Properties,Nsmutablearray,我有一个NSMutableArray,需要从另一个类访问它。这就是我到目前为止所做的 我在.h文件中声明了NSMutableArray*muArr,并且@属性(非原子,保留)NSMutableArray*muArr @synthasize muArr,并最终填充它: [muArr addObject:@“First”] 现在在SecondView中,我添加了import语句#import“FirstView.h”并编写了:FirstView*frv=[[FirstView alloc]init]

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

  • 我在
    .h
    文件中声明了
    NSMutableArray*muArr
    ,并且
    @属性(非原子,保留)NSMutableArray*muArr

  • @synthasize muArr.m
    文件中输入code>,并最终填充它:

    [muArr addObject:@“First”]

  • 现在在
    SecondView
    中,我添加了import语句
    #import“FirstView.h”
    并编写了:
    FirstView*frv=[[FirstView alloc]init]然后
    NSLog(@“%i”,frv.muArr计数))

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


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

    您正在
    didSelectRowAtIndexPath
    中填充
    muArr
    ,直到您选择一行后才会调用它。通过在FirstView上调用
    init
    ,可以创建一个新的FirstView,然后立即检查
    muArr
    的计数。计数为0,因为您尚未选择任何行。

    您正在
    didSelectRowAtIndexPath
    中填充
    muArr
    ,直到您选择一行后才会调用它。通过在FirstView上调用
    init
    ,可以创建一个新的FirstView,然后立即检查
    muArr
    的计数。计数为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计数,您需要在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计数

    是否分配阵列?在向其添加项目之前,必须使用

    myArr = [[NSMutableArray alloc] init];
    
    如果不这样做,[addObject]调用不会使程序崩溃,但不会产生任何效果。数组的
    计数将永远保持为零


    @与流行的观点相反,合成不分配ivar。它只是在类中生成一个getter方法,还可以选择生成一个setter方法。

    是否分配数组?在向其添加项目之前,必须使用

    myArr = [[NSMutableArray alloc] init];
    
    如果不这样做,[addObject]调用不会使程序崩溃,但不会产生任何效果。数组的
    计数将永远保持为零


    @与流行的观点相反,合成不分配ivar。它只是在类中生成一个getter方法和一个setter方法(可选)。

    在哪个方法中填充muArr(addObject:call在哪里)?我在
    didselectrowatinexpath
    中编写了它,因此当用户单击单元格/行时。执行此方法,并填充
    muArr
    。您实际创建过NSMutableArray吗??我看不到这样做的语句。您使用哪种方法填充muArr(addObject:call在哪里)?我在
    didselectRowatinedexpath
    中编写了它,因此当用户单击单元格/行时。执行此方法,并填充
    muArr
    。您实际创建过NSMutableArray吗??我没有看到这样的语句。它是这样的,当我单击一行时,
    muArr
    被填充,页面将被重定向到
    FirstView
    ,因此我需要访问
    muArr
    并获取其计数。你的意思是它被重定向到
    SecondView
    ?您的步骤如下:(1)第一视图加载,(2)用户单击一行,(3)第二视图加载,您需要检查第一视图数组的值。如果是这种情况,您需要将
    FirstView
    的引用传递给SecondView——您正在使用
    alloc
    init
    创建一个新的、不同的FirstView。就像这样,当我单击一行时,
    muArr
    被填充,页面将被重定向到
    FirstView
    ,因此,我需要访问
    muArr
    并获取其计数。您的意思是它被重定向到
    SecondView
    ?您的步骤如下:(1)第一视图加载,(2)用户单击一行,(3)第二视图加载,您需要检查第一视图数组的值。如果是这种情况,您需要将
    FirstView
    的引用传递给SecondView——您正在使用
    alloc
    init
    创建一个新的、不同的FirstView。是的,我确实分配了数组,然后只填充了valuesYes,我确实分配了数组,然后只填充了值为什么我必须这样做,这与直接访问
    muArr
    不一样吗?如果
    muArr
    返回一个计数
    0
    ,那么
    arrOfFirstView
    是否返回
    0
    ?不,muArr怎么可能是零,因为您正在第一个视图中初始化和添加对象,并希望在第二个视图中使用。为什么我必须这样做,这与直接访问
    muArr
    不一样吗?如果
    muArr
    返回的计数为
    0
    ,则不会
    arrOfFirstView
    返回
    0
    ?否,muArr将为零,因为您正在第一个视图中初始化和添加对象,并希望在第二个视图中使用。