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将为零,因为您正在第一个视图中初始化和添加对象,并希望在第二个视图中使用。