因此,我有一组学生姓名。我正在运行测试数据,因此我要遍历分配和初始化每个学生的循环,然后将其扔到stuArr中-如果我NSLog我的Student.h init()方法,它将为我提供我期望的名称,但是当我尝试调用时他们在我的方法之外,我得到空值:

- (void)viewDidLoad
{
    [super viewDidLoad];
    for (int i = 0; i < 5; i++) {
        stuArr = [stuArr arrayByAddingObject:[[Student alloc] init]];
        id test = [stuArr objectAtIndexedSubscript:i];
        NSLog(@"%@", [test stuName]);
    }
}

我在这里缺少重要的东西吗?如果需要的话,我可以放入Student.m文件,但在那里一切似乎都很好。

最佳答案

我猜你应该在这行之前分配+ init stuArr:

stuArr = [stuArr arrayByAddingObject:[[Student alloc] init]];

或尝试执行以下操作:
- (void)viewDidLoad
{
    [super viewDidLoad];

    NSMutableArray *mutStudentsArray = [NSMutableArray array];

    for (int i = 0; i < 5; i++)
    {
        [mutStudentsArray addObject:[[Student alloc] init]];
        id test = [mutStudentsArray objectAtIndex:i];
        NSLog(@"%@", [test stuName]);
    }

    stuArr = [NSArray arrayWithArray:mutStudentsArray];
}

07-27 22:27