2011-07-28 3 views
0

yArray에 값을 추가하려고합니다. 그러나 NSLog에서는 항상 null이 표시됩니다. NSMutableArray (yArray)를 합성하고 컴파일 할 때 오류나 경고가 표시되지 않습니다. 한 가지 이유는 배열을 초기화하지 않는다는 것입니다. @synthesize가 초기화되지 않는 곳을 읽었습니다. 그러나, 나는 초보자이고 제대로 배열을 초기화하는 방법을 모르겠습니다. 나는 구글에서 그것을 연구했지만 그것을 알아낼 수 없었다. 누군가가 나와 어떻게 올바른 방향으로 나를 가르키는지 말해 줄 수 있습니까? 아래 코드 중 일부를 게시했습니다. 미리 감사드립니다.addObject를 사용할 때 NSMutableArray가 null을 제공합니다.

for (int i = 0; i < n; ++i) 
{ 
    xx = xx + [[self.yArr1 objectAtIndex:i] doubleValue]; 
} 

for (int i = 0; i < n; ++i) 
{ 
    if(i==0) 
     [self.yArray addObject:[NSNumber numberWithDouble:(0.0)]]; 
    else 
    { 
     bb = fabs([[self.yArr1 objectAtIndex:i] doubleValue]- [[self.yArr1 objectAtIndex:(i-1)] doubleValue]); 
     [self.yArray addObject:[NSNumber numberWithDouble:(bb)]]; // This is the problem. 
     yy = yy + [[self.yArray objectAtIndex:i] doubleValue]; 
    } 
    NSLog(@"prediction %f, %f, %@, %f", bb, yy, [self.yArray objectAtIndex:i],[[self.yArr1 objectAtIndex:i] doubleValue]); 
} 
NSLog(@"prediction %f, %f", bb, yy); 

답변

1

제대로 배열 한 후 다시 시도

NSMutableArray* yArray = [[NSMutableArray alloc] init]; 

은 (아마도 init 방법 또는 그런 일에) 그것을 사용하기 전에 초기화 사용 초기화합니다. 완료했을 때 수동으로 릴리즈하는 것을 잊지 마십시오.

+0

정말 고마워요. 나는 꽤 바보 같다고 느낀다. 나는 그 누군가가 성명서를 지적 할 필요가 있다고 생각한다. self.yArray = [[NSMutableArray alloc] init]; 은 배열을 초기화하는 것을 의미합니다. – John

0

코드를 addObject 코드보다 먼저 치는 위치에서 초기화하십시오. 예 :

yArray = [[NSMutableArray alloc] init]; 
+0

답장을 보내 주셔서 대단히 감사합니다. 이것은 정말로 많은 시간을 절약 해주었습니다. 이후, 나는 초기화라는 용어에 관해서는 단서가 없었다. 초기화를 의미하는 것을 알지 못했습니다. – John

관련 문제