Objective c NSArray“超出范围”

Objective c NSArray“超出范围”,objective-c,nsarray,Objective C,Nsarray,h m 我使用断点并发现数组是正常的,但m_plistData没有值,显示超出范围,我不理解为什么nn可以获得正常值。数组是一个局部引用变量。它只会持续到viewDidLoad方法。现在, m_plistData = array; 上面的陈述并不是一个深刻的复制品。这只是一个肤浅的复制品 - (void)viewDidLoad { NSArray *array = [[NSArray alloc]initWithObjects:@"0",@"1",@"2",@"3",@"4",@

h

m

我使用断点并发现数组是正常的,但m_plistData没有值,显示超出范围,我不理解为什么nn可以获得正常值。数组是一个局部引用变量。它只会持续到viewDidLoad方法。现在,

m_plistData = array;
上面的陈述并不是一个深刻的复制品。这只是一个肤浅的复制品

- (void)viewDidLoad
{   
    NSArray *array = [[NSArray alloc]initWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14", nil];    
    m_plistData = array;
    NSArray *nn = m_plistData;    
    [super viewDidLoad];    
} // Both the array, nn references cease to exist after this point.
  // So having references to it leads to run-time exception if used else where.
如果您的目标是在m_plistData中包含元素,请直接执行-

m_plistData = [[NSArray alloc]initWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14", nil];    
尝试以下方法:

m_plistData = [array copy];

这样做,因为您有一个NSA阵列:


为什么需要NSArray*阵列?直接分配给mu plistData,我试过这样:mu plistData=[[NSArray alloc]initWithObjects:@0、@1、@2、@3、@4、@5、@6、@7、@8、@9、@10、@11、@12、@13、@14、nil];[m_plistData retain];但它仍然在范围之外,我无法得到values@Gaojian-什么超出范围?您试图在哪里访问参考m_plistData?它只能用于它的接口作用域。好的,我只想声明一个数组来存储我的数据,并在我的tableview中显示这些数据。那么我如何才能将我的数据分配给数组。@Gaojian-我说的应该行得通。您得到的确切错误消息是什么?
m_plistData = [[NSArray alloc]initWithObjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12",@"13",@"14", nil];    
m_plistData = [array copy];
if(array)
{
  m_plistData = [NSArray arrayWithArray:array];
}