아이폰 시뮬레이터로 테스트 하다보면, GPS위치를 잡지 못하는 경우가 있다.

Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)"


회사에서 유선랜만 잡았더니 이렇게 되었는데, AirPort를 켜고 Wifi를 잡아주면 아주 잘 동작한다.
이것때문에 엄청 삽질했음.. ㅠㅠ


 


 
Posted by Jyui
아이폰 어플 프로젝트 관련해서 XML-RPC를 쓰는 관계로,
Wordpress인가? 에서 만든 거지같은 XML-RPC Parser받아서 쓰다가  짜증나서 직접 고쳐서 썼다.

그러다가 문제가 좀 있어서 다른 종류의 오픈소스 XML-RPC Parser를 찾다가 아주 괜찮은걸 발견했다!!! 진짜 필요했는데 왜 이제야 보이는지 원,
사용방법은 Wordpress와 거의 흡사하다.
 별로 고치지도 않고 깔끔하게 파싱이 제대로 안되된 문제가 해결되었다!




 
Posted by Jyui
"warning: type 'id<UIApplicationDelegate>' does not conform to the 'UIAlertViewDelegate' protocol"

이 Warning은 아래와 같이 소스를 짰을 때 난다.
MyAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

해결방법은 아래와 같다.
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];



Posted by Jyui

mac에서 터미널에 들어가서 해당 프로젝트 폴더에서 다음을 치면 각각이 실행된다

$svn st
-> svn 리스트가 쭉 보여진다. A는 추가될 파일, M은 수정될 파일, D는 삭제될 파일

$svn add a.m
-> svn에 a.m이라는 파일을 추가한다.

$svn add images
-> svn에 images라는 폴더를 추가한다.

$svn rm a.m
-> svn에서 a.m이라는 파일을 삭제한다.
(잘 안지워질 경우 뒤에 --force라는 옵션을 붙여본다.)


xcode 자체내에서 가끔 이상할 때가 있어서 귀찮았는데.. 터미널에서 요렇게 해주고 xcode 재실행시키면 잘 뜬다 :D

Posted by Jyui
아이폰에서 어플을 넣는 방법은 크게 다섯가지인것 같다.
1) 순정폰
- 개발자 라이센스를 가지고 있으면서 xcode를 이용해 셋팅된 경우
- 배포판으로 빌드된 app파일 + Distribution Provisioning 파일을 가지고 있는 경우, iTunes를 이용해서 디바이스에 넣을 수 있다.
(이 경우 앱스토어에 올리기 전이라도 친구가 어플리케이션을 테스트 하게 만들어준다. 단, 친구 디바이스의 UDID를 iPhone Provisioning Portal에서 미리 등록해 놓아야 한다.)
- 앱스토어에 올려진 어플리케이션을 다운받음

2) 해킹폰
- 크랙된 어플을 다운받아서 iFunBox나 iTunes를 이용해서 넣어줌
- 앱스토어에 올려진 어플리케이션을 다운받음


 


이 중 아이폰의 '배포판'을 만들 필요가 있을 때가 있는데,
주로 어플 배포전에 베타테스트가 필요할 때가 많다.
배포판은 개발자 라이센스와 다르게 소스가 없이 app파일(윈도우의 exe처럼 아이폰에서 실행파일)과 Provisioning파일만 있으면 동작한다는 것이 특징이다.

이 배포판 프로비저닝 파일 만들고 셋팅하기가 너무 복잡해서;;; 좋은 링크가 있길래 걸어본다.

Link: http://theeye.pe.kr/345

Posted by Jyui

지금 짜고 있는 어플은 UITableView에 3개의 섹션이 있고, 각 섹션에 한개의 row가 있다.

그런데 모든 섹션이 처음 로딩시 한페이지에 있으면 안그러는데
일부 섹션이 한페이지를 벗어나는 경우(스크롤 생기는 경우) Cell을 제대로 인식하지 못해서 3번째 섹션에 떠야할 내용이 1번째 섹션에 뜨고 막 이런다 ㅡㅡ
게다가 천천히 스크롤 할 때는 상관없는데 빨리 스크롤 하니까 이런 증상이 나타남...-_-;;;

static NSString *cellIdentifier = @"CellIdentifieer";
이렇게 써주던 것을
NSString *cellIdentifier = [NSString stringWithFormat:@"CellIdentifier-%d", [indexPath section]];
이렇게 하니까 잘 된다;ㅅ;

