티스토리 뷰

iOS/에라고만...

[iOS] mutating method sent to immutable object

감성개발자 썩소천사 2015. 8. 27. 12:01
반응형


추가 데이터를 계속해서 받는 배열을 property로 선언 후 객체를 추가 할 경우 오류 발생.


ㅁ. 에러 형태

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'

*** First throw call stack:


ㅁ. 소스 코드

// 테이블뷰에 사용할 배열 선언

@property (nonatomicstrongNSMutableArray *listDataAry;

// 초기화

self.listDataAry = [[NSMutableArray alloc] init];

// 배열에 초기 데이터 셋팅.

self.listDataAry = [dictionary objectForKey:@"list"];

// 배열 정보 추가.

[self.listDataAry addObjectsFromArray:[dictionary objectForKey:@"list"]];


ㅁ. 문재 해결

// 테이블뷰에 사용할 배열 선언

@property (nonatomicstrongNSMutableArray *listDataAry;

// 배열에 초기 데이터 셋팅시 NSMutableArray 객체로 한번 더 감싸 할당.

self.listDataAry = [NSMutableArray arrayWithArray:[dictionary objectForKey:@"list"]];

// 배열 정보 추가.

[self.listDataAry addObjectsFromArray:[dictionary objectForKey:@"list"]];


ㅁ. 마무리

property선언 후 alloc할 경우 메모리에 공간이 할당되어 문제 없을 것이라 생각했는데,

property 선언 하였을 경우 초기 메모리 할당을 위해 초기화가 필요했다.

또한 객체를 alloc init을 할 필요가 없었다.

property를 하지 않을 경우에는 필요하겠지만 말이다.



반응형
댓글
댓글쓰기 폼
공지사항