访问多维数组索引时的内存问题

时间:2014-07-28 23:18:31

标签: objective-c arrays multidimensional-array

我已经将可变数组分配为:

self.allisonHall.hours = [[NSMutableArray alloc] initWithCapacity:7];

并填充数据:

self.allisonHall.hours = @[
                           @[
                               @[@600,@780],
                               @[@1005,@1170]
                           ],
                           @[
                               @[@450,@585],
                               @[@705,@795],
                               @[@1005,@1140]
                           ],
                           @[
                               @[@450,@585],
                               @[@705,@795],
                               @[@1005,@1140]
                           ],
                           @[
                               @[@450,@585],
                               @[@705,@795],
                               @[@1005,@1140]
                           ],
                           @[
                               @[@450,@585],
                               @[@705,@795],
                               @[@1005,@1140]
                           ],
                           @[
                               @[@450,@585],
                               @[@705,@795],
                               @[@1005,@1140]
                           ],
                           @[
                               @[@645,@810],
                               @[@1005,@1170]
                           ],
                        ];

当我尝试使用代码访问元素时     int open = _hours [0] [i] [0];

int open = _hours[0][i][1];

其中i为2或3(取决于7个父数组中每个数组中的对象数,open被指定为146980960,显然是内存地址。调试时,命令

po open

导致600,450等 - 所有正确的数组值。 但是,当我稍后在函数中执行不等式时,它们无法按预期解析,因为在范围内open是146980960.

为什么" po"在函数中以这种方式不存在时,按预期打印变量? 我该如何解决?

由于

1 个答案:

答案 0 :(得分:2)

获取指针而不是值的原因是因为您将NSNumber而不是实际值传递给数组。换句话说,open应该是NSNumber,您可以使用其中一种方法(例如intValue)来获取实际值。希望这有帮助!