쩝 허무한걸로 몇시간 날리고 택시타고 집에 가야할듯;;;



Posted by Jyui






개인적으로는 두번째로 만든 아이폰 어플이지만,
첫번째로 앱스토어에 올린 어플이에요~

이름은 '학점계산기'고 한국 앱스토어에 있어요
(Productivity 카테고리에서 5위하다가 오늘 순위밀렸 ㅠㅠ)

인턴이나 회사이력서에 전공평점 쓸 때가 가끔 있는데, 매번 전공평점 새로 구하는게 귀찮아서;;; 개인적인 필요에 의해 만들게 되었어요;

현재 v1.0이고, 평점계산시에는 P학점은 이수총학점에는 반영되지만 점평균에는 반영되지 않고, 재수강 같은 경우는 같은과목명이 여러개 있는 경우 무조건 맨 마지막 과목만을 총이수학점및 평점계산에 반영하도록 했어요. (혹시 이렇게 안하는 학교 있으면 알려주세요;ㅂ;)

무엇보다 중요한건 무료어플이라는거;;; 피드백을 바탕으로 조만간 v1.1을 업데이트 할 예정이에요 :)

앱스토어에 처음으로 올린 어플이니 이쁘게 봐주시고, 버그는 날카롭게 지적 부탁드려요; (재수강 과목 목록이 제대로 안뜨는 문제 발견했으니 이거 빼고 지적해주시면 됩니다;ㅂ;)

레이팅과 리뷰도 많이 좀 부탁드릴게요 (굽슨);

Posted by Jyui

1. 현재 Build Configuration이 Release가 아닌지 확인

2. 최신버전 sdk(3.1 이후라고 알고 있음)에서 기본환경설정값이 바뀌는 경우에 안되는 경우 있다고 함
>> 메뉴의 [Xcode]-[Preferences]-Symbol Loading Options-"Load symbols lazily" 체크해제

3. 해킨토시인 경우 부팅시 다음과 같은 옵션을 넣어주면 된다고 함
>> std_dyld=1




1번 확인하고 (당연히도 릴리즈 모드는 아니였음)
2번 바꾸고 안되서 삽질하다가
3번 하니까 되는군-_-

3번 되고 난다음에 2번을 원래대로 "체크" 상태로 바꿔주니까 또 다시 잘된다..-_-;;;
후, 그런데 3번옵션 주고 나니까 속도가 좀 느려졌다;ㅅ;


Posted by Jyui

Cocos2D 소스를 다운받아서, CocosLive를 타겟으로 실행시키면 간단한 랭킹서버를 볼 수 있다.

간단한 수정만 하면(본인서버의 이름과 gameKey만 수정하면 된다.) 본인의 서버로도 테스트할 수 있으나, 이 때 조심할 것은 예제 코드에 있는 usr_speed, usr_angle이 기본적으로 생성되는 서버에는 없기 때문에 에러가 난다는 것이다. (여기서 삽질을 반복했;;)

이부분만 주석처리하면 잘 돌아간다.

CocosLive를 처음 써보시는 나같은;; 사람들을 위해 좋은 링크가 있어서 첨부:

http://gameprog.tistory.com/entry/cocoslive로-랭킹구현하기1-cocos-Live에-계정을-만들어-게임을-등록한다    
http://gameprog.tistory.com/entry/cocosLive로-랭킹구현하기2-Xcode로-cocosLive-랭킹-구현



Posted by Jyui
원문:
http://networkpx.blogspot.com/2009/09/compiling-iphoneos-31-apps-with-xcode.html

