달력

10

« 2024/10 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
평생 숙원 사업(!)인 게임 개발을 그래픽 디자이너가 없다는 핑계(ㅠㅠ)로 이리저리 공부만 하다가 입에 풀칠은 해야한다고 간단한 일을 하나 받아서 앱 개발을 하게되었습니다.

개발에 앞서 그래도 신경쓴다고, ^^, 최신 xCode가 더 좋을 거란 생각에 iOs4랑 엮인 xCode를 받았더니, 예전 xCode 버전업과는 다르게 이 버전에선 3.x대 SDK를 아예 Link할 수 없네요. 3.2가 지원되는건 현재 iPad가 3.2만 지원하기 때문인 듯 하더군요.

친구 구글에게 해결책을 물어봤더니 Platform을 3.2로 하고 deploy target을 3.1.2로 지정하면 된다길래 그렇게 했습니다. 컴파일이랑 실행은 잘되는데 Instruments에서 아주 적은 양이긴 하지만 memory leak이 검출되네요. 혹시나 해서 플랫폼을 4.0으로 바꿔서 해보니 memory Leak이 없더군요. 게다가 Leak이 발생하는 곳의 Call Tree를 봐도 제가 작성한 Code를 호출하는 부분은 없더군요. 4.0에서는 Leak이 없으니 xCode가 제대로 이전 버전을 지원 못하나보다 생각하고 3.1.2용 xCode 에서 컴파일하면 되겠지라고 안일하게 생각하고 4.0용 xCode에서 계속 개발했습니다.

개발을 끝내고 AppStore에 올리려고 3.1.2에서 메모리 Leak을 테스트했더니, 역시나 4.0용 xCode랑 똑 같은 leak이 발생하네요. 허거걱... 놀라서 친구 구글에게 투덜됐더니 예전부터 이런 문제가 다른 사람에게도 많았나 보더라구요. 글 중에 Leak이 소량이고 개발 코드랑 관계없으면 OS버그이거나 Instruments의 버그나 Leak에 대한 혼동일 수 있으니 무시해도 될거라네요. 저야 언제나 이런걸 무시할 용의도 있고 의지도 있지만, 문제는 Apple이 Reject하지 않냐는 거겠죠. 글들을 더 찾아보니 Simulator의 메모리 관리 문제일 수도 있다네요. 허걱... 느린 속도때문에 Device에서 직접 메모리 Leak검사는 안해봤는데... 바로 검사를 해봤습니다.

앱 로딩 속도때문에 처음엔 문제가 발생하지 않는 줄 알고 좋아했는데 조금 시간이 지나니 문제가 발생하더군요. 그런데 Leak때문에 검색하면서 자주 봤던 3584란 숫자가 눈에 띄네요. (GeneralBlock-3584)

검색해보니 다음 글(http://stackoverflow.com/questions/478242/leak-generalblock-3584)을 찾을 수 있었습니다. 그 중 글쓴 분이 올 4월에 직접 올린 아래 답글을 볼 수 있더군요.
You have nothing to worry about, this is false positive from Instruments.
It has to do with freeing resources of the thread that has being terminated. They are just laying around until next thread is done and cleans resources after the one of the previously terminated. Instruments take this for a 'leak' but it's the feature of pthreads implementation on the iPhone OS which in perfect world would be handled differently. More on this on the Apple's dev forum here and here.
저기 here and here들에 가보면 나름 자세한 설명이 있는데 조금 보다 말았습니다. 결론은 버그라기 보다는 의도된 대로고 4.0 이전 버전에 대해 Instruments(최신에서도 3.1.2로 컴파일할때는 Leak이 발생하니 Instruments만의 문제라긴...)는 인식 못한다는 정도로 봐야겠죠.

어쨌든 앱이 갑자기 Crash하거나 하진 않으니 오늘 그냥 올려보려고 합니다. Reject당하면 다시 저글들 분석해보고 해야겠죠. 혹시 Reject당하게되면 다시 글 올리도록 하겠습니다.

자체 문제인줄도 모르고 Leak때문에 고생한걸 생각하면...후...
다른 분들에게 도움이 되었으면 하고 올리는데 이글을 볼 사람이 있을런지..ㅎㅎ
:
Posted by netkorea