0

我正在使用 .XIB 并且没有 ARC。我将 NSMultableArray 的值传递给另一个视图,如果我放置 [self presentModel...],它可以工作,但是如果我用按钮调用 AnotherView,AnotherView 的 NSMultableArray 的值为 null!

另一个视图.h

@interface AnotherViewController : UIViewController<UITableViewDataSource,      UITableViewDelegate>{
NSMutableArray *otherAnother;
NSMutableArray *arrayOfTheAnotherView;
}
@property (retain, nonatomic) IBOutlet UITableView *tableView;
@property (retain, nonatomic) NSMutableArray *arrayOfTheAnotherView;

另一个视图.m

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.

otherAnother = [[NSMutableArray alloc]init];
otherAnother = [[NSMutableArray alloc]initWithArray:self.arrayOfTheAnotherView];
//    [otherAnother addObjectsFromArray:arrayOfTheAnotherView]; 
NSLog(@"%@", self.arrayOfTheAnotherView);
}

NSLog 已写入“null”

当前视图.h

@interface CurrentViewController : UIViewController {
NSMutableArray * arrayCurrentView;
AnotherViewController *superAnotherView;
}
@property (retain, nonatomic) AnotherViewController *superAnotherView;

当前视图.m

@synthesize superAnotherView;
NSString *x = [[NSString alloc]initWithFormat:@"%@",[label text]];

arrayCurrentView = [[NSMutableArray alloc]init];
[arrayCurrentView retain];
[arrayCurrentView addObject:x];

self.superAnotherView = [[AnotherViewController alloc]initWithNibName:nil bundle:nil];
self.superAnotherView.arrayOfTheAnotherView = [[NSMutableArray alloc]init];
[self.superAnotherView.arrayOfTheAnotherView retain];
[self.superAnotherView.arrayOfTheAnotherView addObjectsFromArray:arrayCurrentView];

我不知道如何保留 NSMultableArray 的值,谢谢帮助。

这就是我调用另一个视图的方式:

UIButton *buttonAnother = [UIButton buttonWithType:UIButtonTypeCustom]; [buttonAnother  setTag:5]; [buttonAnother addTarget:self action:@selector(switchTabBar:) forControlEvents:UIControlEventTouchDown]; 
[tabBarViewController.view addSubview:buttonAnother];
- (IBAction)switchTabBar:(id)sender { switch ([(UIButton *)sender tag]) { case 5:     [self.tabBarController setSelectedIndex:0]; break; }
4

2 回答 2

0

这些应该不是必需的:

self.superAnotherView.arrayOfTheAnotherView = [[NSMutableArray alloc]init]; 
[self.superAnotherView.arrayOfTheAnotherView retain];

初始化类时,属性已经初始化。

事实上,您的显式保留行根本不需要;据我所知,您并没有释放它们,只是将保留计数设为 2,因此必须释放两次。

我认为这里发生了一些事情,没有按照您想要的顺序调用方法和视图控制器,可能与标签栏有关。

于 2012-08-31T01:59:18.287 回答
0

我发现了!我正在使用 MVC APP 委托的数组不会失去它的价值。AppDelegate NSMutableArray *arrayDelegate; View.m AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate]; [appDelegate.arrayDelegatePedido addObject:@"title"]; //例如

于 2012-09-13T16:04:40.567 回答