'error'에 해당되는 글 3건

  1. 2011.10.21 xcode Update 후 빌드가 오류.
  2. 2011.09.23 NSMutableArray 인스턴스에 접근시 EXC_BAD_ACCESS 발생.
  3. 2011.09.22 SQLite3를 이용해 실제 Device에서 실행시 오류.

xcode Update 후 빌드가 오류.

Dev/iOS 2011. 10. 21. 00:46


xcode 를 iOS5 에 맞추어 4.2로 올렸다.
그런데 잘 컴파일 더된 소스에서 에러가 발생.

Apple Mach-O Linker Error
 

와 함께 경고들이 5개 정도 나타났다.
구글에 검색해본 결과 다양한 원인이 있는걸로 보인다.
타겟 디바이스 설정이니, 컴퍼일러 설정, 프로젝트 클린 후 재빌드 하라니...

내 경우에는 링크되던 위치가 4.3에서 5.0으로 변경되어 링크가 정상적으로 되질 않아 발생된 오류로 보인다.

해결 방밥은 경로를 다시 설정해 주는 것으로 정상적으로 빌드가 되었다.
네비게이터에서 프로젝트 파일 선택 후 타겟을 해당 프로젝트로 선택- Build Settings에서 Library Search Paths를 검색해서 경로를 변경해준다.


빌드하면 정상적으로 완료.

ps. 버전마다 라이브러리가 계속 달라지는게 아닐것 같은데 왜 기존에 사용하던 링크가 깨지도록 폴더를 변경하는지 이해가 되질 않는다. 아니면 매크로와 같은것으로 상대 경로를 지정하도록 해주어야 할것 같은데, 내가 방법을 모르는 것인다... 하여튼 iOS 버전 올라가고 xcode 업그레이드 할 때마다 이런 현상이 있는것 같아 상당히 불편하다. 아직 내가 맥쪽 프로그래밍툴에 익숙치 않아서 일까? Visual Studio 사용할때도 종종 있기야 했지만... 변환같은 기능으로 원만하게들 했던것 같은데... 하여튼 불필요한 시간낭비로 생각된다.


 

'Dev > iOS' 카테고리의 다른 글

graph 관련 라이브러리  (0) 2011.10.22
tapku 달력 라이브러리 튜토리얼.  (0) 2011.10.22
NSDate NSDateComponents  (0) 2011.10.20
테이블 화면이 안나타는 현상.  (0) 2011.10.20
NSDate 데이터 조작 방법.  (0) 2011.10.18
:

NSMutableArray 인스턴스에 접근시 EXC_BAD_ACCESS 발생.

Dev/iOS 2011. 9. 23. 17:53


Model 클래스에서 데이터 베이스의 내용을 읽어 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언어의 그것과 굉장히 헷갈리고 매치가 되질 않는데 뭘가를 잘못 생각하고 있는듯 하다.

위와 같은 원인에 대하여 아시는 분 있으시면 좀 알려주세요 !!
 
:

SQLite3를 이용해 실제 Device에서 실행시 오류.

Dev/iOS 2011. 9. 22. 17:33


error 내용 )
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1

SQLite3 라이브러리를 사용하는 코드를 작성중. 시뮬레이터에서는 정상 작동하는 코드가 실제 디바이스 타겟으로 잡아 놓고 실행시 위와 같은 오류 메시지를 뱉어내며 빌드가 실패한다.

문제점 )
프로젝트의 Build Settings 의 Library Search Paths 가 기본으로 시뮬레이터의 경로로 설정되어 있는 경우에 발생 되는듯 하다.

해당 위치 : 프로젝트 루트 선택 -> TARGETS중 해당 타겟 선택



해결책 )
해당 위치를 iPhoneOS.platform에 해당하는 위치로 변경해 주면 빌드가 정상적으로 된다.


iPhoneOS platform 에 해당하는 위치를 입력후 iPhoneSimulator platform의 위치보다 위로 드래그앤 드롭하여 올려준다. 자세한 위치는 다음과 같이 변경 하였다 (version 4.3 일경우)

LIBRARY_SEARCH_PATHS = $(inherited) "$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib" "$(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/usr/lib"




해당 내용은 SQLite3라이브러리만 해당하는것이 아니라 다른 종류의 라이브러리들도 해당되리라 생각 된다.

: