안녕하세요 코나입니다!!

정말 정말 오래간만에 글을 올립니다. ^^

요즘 카프치노를 기반으로 웹 앱을 만들고 있는 중인데, 막히거나 팁이 있을때 블로그 포스팅을 하려 합니다.

제 라이브러리도 되고, 현실적으로 아직 좀 마이너리티한 이 프레임워크가 주목을 받을 수 있겠지요?


오늘은 그 첫번째로, xcodecapp 에서 컨버팅에 실패했을 때 입니다.


컨버팅 실패시, growl 을 통해서 넘어오는 메시지는 그닥 친절하지 않습니다. 이때의 구체적 접근 방법과 제가 찾은 해결책들을 적어봅니다.


문제점 : 인터페이스 빌더에서 Obj-J 클래스를 클래스 아이덴티티로 연동 후, outlet 이 제대로 뜨지 않을 때.

해결책 및 확인 사항 :

1. 최신 빌드 (2012.09.07 현재, 0.95, 단 공식 홈이 아닌 github header clone 필요함) 에서 xcode 런칭시에 확인 해볼 것.

 - Shadows Group 안에 파일들이 정상적으로 존재 하는가 (없으면 red 로 표시됨.)

1-a. 정상 존재하지 않는다면, 오리지널 파일의 경로를 확인해 보아야 함.

 : 프로그램은 Obj-J 소스를 Obj-C 로 임시 변환 시킴 - 저장 위치 : ~/.XcodeSupport  - 문제는 파일명으로 프로젝트 경로를 이용하는데, 이때 프로젝트 경로에 _ (underbar) 가 있을 경우 변환을 하기는 하지만 XCode 4.4 에서 인식을 제대로 못함. 따라서 이 경우에는 프로젝트 경로 안에서 _ 가 없는게 제일 좋음 ㅠ.ㅜ


문제점 : nib 파일을 cib 파일로 컨버팅을 실패한다면?

해결책 :

1. 정확한 확인을 위해서 위 1 항의 소스안의 Tool 안의 XCodeCapp 앱의 프로젝트를 XCode 를 통해서 오픈, 콘솔로그 확인시 Could not convert to xml plist for file 가 발생함을 확인.


1-a. 이경우는 컨버팅 과정에서 xcode-select 커멘드 명령어로 현재 사용하는 xcode 경로를 확인해보아야 함. 특히  iOS 혹은 Mac OS 를 위해서 베타판을 설치할 경우, xcode-select 명령어가 최신에 설치된 xcode 를 경로로 잡도록 하는 듯 함. 따라서 xcode --select 으로 정상 버전(?) 링크를 연결해야 함.


문제점 : Obj-J 에서 상속을 해서 차일드클래스를 생성했는데 수퍼 클래스의 아웃렛을 인식하지 못함.

해결책 :

1. 아직 XCodecapp 이 제대로 상속 관계에서 outlet 을 처리하지 못하는 걸로 판단됨.


1-a. 이경우에는 꼼수를 좀 부렸음. 나같은 경우에는 

 가. 어차피 클래스 이름만 안바뀐 채 연결하면 되므로 수퍼 클래스 명을 CPViewController 등으로 하고, super 에 있는 아웃렛을 임시로 가져와서 연결 후 치우면 됨.. -.-;;

 나. 그게 아니면 잽싸게(?) shadows 그룹에서 변경된 Obj C 파일의 클래스 헤더에 IBOutlet 을 임시로 넣어서 연결함. 개인적으로는 가. 안이 말을 더 잘 들었던(?) 걸로 기억함.

 다. 좀 심한 말로 일단 클래스 명 안 바뀐채 연결된다면.. 문제 없음. -.-;;;


앞으로 개발 하면서 팁들은 계속 추가 됩니다.

Posted by 코나