blackRa1N으로 해킹 후, Cydia에서 http://cydia.hackulo.us/ 추가하여 AppSync for OS 3.1을 다운받았다.
(http://iphone.org.hk/apt/의 Installd patch를 깔라는 이야기가 있었는데, 아무리 해도 내 아이폰에는 깔리지가 않았다. 원래 이게 XCode의 프로그램 실행파일이 아이폰에 설치가능하도록 한다는데,  [출처: XCode에서 provisioning없이 컴파일하고 아이폰 디바이스로 빌드하기]이거 깔지 않아도 잘 되는걸 보면 AppSync에 Installd patch의 기능이 포함되어 있는게 아닌가 싶다.)

XCode에서 짠 프로그램 디바이스에 올리기, ipa만들기 강좌
- 원문을 토대로 자세하게 만드셨다. 개발자들임을 감안하셨는지 윈도우즈 설치마냥 상세한 스크린샷은 없다^^;;(그래도 번역해주시는게 어디;ㅅ;) 하지만 그냥 하라는 대로만 하면 디바이스에서 릴리즈 모드를 돌릴 수 있다. 하지만 토씨하나 잘 따라하는 것이 중요! 처음에 사소한 거 안했다가 안돌아가는 걸 목격할 수 있었다.. 단, 여기까지 따라하면 인스톨 후 바로 실행이 안된다. 당연히 디버그 모드도 안됨. 되는건 오로지 xcode에서 짠 프로그램을 개발자 라이센스 없이 디바이스에 올릴 수 있다는것...
- ipa만들기 강좌는 따라해 보지 않았지만 될 것이라고 믿으며^^;;;

<디버그모드와 릴리즈모드, 설치 후 바로 돌리기> by Jyui
한국에서 아직 아무도 한글로 쓴 분이 없는 것 같아서 혹시나 도움 되시라고 팁 몇개를 적어본다. 결론부터 따라하면 원문을 따라하면 되는데, 주의사항이 몇가지 있다. (나같은 맥과 아이폰 초보자에게 도움되시라고;ㅅ;)
- 단계1에서 /usr/local/bin 폴더가 없을 경우 mkdir을 이용하여 만들어준다. 권한이 없는 경우 sudo를 이용하면 됨.
- ldid, ldid2가 실행가능 하도록 chmod를 이용하여 775 퍼미션을 준다.

2. 단계 6은 아래와 같이 두번에 나눠서 해야함.

$install_name_tool -change /usr/lib/libmis.dylib /usr/lib/libmiss.dylib installd

$ldid -S installd
3. 릴리즈 모드 완료 후 단계 8에서 컴파일 옵션을 그대로 복사하지 말고, 개행시에는 \(백슬러시)를 써야 함. (이 기호는 행과 행 사이를 이어주는 역할이므로, 행의 마지막에서 띄어쓰기 후 \를 써야함에 주의. 복사는 사과키+C, 붙여넣기는 사과키+V, 윈도우에서 해킨토시나 vmware로 돌리는 분은 사과키 대신 왼쪽 윈도우키가 기본인것으로 안다.) 아래를 복사하면 간단할 듯 ^^;;
-dynamiclib \-install_name /usr/lib/libmiss.dylib \-current_version 1 \-compatibility_version 1 \-Wl,-reexport-lmis \-flat_namespace

- 수정한 파일을 아이폰으로 옮길 때 난 ifunbox(http://i-funbox.com/)를 썼음. 혹시 모르니 아이튠즈에서 백업 후, 수정된 파일을 옮기기 전에 디바이스에 원래 들어있던 파일(installd는 원래 존재하므로 예의상 백업, libmiss.dylib는 아이폰에 원래 들어있지 않으므로 백업할 수가 없음)도 PC에 저장요망.

- 12번까지 하고 나서 돌리니까 인스톨후 바로 실행이 되지 않았음. 인스톨은 잘 됨(근데 인스톨은 릴리즈모드에서도 잘되지 않았던가?)

- XCode 메뉴에서 [Project]-[Edit Project Setting]-Code Signing 항목 중 Other Code Signing Flags를 클릭하면 '+'기호를 누르고 -gta 옵션 추가. Configuration에서 Debug, Release에 대해 각각 지정해줘야 한다는 사실을 주의!

- XCode를 아예껐다가(사과+Q) 다시 실행하면 됨~_~

- Simulator, Device에서 Debug/Release 모드를 각각 돌려보았는데 정상적으로 된다!



다들 잘 돌아가시기를 바라며, 안돌아가거나 하시면 댓글 달아주세요~
아는 범위 내에선 자세히 가르쳐드리겠습니다;ㅅ;
도움이 되셨으면 리플도 좀... (제가 좀 소심해서 리플이 없으면 슬퍼요-.-)



덧붙이는 글:
제 자료를 토대로 다른 글을 쓰시는건 상관없지만,
출처는 꼭 남겨주시고 센스있게 트랙백도 보내주시면 감사하겠습니다 :)




Posted by Jyui