NSMutableArray 인스턴스에 접근시 EXC_BAD_ACCESS 발생.
Dev/iOS 2011. 9. 23. 17:53Model 클래스에서 데이터 베이스의 내용을 읽어 NSMutableArray 로컬 변수에 채운후 클래스 멤버 변수로 대입 후 다른 뷰 콘트롤러에서 해당 배열에 접근을 시도 하였더니 EXC_BAD_ACCESS 에러가 발생 되었다.
원인은 데이터 베이스에서 읽어온 데이터를 저장 중이던 배열을 release해준것으로 보인다.
@interface Model : NSObject {
NSMutableArray _array;
}
@property (retain) NSMutableArray * _array;
@end
@implemention Model
...
- (void)readDatabase {
...
NSMutableArray localArray = [[NSMutableArray alloc] initWithCapacity:sqlite3_data_count(statement)];
// database에서 읽어온 데이터를 localArray에 채워 넣는다.
_array = localArray;
[localArray release];
}
위와 같이 release 코드를 삭제 해주면 해달 오류는 발생하지 않는데 아직 정확한 원인을 이해하지 못하겠다.
아직 Object-C 에서 메모리 관리가 정확히 어떻게 되는지 감이 안온다.
메모리 관리에 관련된 부분을 좀 더 자세히 공부해봐야겠다.
뭔진 모르지만 C언어의 그것과 굉장히 헷갈리고 매치가 되질 않는데 뭘가를 잘못 생각하고 있는듯 하다.
위와 같은 원인에 대하여 아시는 분 있으시면 좀 알려주세요 !!
원인은 데이터 베이스에서 읽어온 데이터를 저장 중이던 배열을 release해준것으로 보인다.
@interface Model : NSObject {
NSMutableArray _array;
}
@property (retain) NSMutableArray * _array;
@end
@implemention Model
...
- (void)readDatabase {
...
NSMutableArray localArray = [[NSMutableArray alloc] initWithCapacity:sqlite3_data_count(statement)];
// database에서 읽어온 데이터를 localArray에 채워 넣는다.
_array = localArray;
}
위와 같이 release 코드를 삭제 해주면 해달 오류는 발생하지 않는데 아직 정확한 원인을 이해하지 못하겠다.
아직 Object-C 에서 메모리 관리가 정확히 어떻게 되는지 감이 안온다.
메모리 관리에 관련된 부분을 좀 더 자세히 공부해봐야겠다.
뭔진 모르지만 C언어의 그것과 굉장히 헷갈리고 매치가 되질 않는데 뭘가를 잘못 생각하고 있는듯 하다.
위와 같은 원인에 대하여 아시는 분 있으시면 좀 알려주세요 !!
'Dev > iOS' 카테고리의 다른 글
iOS Provisioning Profile 만료시 갱신법. (0) | 2011.09.27 |
---|---|
xcode 버전 관리 기능. (0) | 2011.09.27 |
iOS Coverflow Control (0) | 2011.09.23 |
SQLite3를 이용해 실제 Device에서 실행시 오류. (0) | 2011.09.22 |
iOS에서 SQLite3에 이미지 저장하는 방법 : 링크 (0) | 2011.09.22 |