为什么NSMutableArray不起作用?

时间:2015-04-26 12:36:43

标签: ios objective-c nsmutablearray

我有一个类的NSMutableArray,而在其他类中我想初始化它并添加各种对象。但问题是NSMutableArray并没有保留这些元素。我有以下代码:

 -(void)viewDidLoad
  {
    [super viewDidLoad];
    MyStops *myStops = [self.storyboard instantiateViewControllerWithIdentifier:@"My Stops"];
    myStops.myStopsMArray = [[NSMutableArray alloc] init];
  }

这一个:

- (void) addToFavourites:(id)sender 
  {
    UITapGestureRecognizer *gesture = (UITapGestureRecognizer *) sender;

    NSInteger tag = gesture.view.tag;

    UITableViewCell *cell = [stopsTable dequeueReusableCellWithIdentifier:@"cell"];

    MyStops *myStops = [self.storyboard instantiateViewControllerWithIdentifier:@"Mis Paradas"];

    [myStops.myStopsMArray addObject:[stopsArray objectAtIndex:tag]];
 }

在另一个文件中,我声明并合成了NSMutableArray:

//Header file
@property (nonatomic, retain) NSMutableArray *myStopsMArray;

//Implementation file
@synthesize myStopsMArray;

你能告诉我,我做错了什么吗? 谢谢!

2 个答案:

答案 0 :(得分:1)

instantiateViewControllerWithIdentifier每次创建并返回NEW INSTANCE! 所以你必须有一个指向该视图控制器的直接指针。 在当前类的头文件中创建一个属性:

@property (strong, nonatomic) MyStops *myStopsVC;

注意: 如果您当前的ViewController已经从strong展示,请将weak更改为MyStops。但是,如果您要从此vc推送/显示MyStops,请将其保留为strong指针。

答案 1 :(得分:0)

您有MyStops ViewController的两个不同实例,这就是原因。

在你viewDidLoad中,然后创建一个MyStops ViewController alloc / init其“myStopsMArrayNSMutableArray

但是在您addToFavorites方法中,您创建了另一个不同的全新 MyStops实例 - 您没有alloc / {{1你init属性。因此,在该方法中,myStopsMArray仍为myStops.myStopsMArray