2011-10-20 2 views
0

속성에 NSMutableArray를 할당하기 위해 다음 코드를 구현했습니다. -iOS - NSMutableArray는 속성을 설정할 때 경계를 벗어난 객체를 보여줍니다.

NSMutableArray * anArray = [responseDictionary valueForKeyPath:@"tags"]; 
    NSLog(@"The array length is=%d",[anArray count]); 
    for (NSString *s in anArray) { 

     NSLog(@"you are %@", s); 

    } 
    [self setActiveTagArray:anArray]; 

문자열 값을 출력합니다. 그러나 setter 함수에서 중단 점을 배치하면 두 개의 객체가 있지만 "범위를 벗어났습니다"는 것을 알 수 있습니다. 이것은 무엇을 의미 하는가? 내가 뭘 잘못하고 있죠? 내 getter도 값을 가져 오지 않습니다. 속성 함수 -

-(void)setActiveTagArray:(NSMutableArray *)tags 
{ 
    activeTagArray = [[NSMutableArray alloc] init]; 
    activeTagArray = tags; 
    //NSLog(@"%@",[activeTagArray count]); 
} 

-(NSMutableArray *)getActiveTagArray 
{ 
    return activeTagArray; 
} 
+0

어디에서 중단 점을 배치합니까? setter에서 새 배열을 할당하고 초기화 할 필요가 없습니다. **를 지정하고 ** 새 참조를 보유합니다. 또한 이전 버전을 ** 릴리스해야합니다. –

+1

@ user971401,이 코드가 ARC 아래에 있다면 'release'를 사용하면 안됩니다. "범위를 벗어났습니다"라는 말은 디버거 메시지입니다. 'NSLog' setter에서 두 번째 배열을보십시오. – beryllium

+0

@ 베릴륨 - 나는 당신에게 대단히 감사하다고 쓰지 않았다. –

답변

0

activeTagArray는 속성뿐만 아니라 클래스 속성입니다. _activeTagArray를 클래스 변수 이름으로 사용해보십시오. 그리고 .m 파일에서 @synthesize activeTagArray = _activeTagArray;을 사용하고 두 번째 두 메서드를 완전히 얻으려고합니다.

응답 언급합니다 :

당신은 말했다 "나는 속성에있는 NSMutableArray를 할당하는 다음 코드를 구현했습니다." 나는 당신이 당신의 .h 파일에 " @property (nonatomic, retain) NSMutableArray *activeTagArray;"을 가지고 있다는 것을 의미했다. 이 경우라면 otherObject'sNameForYourClassHere.activeTagArray을 통해 액세스 할 수 있습니다.

@ 합성 액세스 생성자 & 변형 자입니다.

+0

다른 클래스의 변수에 어떻게 접근합니까? – Suchi

+0

@ Suchi. 의견에 대한 응답으로 업데이트 됨. – NJones

관련 문제