XCODE2010. 6. 24. 08:01
Xcode 살펴보기.
코코아 프로그래밍을 하기 위해서, 또는 아이폰 프로그래밍을 하기 위해서 필요한 것이 Xcode라고 불리는 애플리케이션 제작 툴이다. Xcode는 프로그래밍을 하는데 있어서 쉽고, 간결하게 할 수 있도록 다양한 방법으로 개발자들을 돕고 있다. 그리고 무엇보다도 보기에 좋다는 것!




Xcode project 만들기
맨 처음 Xcode를 실행하게 되면 개발자들을 환영하는 메세지를 볼 수 있다. 처음 나타나는 메세지에서는 새로운 프로젝트를 생성하거나, 이전에 작업하고 있던 프로젝트를 선택 할 수 있다. 그리고 처음 Xcode를 사용하는 사용자들을 위한 튜토리얼과 개발자들을 위한 웹페이지의 링크도 선택할 수 있기 때문에 한번즘 클릭해 보는것도 나쁘진 않을 것이다. 그리고 매번 시작할때 마다 환영 페이지를 보고 싶지 않다면 'Show this windows when Xcode launches'의 체크 박스를 해제하면 된다. 새로운 프로젝트를 생성하기 위해서 'Create a new Xcode project'를 선택한다.



그림1. New Project 선택 화면

그러면 위와 같은 새 프로젝트 선택 화면을 볼 수가 있을 것이다. OS X에서 실행이 되는 응용 애플리케이션을 개발하고자 한다면 왼쪽의 OS X 탭 아래의 메뉴에서 선택을 하면 되고, iPhone용 애플리케이션을 개발하고자 한다면 iPhone 탭 아래에서 적당한 메뉴를 선택하면 된다. 가장 기본이 되는 애플리케이션을 만들기 위해서는 iPhone -> Application -> View based Application 을 선택하도록 한다. 애플리케이션의 이름을 정하고, 저장할 위치를 묻는 화면이 나오는데, 기본으로 설정되어 있는 디렉토리를 사용해도 상관없지만, 다른 데이터와 혼동이 될 수 있으므로, iPhone 프로젝트만을 위한 디렉토리를 따로 생성하여 설정하기를 권한다.


Xcode 'Hello world' project 창 보기.
프로젝트를 생성할 장소까지 설정을 했다면 다음과 같은 프로젝트 화면을 볼 수가 있을 것이다.



그림2. 'Hello World' project

단지 프로젝트 이름만 지어줬을 뿐인데 이미 많은 파일들이 생성되어 있는 것을 볼 수가 있다. 이것들은 개발자의 편의를 위해서 Xcode가 자동으로 기본 템플릿을 가지고 생성해낸 파일들이다. 나중에는 세심하게 살펴 보겠지만, 처음에는 자동으로 파일들이 여러개 생성된다는 사실만으로도 충분하다. 왼쪽에 있는 'Group&Files'는 프로젝트안에 포함되는 다양한 파일들이 들어가 있다. 소스 파일이 포함될 수도 있고, 이미지나, 텍스트, 음성 데이터들이 포함될 수 있다. 각각의 폴더가 의미하는 바는 다음과 같다.

Classes : object-C 클래스 파일들이 모여 있는 곳이다. 개발자가 생성하는 파일들이 들어가는 곳이기도 하다.
Other Sources : object-C 클래스 파일이 아닌 소스코드 파일들이 포함된다. 그리고 맨 처음 프로젝트를 생성하게 되면 두가지의 파일이 자동으로 생성되게 된다. '프로젝트명_Prefix.pch'란 파일과 main.m 파일이다. Prefix.pch는 precompiled header의 약자로 일반적으로 프로젝트를 생성하는데 있어서 꼭 필요한 헤더 파일들을 컴파일 해 놓는 것이다. 기본적으로 사용하는 헤더 파일들을 미리 컴파일 해 놓으면 프로젝트를 빌드 할때 시간을 절약 할 수 있다. main.m 파일은 main() 메소드가 있는 곳으로 MVC 구조를 사용하는 오브젝티브-C의 특성상 수정할 경우가 많지 않다.
Resources : 애플리케이션에 사용되는 파일들이 포함되어 있는 곳이다. 프로그램을 구동하는데 필요한 코드가 아니라 아이콘, 이미지, 소리파일, 동영상등 프로그램을 실행하는데 있어서 필요할 만한 자원들을 보관하는 곳이다. 아이폰에서는 허가된 위치의 파일들 외에는 임의로 접근이 불가능 하기 때문에 실행에 필요한 파일들은 꼭 이 위치에 보관해야 한다. 이 폴더에는 다음의 세가지 파일이 자동으로 생성 된다. '프로젝트 명ViewController.xib', '프로젝트 명-Info.plist', 'MainWindow.xib'. 이 세가지 파일은 프로그램을 실행하는데 꼭 필요한 파일들이기도 하다.
Framework : 이 폴더는 코드, 이미지나, 소리데이터등의 자원들이 포함되어 있는 라이브러리이다. 이 폴더에 포함되는 프레임워크는 자동으로 프로젝트에 링크되어 사용할 수 있게 된다. 기본적으로 사용되는 프레임워크에 포함되지 않는 프레임워크를 사용하고자 할 경우 이 폴더에 포함시킨다.
Products : 프로젝트를 통해 생성된 애플리케이션이 저장되는 곳이다. '프로젝트 명.app'이 프로젝트의 결과물이 된다. 위 그림에서 보면 Hello World.app이 빨간색으로 되어 있는데, 이것은 아직 빌드를 한번도 실행하지 않았기 때문에 파일을 찾을 수 없다는 의미이다.

'Group&Files' 의 창에 표현되는 디렉토리 구조는 OS X 의 디렉토리 구조와 완벽하게 일치하지 않는다. 왜냐하면 'Group&Files'에서 보여주는 디렉토리의 구조는 프로젝트를 작성하는데 있어서 편리하도록 만들어낸 논리적 구조이기 때문이다. 파일을 그대로 복사해서 가져올 수도 있지만, 단지 링크만을 해 둘 수도 있다. 이것은 옵션으로 선택이 가능하다.


Interface Builder 둘러보기.
Xcode를 완성하는 또 하나의 창은 IB라고 하는 인터페이스 빌더이다. 프로젝트창이 보이지 않는 소스코드에 중점을 둔다면, 인터페이스빌더는 프로그램의 외형을 아름답게 꾸미는 일을 책임진다. 개발자가 만들고자 하는 프로그램에 버튼을 하나 추가하고 싶다면 버튼을 의미하는 소스코드를 입력해서 만들 수도 있지만, 인터페이스 빌더를 사용하면 마우스 클릭만으로 간단하게 버튼을 추가 할 수 있다. 이것은 MVC 패턴에 맞추어서 기능과 뷰를 분리하였기 때문에 가능하다. 또한 인터페이스를 만드는데 드는 시간을 줄 일 수 있으며, 좀더 직관적인 디자인이 가능하다는 이점이 있다. 생성한 프로젝트에서 IB의 화면을 보기 위해서는 IB를 책임지고 있는 파일을 선택하면 된다. Resources 폴더의 '프로젝트 명ViewController.xib'파일을 더블클릭한다.



그림3. Interface Builder 의 화면


처음 IB를 실행하게 되면 위와 같이 여러개의 창이 나타나는 것을 볼 수 있다. 이중에서 가장 메인이 되는 창은 가운데 위에 있는 '프로젝트 명ViewController.xib'라고 써 있는 창이다. 인터페이스를 책임지는 모든 xib 파일은 File's Owner와 First Responder 이라는 두개의 파일을 자동으로 포함하게 된다. File's Owner는 xib파일의 객체를 의미한다. 객체지향 프로그래밍에서는 어떠한 오브젝트를 사용하기 위해서 객체를 생성하는데, File's Owner가 첫번째 객체의 역할을 하는 것이다. First Responder는 현재 사용자와 프로그램이 상호작용을 하고 있는 객체를 의미한다. '1' ~ '9'로 표현되는 버튼을 생성하였다. 이 때 사용자가 '2'라는 버튼을 눌렀다면 '2'라는 버튼은 현재의 퍼스트 리스폰더이다. 퍼스트 리스폰더는 그 때에 작용하는 객체를 말하기 때문에, 사용자와 상호 작용을 하는데 있어서 매우 중요한 역할을 한다. 그리고 'View'라는 아이콘이 포함되어 있는 것을 볼 수 있는데, 이것은 화면에 나타나는 '뷰'를 의미한다. 지금 당장에는 하나의 뷰만을 가진 애플리케이션을 작성하기 때문에 하나밖에 없지만, 좀더 복잡한 애플리케이션을 작성하게 되면 여러개의 뷰가 생성 될 것이다.


프로젝트 창과 인터페이스 빌더는 iPhone 프로그래밍이나, 코코아 프로그래밍을 하는데 있어서 매우 중요한 요소이다. 그리고 개발자들이 가장 기본적으로 사용하게 되는 창이기도 하다. 이 두개의 화면에 익숙해진다면 아이폰 프로그래밍을 하는 것도 그렇게 어렵게 느껴지지 않을 것이다.



출처 : http://blog.naver.com/PostView.nhn?blogId=seanhigher&logNo=60104921948
Posted by 오늘마감

댓글을 달아 주세요

XCODE2010. 6. 22. 09:46
유용한 XCode Shortcuts..
cmd + K                       컴파일
cmd + B             빌드하기
cmd + shift + B   빌드 결과창 보기
cmd + ↲              빌드 & 디버그
cmd + R                           빌드 & 런 (브레이크 포인트 OFF)
cmd + Y                             빌드 & 디버그 (브레이크 포인트 ON)
cmd + shift + K              클린
cmd + =               Next Build Warning or Error
cmd + +                        Previous Build Warning or Error

cmd + opt + ↑     헤드/바디 파일간 변환 (h/m 파일 변환)
cmd + opt + ← or →  이전/이후 문서 위치 이동
cmd + 더블클릭      Jump to Definition (선택한 메소드 정의 부분으로 이동)
cmd + /              주석 설정/해제
cmd + \              브레이크 포인트 설정/ 해제 
cmd + shift + O    디버그 다음 행으로 진행(브레이크 포인트 설정 시)




출처 : http://blog.naver.com/PostView.nhn?blogId=coderider&logNo=50088299827
Posted by 오늘마감

댓글을 달아 주세요

XCODE2010. 6. 21. 22:50
Xcode 단축키

출처 : http://www.cocoadev.co.kr/52

1. Xcode

1. 프로젝트 & 파일


* 새 프로젝트 [shift][command] N

새로운 프로젝트를 생성한다.

* 프로젝트 닫기 [control][command] W

현재 프로젝트를 종료한다.

* 프로젝트 추가 [option][command] A

프로젝트에 파일을 추가 한다.

* 새 파일 [command] N

새로운 파일을 작성한다.

* 파일열기 [command] O

파일을 오픈한다.

* 파일 저장 [command] S

현재 파일을 저장한다.

* 모든 파일 저장 [option][command] S

프로젝트의 모든 변경된 파일을 저장한다.



 

2. Xcode


* 새 그룹 생성 [option][command]  N

좌측의 Groups & Fiels에서 새로운 그룹을 생성한다.

* 파일그룹 지정 [option][command] G

선택된 파일들을 새로운 그룹으로 만든다.

* 파일그룹 지정 [option][command][shift]G

그룹을 해제한다.

* 에디터 전체 보기 [shift] [command] E

Group & Files 윈도우를 제외하고 에디터를 전체 보기로 만든다.

* 에디터 전체 보기 [shift] [option] [command] E

Group & Files 윈도우도 감추고 에디터를 전체 보기로 만든다.

* 클래스 브라우져 [shift] [command] C

프레임워크 또는 사용자 정의 클래스의 메소드, 소스를 보여 준다.

* target 속성창 [option][command] E

빌드 및 어플리케이션 옵션을 설정한다.

* 실행 속성창 [option][command] X

실행파일 패스, 인자, 디버깅 정보를 설정한다.

* 핼프 [shift] [command] /

Xcode 핼프 윈도우를 연다.



 

3. 빌드


* 빌드 [command] B

프로젝트를 빌드 한다.

* 빌드 후 실행 [command] R

빌드를 완료한 후, 프로그램을 실행한다.

* 빌드 후 디버그 [command] Y

빌드를 완료한 후, 디버그를 실행한다.

* 빌드 결과 보기 [shift][command] B

빌드 결과창을 보여준다.

* clean [shift][command] K

소스 파일의 날짜를 현재 시간으로 변경하여, 다시 컴파일 될 수 있도록 한다.



 

4. 디버깅


* 다음 경고/오류 [command] =

소스파일에서 경고나 오류가 발생한 다음 위치로이동한다.

* 이전 경고/오류 [shift][command] =

소스파일에서 경고나 오류가 발생한 이전 위치로 이동한다.

* 디버거 [shift][command] Y

디버거 윈도우로 이동한다.

* 디버그 실행 [option][command] Y

디버그를 시작한다.

* 브레이크포인트 보기 [option][command] B

브레이크포인트가 설정된 위치를 모두 보여 준다.

* 브레이크포인트 [command] \

현재 위치에 브레이크포인트를 설정/해제 한다.

* step into [shift][command] I

한라인씩 실행하며 함수일 경우 내부로 진입한다.

* step over [shift][command] O

한라인씩 실행하며 함수일 경우 건너 뛴다.

* step out [shift][command] T

함수를 나가 호출한 위치 다음으로 이동한다.

* 로그창 [shift][command] R

실행로그창을 보여 둔다.


 

5. 에디터


* 잘라내기 [command] X

현재 선택된 영역을 잘라낸다.

* 복사 [command] C

현재 선택된 영역을 복사낸다.

* 붙여넣기 [command] V

현재 클립보드에 있는 내용을 붙여 넣는다.

* undo [command] Z

실행을 취소한다.

* redo [shift] [command] Z

undo를 취소한다.

* 전체선택 [command] A

파일 전체를 선택한다.

* 자동완성 보기 [esc]

자동으로 입력될 내용(함수, 변수)들을 보여 준다.

* 다음 제안 [control] .

자동완성 목록중에 다음 목록을 보여 준다.

* 이전/다음 파일 [option] [command] 왼쪽 방향키

여러 파일이 열려있을 경우에 다음 소스 파일을 보여 준다.

* 이전/다음 파일 [option] [command] 오른쪽 방향키

여러 파일이 열려있을 경우에 이전 소스 파일을 보여 준다.

* 헤더/소스 파일 보기 [option] [command] 위쪽 방향키

소스파일일 경우에는 헤더 파일을 헤더파일일 경우에는 소스 파일을 보여 준다.

* 우측으로 들여 쓰기 [command] ]

현재 또는 선택된 영역의 내용을 오른쪽으로 한칸 들여 쓴다.

* 좌측으로 들여 쓰기 [command] [

현재 또는 선택된 영역의 내용을 왼쪽으로 한칸 들여 쓴다.

* 찾기 [command] F

현재 에디터에서 문자를 찾거나 대치한다.

* 전체 찾기 [shift][command] F

모든 프로젝트 또는 열린 파일에서 문자를 찾거나 대치한다.

* 다음 문자 [command] G

다음 문자를 찾는다.

* 이전 문자 [shift][command] G

이전 문자를 찾는다.

* 찾기 문자열에 복사 [command] E

현재 선택된 문자를 찾을 문자열 에디터에 복사한다.

* 대치 문자열에 복사 [command] J

현재 선택된 문자를 대치할 문자열 에디터에 복사한다.

* 라인 가기 [command] L

지정한 라인으로 바로 간다.

* 북마크에 추가 [command] D

현재 라인을 북마크에 추가한다.



2. 인터페이스 빌더

1) Window


* 인스펙터 [shift][command] I

오브젝트의 속성창을 연다.

* attributes [command] 1

인스펙터의 attributes 항목을 연다.

* connections [command] 2

인스펙터의 connections 항목을 연다.

* size [command] 3

인스펙터의 size 항목을 연다.

* bindings [command] 4

인스펙터의 bindings 항목을 연다.

* 팔레트 [command] /

팔레트 윈도우를 보여준다.

* 테스트 [command] R

윈도우를 실행한다.

* 테스트 종료 [command] Q

윈도우를 종료하고 인터페이스 빌더로 돌아 온다.

* 정렬 판넬 [shift][command] A

윈도우 상의 오브젝트들을 정렬할 수 있는 판넬을 연다.

* 레이아웃 사각형 [command] L

오브젝트들의 레이아웃을 나타내는 사각형을 보여주거나 감춘다.

* 레이아웃 검사 [shift][command] V

레이아웃 검사창은 보여준다. 오브젝트들의 겹침, 잘림등을 체크해준다.


2)  Classes


* subclass [option][command] S

Classes 판넬에서 현재 선택된 클래스의 서브클래스를 생성한다.

* Action 추가 [option][command] A

Classes 판넬에서 현재 선택된 클래스에 Action을 추가한다.

* Outlets 추가 [option][command] O

Classes 판넬에서 현재 선택된 클래스에 Outlet을 추가한다.

* Outlets 추가 [option][command] F

Classes 판넬에서 현재 선택된 클래스의 소스파일을 생성한다.


출처 : http://blog.naver.com/PostView.nhn?blogId=cbdman&logNo=130085090046

'XCODE' 카테고리의 다른 글

[Objective-C] Xcode프로젝트 창  (0) 2010.06.22
유용한 XCode Shortcuts..  (0) 2010.06.22
Xcode 단축키  (0) 2010.06.21
[펌] cocos2d 개발환경 설정  (0) 2010.06.21
NSNumber, NSMutableArray 초기화 및 사용법  (0) 2010.06.21
[xcode 팁] .h과 .m 파일 이동하기  (0) 2010.06.21
Posted by 오늘마감

댓글을 달아 주세요

XCODE2010. 6. 21. 09:28
[펌] Xcode 도움말 사용하기
출처 - http://www.cocoadev.co.kr/206





Xcode를 사용하면서 도움말을 잘 이용하시면 많은 궁금증과 의문점을 쉽게 해소할 수 있습니다. 모르는 것에 대해서 도움말 보다는 구글에서의 검색과 관련 커뮤니티에 질문을 올리는 것은 쉽고 편한 방법일 수는 있어도 장기적으로는 바람직하지  않습니다. 먼저 도움말을 찾아 보고 그래도 답을 찾을 수 없을 때에 비로소 후자의 방법을 택해야 합니다.

다소 늦고 귀찮은 것 같더라도 도움말을 이용하면 원칙에 가까운 답을 얻어 낼 수 있고, 검색하거나 다른 중요한 사항들도 알아낼 수 있습니다. 도움말은 영문으로 되어 있지만 대부분 코드와 간단한 문장이기 때문에 저같이 영어를 잘 몰라도 대부분 쉽게 이해할 수 있습니다.
 
Xcode를 처음 사용하시거나 프로그래밍을 처음 하시는 분들을 위해서 간단하게 도움말을 이용하는 방법을 알아 보겠습니다.

1. Documentation
Xcode의 Help메뉴에서 Document를 클릭하거나 단축키(Shift+Command+Option+?)를 입력하면 아래와 같이 도큐먼트 창이 오픈됩니다.


1) 도움말 다운로드
Xcode의 도움말은 해당항목들을 다운로드 받으신 후에 사용할 수 있습니다. 원하시는 도움말 항목에서 SUBSCRIBE나 GET 버튼을 클릭하여 로컬로 다운로드 받아야 해당 도움말이 활성화 되고 사용할 수 있습니다.

2) 검색어


검색을 위해서는 우측 상단의 Starts With에 검색할 키워드를 입력합니다. 검색어는 &(AND), !(NOT), |(OR) 연산을 지원합니다.

(string | value)  & !format
위와 같은 입력은 string 또는 value를 포함하고 format을 포함하지 않는 항목을 검색합니다.

4) 검색 대상


  • API - 심볼명(클래스, 메소드등)에서 검색합니다.
  • Title - 문서의 제목에서 검색합니다.
  • Full-Text - 문서의 전체 내용에서 검색합니다.

5) 문서 범위


All Doc Sets는 전체문서에서 검색을 하며 우측에는 DOC SETS에서 현재 검색 범위를 표시합니다.

6) 언어 선택


All Languages는 전체 언어(Objective-C, C/C++, Java, Javascript)에서 검색을 합니다. 우측에는 현재 선택된 언어들이 표시되어 있습니다.

전체언어 다음에 선택될 언어들은 위의 API Options 버튼을 클릭하여 선택할 수 있습니다.


7) 검색 조건


검색창에 입력한 문장이 검색될 조건을 지정합니다.

  • Starts With - 입력된 검색어로 부터 시작되는 항목을 출력합니다.
  • Contains - 입력된 검색어가 포함된 항목을 출력합니다.
  • Exact - 입력된 검색어가 일치된 경우만 출력합니다.

2. Research Assistant
Xcode의 Help메뉴에서 Show Research Assistant를 클릭하거나 단축키(Shift+Control+Command+?)를 입력하면 아래와 같이 Research Assistant가 오픈됩니다.


Research Assistant가 오픈되어 있으면 Xcode의 에디터에서 커서가 위치한 곳에 해당항목에 대한 도움말이 있으면 자동으로 위와 같이 간단한 도움말과 관련 API, 문서, 샘플등을 표시해주는 아주 유용한 툴입니다. 듀얼 모니터를 사용하시는 분들은 Xcode 사용시 다른 모니터에 뛰워 놓으시면 편리하게 확인하실 수 있습니다.

3. 기타
1) 도움말 바로가기 (Option + 마우스 더블클릭)
Xcode의 에디터에서 옵션키를 누른 상태에서 레퍼런스 내용을 확인할 단어에다 마우스로 더블클릭을 하면 해당내용이 도큐멘테이션에서 바로 출력이 됩니다.

2) 선언 보기 (Command + 마우스 더블클릭)
Xcode의 에디터에서 커멘드키를 누른 상태에서 변수나 메소드등의 심볼을 클릭하면 해당 변수/메소드가 선언(또는 구현)된 소스파일로 이동합니다.

이외에 Xcode와 도움말에 대한 자세한 내용은 ADCXcode Workspace Guide 문서를 참조하시기 바랍니다.



출처 : http://blog.naver.com/PostView.nhn?blogId=seogi1004&logNo=110085700600
Posted by 오늘마감

댓글을 달아 주세요

XCODE2010. 6. 21. 09:28
[펌] Xcode 3 둘러보기(1) - Xcode
출처 - http://www.cocoadev.co.kr/166






Xcode 3.1을 제가 사용해 보면서 눈에 뛰는 점들만 알아 보겠습니다. 사용 경험이 없어 틀린 내용이나 중요하지만 언급하지 않은 내용들이 많이 있을 수 있습니다. 틀린 내용들은 알려 주시면 수정하겠습니다.

제목 그대로 깊이 없고 두서 없는 '둘러보기'식 내용이니, 정확하고 체계적인 내용은 애플에서 제공하는 아래의 문서들을 확인해 보시기 바랍니다.



1. 인트로(Welcome) 화면
Xcode 시작시에 인트로 화면이 추가되었습니다. 보통 어플리케이션 사용시에 이런 Welcome이나 오늘의 팁 같은 기능들은 잘 사용하지 않습니다. 하지만 Xcode에서는 RSS로 새로운 소식들도 보여주고, 순간 관심이 가는 링크들을 클릭해서 내용도 읽어 보기 위해서 하단의 'Show at launch'를 체크해 놓고 시작할 때 마다 한번씩 새로운 소식들을 확인해 볼 수 있습니다. 화면은 아래와 같이 다섯개의 색션으로 되어 있습니다.
var servicePath="http://www.cocoadev.co.kr"; var blogURL="http://www.cocoadev.co.kr/";function TTGallery(containerId) { this.containerId = containerId; this.container = document.getElementById(this.containerId); this.container.style.filter = "progid:DXImageTransform.Microsoft.Fade(duration=0.3, overlap=1.0)"; this.container.style.textAlign = "center"; this.container.style.width = "100%"; this.container.instance = this; this.numImages = 0; this.imageLoaded = 0; this.offset = 0; this.src = new Array(); this.caption = new Array(); this.width = new Array(); this.height = new Array(); this.imageCache = new Array(); this.container = null; }; TTGallery.prototype.appendImage = function(src, caption, width, height) { this.numImages++; var imageCache = new Image(); imageCache.src = src; // imageCache.onload = function() { var tmp = this.src; }; this.imageCache[this.imageCache.length] = src; this.src[this.src.length] = src; this.width[this.width.length] = width; this.height[this.height.length] = height; this.caption[this.caption.length] = caption; }; TTGallery.prototype.getControl = function() { var control = document.createElement("div"); control.style.marginBottom = "10px"; control.className = "galleryControl"; control.style.color = "#777"; control.style.font = "bold 0.9em Verdana, Sans-serif"; control.innerHTML = '(' + (this.offset + 1) + '/' + this.numImages + ') '; return control; }; TTGallery.prototype.getImage = function() { var image = document.createElement("img"); image.instance = this; image.src = this.src[this.offset]; image.width = this.width[this.offset]; image.height = this.height[this.offset]; image.onclick = this.showImagePopup2; image.style.cursor = "pointer"; return image; }; TTGallery.prototype.getCaption = function() { var captionText = this.caption[this.offset]; captionText = captionText.replace(new RegExp("&?", "gi"), "&"); captionText = captionText.replace(new RegExp("<?", "gi"), "<"); captiontext = captiontext.replace(new regexp(">?", "gi"), ">"); captionText = captionText.replace(new RegExp(""?", "gi"), "\""); captionText = captionText.replace(new RegExp("'?", "gi"), "'"); var caption = document.createElement("div"); caption.style.textAlign = "center"; caption.style.marginTop = "8px"; caption.style.color = "#627e89"; caption.className = "galleryCaption"; caption.appendChild(document.createTextNode(captionText)); return caption; }; TTGallery.prototype.show = function(offset) { this.container = document.getElementById(this.containerId); if(this.numImages == 0) { var div = document.createElement("div"); div.style.textAlign = "center"; div.style.color = "#888"; div.style.margin = "10px auto"; div.style.font = "bold 2em/1 Verdana, Sans-serif"; div.innerHTML = ''; this.container.appendChild(div); this.container = null; return; } if(typeof offset == "undefined") this.offset = 0; else { if(offset <0) this.offset = this.numimages -1; else if(offset>= this.numImages) this.offset = 0; else this.offset = offset; } if(this.container.filters) this.container.filters[0].Apply(); this.container.innerHTML = ""; this.container.appendChild(this.getControl()); this.container.appendChild(this.getImage()); this.container.appendChild(this.getCaption()); if(this.container.filters) this.container.filters[0].Play(); this.container = null; }; TTGallery.prototype.prev = function() { this.show(this.offset-1); }; TTGallery.prototype.next = function() { this.show(this.offset+1); }; TTGallery.prototype.showImagePopup1 = function() { this.showImagePopup(); }; TTGallery.prototype.showImagePopup2 = function() { this.instance.showImagePopup(); }; TTGallery.prototype.showImagePopup = function(offset) { try { open_img(this.src[this.offset]); } catch(e) { window.open(this.src[this.offset]); } }; //
1) Getting Started
  • Create your first Cocoa application
  • Build your user interface
  • Store your application data
  • Optimize your application

위와 같이 4개의 내용으로 구성되어 있으며 각 제목을 클릭하면 해당 도움말이 열립니다. Xcode 3을 처음 실행하는 분들은 한번씩 읽어 볼만한 내용들입니다. Xcode는 소개화면에서 다섯개의 색션중 최종적으로 선택한 색션을 기억하고 있습니다. 'Getting Started'는 한번정도 볼만한 내용이므로 RSS 색션을 선택해 놓고 종료하면 다시 실행될 때 RSS 색션으로 열립니다.

2) iPhone Dev Center
아이폰 개발과 관련된 Video, Sample Code, Reference Library에 대한 링크로 구성되어 있습니다. 클릭하면 ADC의 해당 문서가 웹브라우져에서 열립니다. 모바일에서의 개발이 맥에서 개발보다 앞에 위치 있다는 것은 애플이 iPhone에 많은 기대를 가지고 있다는 것을 보여 주는 것 같습니다. 개발자도 iPhone 개발자들이 더 많은지는 잘 모르겠습니다.

3) Mac Dev Center
내용은 위와 동일하며 OS X에서 개발에 관련된 Video, Sample Code, Reference Library에 대한 링크로 구성되어 있습니다.

4) Xcode News [RSS]
맥 개발과 관련된 최신 뉴스를 확인할 수 있습니다. 하단의 Mac OS X, Mac OS X server, Core Foundation, Quicktime, Internet & Web, Games, Graphics & Imaging, Networking 링크를 클릭하면 해당 색션의 RSS를 등록할 수 있습니다. 애플에서 제공하는 개발 관련 RSS 목록은 'More RSS feeds...'를 클릭하거나 개발자 RSS Feeds 페이지에 서 확인할 수 있습니다.

5) Mailling Lists
맥 개발과 관련된 메일링 리스트들입니다. 뉴스와 마찬가지로 RSS로 등록하여 확인할 수 있습니다. 애플과 관련된 전체 메일링 리스트들은 'More...'를 클릭하거나 Apple Mailing Lists 페이지에서 확인할 수 있습니다.

6) Tips
Xcode 사용에 관련된 팁들이 있습니다. 주로 Xcode 3에서 추가된 기능들에 관한 설명들이 있으며, 아쉽지만 내용이 다시 실행될 때 마다 변경되지는 않는 것 같습니다. 버젼업 때마다 변경되는 것인지 일정 기간을 두고 변경되는지도 모르겠습니다.


2. New Project
가장 먼저 New Project를 실행해 보았습니다. UI를 제외하고는 이전과 비슷해 보입니다.
iPhoneSDK 를 설치하였기 때문에 템플릿중에 iPhone OS 항목이 있습니다. 이외에 MAC OS X의 Application항목에서 Cocoa-Python과 Cocoa-Ruby에 관련된 템플릿들이 많이 추가되었습니다.



3. 에디터
'TestXcode3' 로 새로운 Cocoa Application 프로젝트를 생성하였습니다. 겉으로 단순히 보기에는 Xcode 2.5와 큰 차이점이 보이지 않습니다.
이 프로젝트에서는 텍스트 필드에 입력 받은 내용을 버튼을 클릭하면 라벨에 출력하는 간단한 어플리케이션을 만들어 볼려고 합니다. 먼저 AppController 클래스를 생성하였습니다.

1) 자동완성/제안 기능 향상
IB까지 입력하면 IBAction과 같이 출력 됩니다. 여기서 엔터를 입력하면 자동으로 IBAction이 입력됩니다. IBO까지 입력하면 좌측과 같이 IBOutlet이 출력되며 이상태에서 엔터를 입력하면 IBOutlet으로 완성됩니다. 프레임워크 와 사용자가 정의한 변수, 함수, 상수등의 모든 입력에서 적용됩니다.

메소드에서도 인자의 정보를 알 수 있어 편리합니다. 얼마 사용하지 않았지만 일반적으로 팝업을 뛰우는 방식과 비교해서 매우 빠르고 편리한 것 같습니다.
 
2) 블럭
* Focus ribbon

또 하나 재미있는 기능은 구역별로 범위를 확인하거나 감출 수 있다는 것입니다. 이런 기능을 가진 툴들은 보았지만 시각적인 효과에 있어서는  Xcode가 가장 인상적인 것 같습니다.

새로 추가된 좌측의 회색 바(Focus ribbon)를 보면 내부로 구역이 중첩될 수록 진하게 표시됩니다. 저 범위에 마우스를 가져가면 범위를 확인하거나 출력되는 삼각형 모양의 아이콘을 클릭하여 해당 범위를 감출 수 있습니다.


* Code folding
가장 바깥쪽의 @implementation 구역에 마우스 커서를 가져가면 좌측과 같이 해당 구역만 하이라이트되어서 보여집니다.

상하 로 삼각형 모양의 아이콘이 범위의 시작과 끝을 알려 줍니다. 이 아이콘을 클릭하면 아래와 같이 @implementsion 내의 내용이 생략되어 보여집니다.






[''']가 구역내의 내용이 생략되었다는 표시입니다. 좌측의 삼각형을 클릭하면 다시 위와 같이 펼쳐집니다.

아래의 이미지들을 확대해서 위의 이미지와 비교해서 보시면 이 기능과 화면효과에 대해서 짐작이 가실 것입니다.

또하나 입력시에 (), [], {}가 끝나는 부분에서 대응되는 시작위치를 알려 주는 기능이 좀 더 시각적으로 변경되었습니다.

4) Message bubbles
이제 빌드를 해보겠습니다. 아래가 빌드 후에 결과 화면입니다.


오류와 경고 메시지가 아주 이쁜(?) 모양으로 강조되어 출력됩니다. 첫번째 오류는 k++ 다음에 ';'를 생략해서이고, 그 아래의 경고는 헤더 파일에서 setLabelText의 선언을 구현과 다르게 해놓았기 때문에 출력되었습니다. 물론 이전과 같이 별도의 결과창도 존재합니다.

5) 스냅샷
스냅샷은 소스내의 변경사항을 간편하게 저장하고 복구할 수 있는 간편한 방법입니다. 소스를 변경하고 Control+Command+s 또는 메뉴에서 File/Make Snapshot을 클릭하면 현재의 상태가 저장됩니다.

#import <Cocoa/Cocoa.h>

@interface AppController : NSObject {
    IBOutlet NSTextField *inputText;
}

@end

AppController.h 에서 위의 상태에서 스냅샷을 설정하고 다시 "- (IBAction)setLabelText:(id)sender;" 선언을 추가한 후에 다시 스냅샷을 설정합니다. 이제 File메뉴 밑의 Snapshot을 실행합니다.
위 와 같이 처음 설정한 곳과 다음 설정한 곳의 차이점을 diff와 같이 보여 줍니다. 툴바의 'Restore' 버튼을 클릭하면 이전 상태로 복구됩니다. 이와 같이 CVS나 SVN을 사용하지 않는 혼자서 진행하는 간단한 프로젝트에 사용하거나 저장소와 병행하여 간편하게 사용할 수 있습니다.

6) 리펙토링
클 래스나 변수, 함수의 이름을 변경하고 슈퍼클래스를 생성하고 메소드를 상위 클래스 또는 하위 클래스로 이동하는 작업을 편리하게 관리할 수 있습니다. 변경된 사항은 관련된 소스와 파일에 자동으로 반영됩니다.

사용방법은 변경할 아이템을 선택한 후에 Shift + command + j 또는 메뉴의 Edit에서 Refactor...를 선택하면 실행됩니다. 

* Rename
AppController 클래스의 이름을 변경해 보겠습니다. 선택사항을 확인한 후에 입력창에 변경될 이름을 입력합니다. Snapshot에 체크를 하면 변경된 내역이 스냅샷에 저장이 됩니다. 저는 아래와 같이 'MyAppController'로 입력하였습니다. 변경될 이름을 입력했으면 [Preview] 버튼을 클릭합니다.
하 단에 변경될 파일들과 항목의 수를 알려 줍니다.
파 일의 클릭하면 해당 파일에서 변경될 내역들을 이전 내용과 비교하여 확인할 수 있습니다. 이상이 없으면 Apply 버튼을 클릭하여 적용합니다.
Xcode 에서 파일이름이 'MyAppController.*'로 변경되고 각 소스에 해당 내용이 변경되었음을 확인할 수 있습니다.


* Extract
선 택된 내용을 새로 메소드나 함수를 생성하여 추가하여 줍니다. 'abc = newValue;'에 적용하면 아래와 같이 소스 코드가 변경됩니다. (사용방법은 Rename과 거의 유사하기 때문에 생략합니다)

변경 전
- (void) setAbc: (int) newValue {
  abc = newValue;
}

 Extract 적용 후
- (void) extracted_method: (int) newValue  {
  abc = newValue;

}
- (void) setAbc: (int) newValue {
  [self extracted_method: newValue];
}

* Encapsulate
클래스 맴버 변수의 setter/getter를 자동으로 생성하여 줍니다. 'int abc;'로 멤버변수를 만들고 Encapsulate를 실행하면 헤더파일과 소스파일에 아래의 내용이 자동으로 추가됩니다.

*.h
- (int) abc;
- (void) setAbc: (int) newValue;

*.m
- (int) abc {
  return abc;
}

- (void) setAbc: (int) newValue {
  abc = newValue;
}

* Create Superclass
해 당 클래스의 슈퍼클래스를 생성합니다.

* Move Up
선택된 변수와 메소드를 상위 클래스로 이동합니다.

* Move Down
선 택된 변수와 메소드를 하위 클래스로 이동합니다.

* Modernize Loop
아래와 같이 반복문에 적용하면 Objective-C 2.0에 추가된 문법으로 변경하여 줍니다.
while ((item = [enumerator nextObject]) != nil) => while (item in itemArray)

Xcode 3에서 코딩은 아직 해보지 못했지만 몇 번 실행은 시켜 보았습니다. 인터페이스 빌더만 조금 변경된 것 같고 Xcode는 Objective-C 2.0외에는 그다지 변경된 내용이 없는 줄 았았습니다. 하지만 잠시 사용해 보았지만 구석구석 편리한 기능들이 많이 추가되고 개선된 것 같습니다. 다른 개발툴에도 있는 기능들이지만 사용하기 편리하고 보기 좋게 잘 만들어 놓은 것 같습니다.

용 어도 잘 모르겠고 제 손에 걸린 것들만 언급을 해서 내용이 매우 부실하니, 시작시에 언급한 문서들에서 확인하시기 바랍니다. 몇 달 더 사용해 보고 '둘러보기'가 아닌 제목으로 다시 한번 포스팅 해보겠습니다.




출처 : http://blog.naver.com/PostView.nhn?blogId=seogi1004&logNo=110085699985
Posted by 오늘마감

댓글을 달아 주세요

XCODE2010. 6. 21. 09:28
[펌] Xcode 3 둘러보기(2) - Interface Builder
출처 - http://www.cocoadev.co.kr/168




이번 포스팅에서는 인터페이스 빌더 3.1을 둘러 보겠습니다. 역시나 이전 Xcode 둘러보기와 같이 두서없고 깊이 없이 둘러만 보겠습니다.



1. XIB 파일
처음 Xcoe3.1을 실행하고 당황스러운 부분은 더블클릭해서 인터페이스 빌더를 실행해야 할 nib 파일이 없어졌다는 것입니다.

그대신 Resources 그룹을 보면 MainMenu.xib가 새로 추가되어 있습니다. 이 MainMenu.xib를 더블클릭 하면 이전과 같이 인터페이스 빌더가 실행됩니다.


아래는 텍스트 에디터에서 열어본 *.xib 파일의 내용입니다.


요즘 많은 툴들에서 사용하는 XML 포맷으로 되어 있지만, 애플에서는 절대 직접 수정하지 말라고 권하고 있습니다. xib 파일은 기본 3,305 라인이기 때문에 그다지 수정할 생각은 들지 않습니다. xib 파일은 아마 윈도우의 rc 파일의 역활을 하는 것 같습니다.

nib 파일은 Xcode에서는 찾을 수 없지만(하위 호환을 위해서 NIB Files 그룹이 존재 하는 것 같습니다) 빌드 후에는 패키지내에 포함됩니다.


2. XIB 윈도우
2.5 버젼과는 달리 Instance, Classes, Images, Sounds, Nib등의 탭이 없어지고, 이전의 Instance에 해당되는 부분만 있습니다. Application과 Font Manager가 추가되었습니다.


3. 라이브러리 윈도우

이 전의 팔레트가 라이브러리 윈도우로 변경되었습니다. 이제 UI 컨트롤, 인스턴스를 추가하는 작업에 라이브러리 윈도우를 사용합니다. 이전과 같이 NIB 윈도우에서 Classes 탭을 이용하여 subclass를 추가할 수는 없는 것 같습니다. 하지만 인스턴스를 클래스(파일)로 만드는 것은 여전히 가능합니다. 아래가 라이브러리 윈도우 입니다.


Cocoa 어플리케이션에서 사용하는 오브젝트와 컨트롤들은 Cocoa 그룹 하단에 다시 세부로 분류되어 잘 정리 되어 있습니다. 지금은 용도를 알수 없는 아이템들이 많고 이전과 비교하여 추가된 부분이 많기 되었기 때문에 기회가 되면 따로 각 아이템의 용도를 공부한 후에 설명해야 될 것 같습니다.

아직 각 아이템들의 명칭을 잘 몰라서 라이브러리 윈도우에서 우클릭을 하면 나오는 보기 옵션에서 'View Icons And Lables'를 선택하여 이름도 같이 볼 수 있도록 선택해 놓았습니다.


4. AppController 인스턴스 생성
우선 AppController 인스턴스와 클래스 파일을 만들어 보겠습니다. 라이브러리 윈도우에서 Cocoa/Objecrts & Controllers(/Controllers) 에서 Object 아이템을 드래그해서 아래와 같이 xib 도큐멘트 윈도우로 가져다 놓습니다.
새로 만들어진 Object가 선택된 상태에서 Shift+Command+i를 클릭하여 인스펙트 윈도우를 오픈합니다. 아래와 같이 Identity 항목을 선택한 다음 Class에 AppController를 입력합니다. 그리고 Action과 Outlet 하단의 [+] 버튼을 클릭하여 아래와 같이 changeTextLabel과 textLabel, userInput을 각각 추가하였습니다.



5. Outlet, Action 연결
라 이브러리 윈도우에서 Label, TextField, Push Button을 윈도우로 드래그 해서 아래와 같이 배치하였습니다.
연결은 오브젝트를 컨트롤 키와 함께 클릭하여 연결될 오브젝트로 드래그 하는 이전과 동일한 방법도 가능합니다. 이전과 다른 점은 인스펙터의 연결창이 오픈되는 것이 아니라 아래와 같이 연결될 Action 또는 Outlet의 목록만 출력됩니다.

인 터페이스 빌더 3에서는 더욱 편리한 방법이 있습니다. xib 도큐먼트 윈도우에서 AppController에 마우스 우클릭을 하면 아래와 같이 연결 판넬이 오픈됩니다.


textLabel의 우측에 원모양의 아이콘을 드래그 하여 Label에 연결합니다. 동일한 방법으로 userInput을 텍스트필드에 연결하고 Received Action의 changeTextLabel을 Set 버튼에 연결합니다.
  

모두 연결된 모습입니다. 해당 항목 앞의 x 아이콘을 클릭하면 연결이 삭제됩니다.

인스펙트 윈도우의 연결 항목에서도 현재 상태를 확인할 수 있습니다. 또한 이곳에서도 해당 아이템 우측의 원모양 아이콘을 드래그하여 해당 오브젝트와 연결 또는 x를 클릭하여 삭제 할 수 있습니다.


6. 소스코드와 연결
1) 클래스 파일 생성
이제 AppController 인스턴스의 클래스 파일을 만들어 보겠습니다. AppController 인스턴스를 선택한 상태에서 인터페이스 빌더 메뉴의 File/Write Class Files...을 클릭합니다. 아래의 창이 뜨면 Save 버튼을 클릭하여 저장합니다.
생 성된 파일의 프로젝트에 포함시키기 위하여 체크를 하고 Add 버튼을 클릭합니다.
2) 슈퍼클래스 지정
Xcode에서 보면 AppController 클래스 파일을 확인할 수 있습니다. 인터페이스 빌더에서 위와 같이 생성한 클래스들은 헤더파일에서 슈퍼클래스를 지정해 주어야 합니다. 오랜지 색으로 되어 있는 부분을 NSObject로 변경하고 저장합니다.

#import <Cocoa/Cocoa.h>

@interface AppController : /* Specify a superclass (eg: NSObject or NSView) */ {
    IBOutlet NSTextField *textLabel;
    IBOutlet NSTextField *userInput;
}
- (IBAction)changeTextLabel:(id)sender;
@end

3) 코드와 동기화
이제 인스펙터에서 다시 확인하면 아래의 붉은색 사각형 부분과 같이 AppController.h라 바가 생겨 Xcode의 AppController 클래스와 연결되어 있음을 알려줍니다.


이전에는 소스코드에 변경사항이 생기면 Xcode에서 해당 클래스의 헤더파일을 드래그 하여 인터페이스 빌더의 nib 도큐먼트로 드랍 해서 변경사항을 적용시켜 주어야 했습니다. 하지만 이제는 Xcode에서 소스코드에 변경사항이 생기고 저장이 되면 인터페이스 빌더에 바로 반영이 되어 매우 편리합니다.

Xcode에서 미리 클래스 파일을 만들어 놓고 인터페이스 빌더에서 해당 클래스를 선택하는 것도 가능합니다.


AppContorller 의 인스펙터에서 새롭게 Outlet을 추가해 보았습니다.

위와 같이 AppController.h의 상단에 MainMenu.xib 바 밑에 추가되기 때문에, 헤더파일에 반영이 되지 않은 것을 쉽게 확인할 수 있습니다. 소스코드에서 아래와 같이 myOutlet1을 추가한 후에 저장해 보았습니다.

#import <Cocoa/Cocoa.h>

@interface AppController : NSObject {
    IBOutlet NSTextField *textLabel;
    IBOutlet NSTextField *userInput;
    IBOutlet NSTextField *myOutlet1;
}
- (IBAction)changeTextLabel:(id)sender;
@end

다시 인터페이스 빌더의 AppController의 인스펙터에서 확인하면 좌측과 같이 변경된 사항이 자동으로 반영되어 있습니다.




7. 기타
1) Effect
눈에 뛰는 것은 인스펙터에 'Effect' 항목이 추가되었다는 것입니다. 코어에니메이션을 이용하여 사용자 UI에 화려한 효과를 주는 것으로 보입니다. 아래는 효과를 선택하는 화면이며,  보시는 바와 같이 다양한 효과가 있습니다. 재미있는 것이 많을 것 같은데 몇가지만 확인해 보았습니다.


코어에니메이션을 사용하기 위해서는 Content View를 체크해야 합니다. Context Filters에서 Color Invert와 Gaussian Blur 필터를 추가해 보았습니다.


* Color Invert + Gaussian Blur 필터 적용

* Color Invert 필터 적용

2) 크기조절과 정렬
윈도우 확대시에 컨트롤들의 위치와 크기를 조절하는 부분을 움직이는 gif로 만들어 보았습니다. (실제로는 훨씬 부드럽습니다)

하 얀색으로 된 부분이 윈도우고 붉은색이 해당 콘트롤입니다. 윈도우 확대시 변화되는 모습을 시각적으로 보여 줍니다.


정렬 기능이 인스펙터에 추가되었습니다. Alignment 항목은 다른 오브젝트와 같이 선택되었을 때 적용이 가능합니다.

Placement는 가로 또는 세로로 정중앙에 위치하게 합니다.



Xcode와 마찬가지로 인터페이스 빌더 3.1에도 재미있고 신기한 기능들이 많이 추가 된 것 같습니다. 잠시 사용해 본 것이라 틀린 내용들이 있을 수 있습니다. 알려 주시면 수정하겠습니다.

이전 인터페이스 빌더를 보면 독특한 방식은 인상 깊었지만 무엇인지 약간 부족한 느낌을 받았습니다. 하지만 이번 3.1버젼은 비록 짧은 시간 일부분만 확인해 보았지만, 안정적이고 완성도가 많이 높아졌다는 느낌을 받았습니다.




출처 : http://blog.naver.com/PostView.nhn?blogId=seogi1004&logNo=110085700131
Posted by 오늘마감

댓글을 달아 주세요

XCODE2010. 6. 21. 09:28
[펌] Xcode 3 둘러보기(3) - 기타
출처 - http://www.cocoadev.co.kr/167






이번 포스팅에서는 Xcode 3에서 2.0으로 업그레이드 된 Objective-C와 추가된 컴파일 옵션에 대해서 알아 보겠습니다.

역시나 깊이도 없고 내용도 별로 없는 제목 그대로 둘러보기 입니다. 자세하고 정확한 자료는 아래의 애플에서 제공하는 문서들을 참고하시기 바랍니다.



1. Objective-C 2.0

1) 가비지 컬렉션 지원
Cocoa Object에 가비지 콜렉션이 지원됩니다. 이제는 더이상 retain, release에 신경을 쓰면서 오브젝트의 retain counts를 관리할 필요가 없게 되었습니다. 가비지 컬렉션은 기본으로 꺼져있습니다. 이를 사용하기 위해서는 Project 정보 윈도우의 Build에서 GCC 4.0 - Code Generation 분류중 'Objective-C Garbage Collection' 항목에서 지원여부를 선택해야 합니다.
   

* Unsupported
가비지 컬렉션을 사용하지 않습니다.

* Supported (-fobjc-gc)
가비지 컬렉션과 이전의 retain/release를 병행해서 사용할 수 있습니다.

* Required (-fobjc-gc-only)
가 비지 컬렉션만 사용하고 이전의 retain, release를 사용하지 않습니다. 새롭게 시작하는 프로젝트는 이 옵션을 선택하는 것이 좋을 것 같습니다.

가비지 컬렉션에 의해 메모리에서 삭제되는 오브젝트에게는 finalize이란 메시지가 전달됩니다. 이 메시지를 처리할 경우에는 반드시 super의 finalize도 호출해야 합니다.

- (void)finalize
{
    ...
    ...
    [super finalize];   
}


2) Property

@property 와 @synthesize를 이용하여 class 내부변수를 편리하고 쉽게 관리할 수 있습니다.

@property(속성) 타입 변수명;
@synthesize 변수명

property의 속성들은 아래와 같으며 ','로 구분합니다.

* getter
getter=getName과 같이 getter 함수의 이름을 지정합니다. 특별히 지정되지 않았을 경우에는 변수명과 같은 이름이 사용됩니다.

* setter
setter=setName과 같이 setter 함수의 이름을 지정합니다. 특별히 지정되지 않았을 경우에는 set[변수명]으로 사용됩니다.

* readonly
읽기전용으로 getter 함수만 사용 가능하고 setter 함수는 사용할 수 없습니다.

* readwrite
getter, setter 함수 모두 사용할 수 있습니다.

* assign
setter 에서 'value = newValue;'와 같이 단순한 할당이 적용됩니다;

* retain
아래와 같이 할당시 변수의 retain이 적용됩니다.
if (value != newValue)
{
    [value release];
    value = [newValue retain];
}

* copy
아래와 같이 할당시 변수의 copy가 적용됩니다.
if (value != newValue)
{
    [value release];
    value = [newValue copy];
}

아래는 property와 synthesize의 사용예입니다. property는 interface내에서 synthesize는 implementation내에서 선언됩니다.

* MyObject.h
#import <Cocoa/Cocoa.h>

@interface MyObject : NSObject {
    NSString *myName;
}

@property(copy,readwrite) NSString *myName;

@end

* MyObject.m
#import "MyObject.h"

@implementation MyObject
@synthesize myName;

@end

이 제 getter와 setter의 구현없이 소스코드에서 아래와 같이 사용할 수 있습니다.
MyObject *myObject = [[MyObject alloc] init];

[myObject setMyName:@"KingKong"];
NSLog(@"%@", [myObject myName]);


3) Dot(.) 문법지원
C++, Java에서 사용하는 '.'를 사용할 수 있게되었습니다. '[obj myName]'과 같이 사용하던 것을 'obj.myName'으로 사용할 수 있습니다. 아래가 사용예입니다.

obj.myName = @"cocoa"; // [obj setMyName:@"cocoa"];
NSLog(@"%@", obj.myName); // NSLog(@"%@", [obj myName]);


4) 에뉴뮬레이션 문법 지원
C 스타일의 for문 대신에 "for ([변수] in [collection 오브젝트])"와 같이 편리하게 사용할 수 있습니다. collection 오브젝트에는 NSArray, NSDictionary, NSSet등의 클래스의 인스턴스가 올 수 있습니다.

NSArray *myArray = [NSArray arrayWithObjects: @"A", @"B", @"C", nil];
   
for (int i = 0; i < [myArray count]; i++) {
    NSLog(@"%@", [myArray objectAtIndex:i]);
}
       
for (NSString *str in myArray) {
    NSLog(@"%@", str);
}



2. 다양한 플랫폼 지원

1) OS X 지원
OS X 10.5, OS X 10.4, OS X 10.3(Xcode 설치시 옵션)의 여러 OS X 버젼과 아이폰을 지원합니다.


2) 64bit 아키텍쳐 지원
이제 코코아 어플리케이션도 64비트로 작성할 수 있습니다.  


3) 컴파일러(GCC) 버젼 선택
GCC 버젼을 선택할 수 있습니다. Xcode 2.5에서도 사용했던 4.0 버젼이 기본으로 선택되어 있으며, 최신버젼 4.2 또는 시스템에 실치된 gcc도 사용이 가능합니다. 그리고 LLVM(Low Level Virtual Machine)을 지원하는 gcc도 선택할 수 있습니다.



가 비지 컬렉션, Property나 에뮬레이션 지원은 반가운 소식인데 닷('.') 문법 지원은 다소 의외입니다. '.'을 사용한 소스를 보면 C++, Java 프로그래머들은 처음 접할 시에 이질감이 덜하겠지만, Objective-C스러운(?) 맛이 줄어 들지 않을까 기우가 듭니다.

아무튼 애플에 의해 Objective-C가 다른 언어들의 장점을 흡수하면서 발전하는 모습을 보니 좋습니다.



출처 : http://blog.naver.com/PostView.nhn?blogId=seogi1004&logNo=110085700261
Posted by 오늘마감

댓글을 달아 주세요

XCODE2010. 6. 21. 09:27
[펌] Xcode 에서 디버깅 작업
출처 - http://www.cocoadev.co.kr/73




Xcode에서 디버깅을 하는 방법에 대해서 알아 보겠습니다.

기본적인 내용만 간단히 알아 보는 것이므로, 보다 상세한 내용은 Xcode 메뉴얼이나 gdb 메뉴얼을 참고해 주세요.


1. 소스코드 편집

Xcode를 실행하고 New Project에서 Command Line Utility/Foundation Tool로 새로운 프로젝트를 생성합니다. 전 testDebug로 하였습니다. 소스파일 (testDebug.m)을 열고 아래와 같이 편집합니다.

#import <Foundation/Foundation.h>

int plusNum(int a, int b)
{
    int c;
    
    c = a + b;
    
    return c;
}

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    // insert code here...
    int i;
    char buff[10];
    
    for(i = 0; i < argc; i++)
    {
        NSLog(@"ARG: %d - %s", i+1, argv[i]);
    }
    
    NSLog(@"MY PATH: %s", getenv("MY_PATH"));
    
    for(i = 0; i < 10; i++)
    {
        buff[i] = '1' + i;
    }
    
    int a, b, c;
    a = 3;
    b= 5;
    
    c = plusNum(a, b);
       
    [pool release];
    return 0;
}


2. 실행인자, 환경변수 설정

빌드 후 실행하면 아래와 같이 ARG 값과 현경변수 MY_PATH의 값을 보실 수 있습니다. 실행 파일의 기본인자는 일반적으로 그 실행파일의 전체경로가 첫번째로 전달됩니다. (사용하시는 OS에 따라 간혹 다를 수 있습니다.) 임의의 MY_PATH 환경변수값은 설정되어 있지 않으므로 null로 출력되었습니다.


이제 디버깅 작업전에 프로그램 실행 시에 줄 수 있는 옵션들에 대해 간단히 알아 보겠습니다. Xcode 좌측의 Groups & Files에서 Executables항목에서 실행파일명을 더블클릭하여 정보창을 엽니다.

좌측과 같이 Arguments 항목 하단 좌측의 [+] 버튼을 눌러 Argument에는 "--all"을 입력합니다.

동일하게 아래의 환경변수창에서도 하단의  [+] 버튼을 눌러 Name에 MY_PATH를 Vale에 임의의 디렉토리를 입력합니다.

(참고로 세번째 Debugging 탭을 클릭하시면 사용하는 디버거, 기본 입출력, 원격 디버깅 등 상세한 디버거 정보를 설정할 수 있습니다. 일반적으로는 기본설정된 상태로 사용하시면 됩니다.)

이 제 프로그램을 다시 실행시켜서 결과를 확인 합니다.





아래와 같이 추가된 인자  "--help"와  환경변수 MY_PATH가 "/usr/local/src"로 설정되어  출력되는 것을 확인하실 수 있습니다.



3. 디버거

Xcode 에서 [shift+command+y] 또는 메뉴의 Debug/Debugger를 클릭하여 디버거를 실행합니다. 디버거를 실행하면 상단에서 아래와 같은 메뉴를 확인하실 수 있습니다.


> Build and Debug
빌드를 하고 성공하면 디버그를 실행합니다.

> Terminate
디 버깅시 나타나며 클릭하면 실행과 디버깅을 종료합니다.

> Fix
디버깅 실행중에 소스 수정이 필요할 경우에는 소스를 수정하고 Fix를 실행하면, 종료/재시작 없이 계속 디버깅을 진행할 수 있습니다.

> Restart
Terminage 와 Debug 명령을 동시에 실행하여, 종료 후 바로 디버깅을 재시작합니다.

> Pause
실행을 잠시 멈춥니다.

> Continue
실행이 중지되어 있을 때, 다음 브레이크포인트를 만나기 전이나 오류발생, 종료 전까지 계속 실행합니다.

> Step Over
함수를 만나도 함수내부로 디버깅을 하지 않고, 다음 라인을 실행합니다.

> Ste Into
함수를 만날 경우 함수내부로 진입하여 디버깅을 진행합니다.

> Step Out
현재 함수를 완료하고 호출된 지점으로 돌아 갑니다.

> Breakpoints
현 재 라인에 브레이크포인트를 추가 또는 제거 합니다. 브레이크포인트는 디버깅 진행시 사용자가 확인을 위하여 어플리케이션 실행이 잠시 중지되는 위치 입니다.

> Console
gdb를 직접 사용할 수 있게 해줍니다.


4. 디버깅

1) 브레이크포인트 설정
디버깅 시 가장 중용한 것 중 하나가 브레이크포인트 입니다. 실행 중간 중간 변수 값 확인을 위해서 의심가는 위치에 실행을 정지하기 위해 브레이크포인트를 설정합니다.

브레이크 포인트는 소스코드 에디터상에서 [command+\]나 에디터 좌측의 판넬(gutter)를 더블클릭함으로서 설정/해제할 수 있습니다. 이제 위의 소스에서 b=5; 라고 되어 있는 라인에 브레이크포인터를 설정하고 디버그를 실행합니다.


위와 같이 브레이크포인트가 설정된 라인에서 프로그램 실행이 멈추었습니다. 우측 상단의 현재 변수값들을 확인해 보면 a는 3으로 지정되었으며 b는 아직 5로 설정되기 전이라 스택의 초기화되지 않은 값이 들어 있습니다.


2) 진행
이제 상단의 [Step Over]를 클릭 또는 [command+shift+o]로 한라인을 실행합니다.

좌측과 같이 b=5;의 한라인 실행되고 다음 라인으로 진행되었습니다.

우측 상단을 보시면 방금 변경된 변수 b가 붉은 색으로 5로 설정되어 있음을 알수 있습니다.




여기서 우측 상단의 변수 c를 우클릭하여 Whatch Variable로 설정합니다. Watch Variable은 변수값이 변경되었을 때 사용자에게 알려 줍니다. 설정되면 변수의 좌측에 돋보기 모양의 아이콘이 나타납니다.



이제 [Step Into] 버튼 [command+shift+i]로 plusNum함수 내부로 들어 가보겠습니다. 실행하면 좌측과 같이 plusNum 함수로 들어와 다음 실행을 위해 대기하고 있습니다.

여기서 잠시 중지하고 변수값을 변경해 보겠습니다.


디버거는 실행 중에 변수값을 변경해 가면서 테스트를 할 수가 있습니다. a=3, b=5로 소스코드에서 설정되어 있습니다. 이제 b의 값을 변경해 보겠습니다. 우측 상단 창에서좌측과 같이  b의 값을 10으로 변경합니다.

이제 다시 Step Over로 한 라인을 진행합니다.

진행하면 c는 13으로 되어 있슴을 확인할 수 있습니다. 또한 c는 Watch Variable로 설정되어 있기 때문에 값이 변했을 때 좌측과 같은 메시지 창이 나타납니다.



중요한 변수를 Watch Variable로 설정해 놓으면, 따로 브레이크포인트를 설정하거나 단계별로 진행하지 않더라도 변경시에만 편하게 알려 줍니다.


5. 기타

1) gdb
Xcode는 디버깅에 gdb를 이용합니다.  우측 상단의 [Console] 버튼을 클릭하면 gdb의 상태를 확인하거나 명령어를 직접 수행할 수 있습니다. 아래는 gdb에서 실행된 모습입니다. next 명령어로 한라인을 진행하고 배열 buff의 값을 파일로 덤프해 보았습니다.



 


위와 같이 터미널에서 buff에 들어 있는 메모리 값을 확인할 수 있습니다. gdb의 사용법을 익혀 놓으시면 빠르고 다양한 방법으로 디버깅을 할 수 있습니다.


2) 브레이크포인트 추가 옵션 설정
[option+command+b]로 브레이크포인트 창을 오픈하여 다양한 옵션을 설정할 수 있습니다. 아래는 해당 브레이크포인트 위치로 왔을 때 Log로 알려 주는 옵션입니다. 우측 하단에  Speak로 설정되어 있으므로, 해당 내용을 음성으로 출력합니다. Log로 설정하면 콘솔창으로 출력해 줍니다. 이외에도 다양한 명령어 및 로그를 설정할 수 있습니다.


Xcode 에서 디버깅을 하는 방법에 대해서 간단히 알아 보았습니다. 프로그램은 구현하는 시간외에도 오류를 찾고 수정하는데도 많은 시간이 걸립니다. 디버거를 이용하면 쉽고 빠르게 오류를 찾아 낼 수 있습니다. 또한 디버깅 작업은 메모리리나 컴파일러가 수행하는 작업을 이해하는데 많은 도움을 줍니다.

gdb의 간단한 사용법만 숙지하시면 쉽게 Xcode의 디버깅 작업을 이해하고 수행할 수 있습니다.



출처 : http://blog.naver.com/PostView.nhn?blogId=seogi1004&logNo=110085699277

'XCODE' 카테고리의 다른 글

[펌] Xcode 3 둘러보기(1) - Xcode  (0) 2010.06.21
[펌] Xcode 3 둘러보기(3) - 기타  (0) 2010.06.21
[펌] Xcode 에서 디버깅 작업  (0) 2010.06.21
[펌] Xcode 에 Subversion 적용하기  (0) 2010.06.21
[펌] Xcode 단축키  (0) 2010.06.21
[펌] Mac OS X 키보드 단축키  (0) 2010.06.17
Posted by 오늘마감

댓글을 달아 주세요

XCODE2010. 6. 21. 09:27
[펌] Xcode 에 Subversion 적용하기
출처 - http://www.cocoadev.co.kr/55






프로젝트 진행 시에 다수 작업, 디버깅, 백업의 의미로 버젼관리는 매우 중요합니다. Xcode에서는  CVS, Subversion, Perforce, 3종류의 SCM(Software Configuration Management) 시스템을 지원합니다.

CVS
오픈소스로 유닉스/리눅스 계열에서 가장 오랫동안 많이 사용하는 버젼관리 시스템입니다. OS X에는 기본으로 설치가 되어있어 바로 사용이 가능합니다.

Subversion
CVS를 대체하기 위해서 나온 버젼관리 시스템으로, CVS에 비해 많은 장점을 가지고 있습니다. 여기서는 Subversion을 이용해 보겠습니다.

Perforce
Perforce Software에서 제공하는 상용 버젼관리 툴입니다.

SVS와 Subversion에 관한 자세한 사항은 아래의 KLDP Wiki를 확인하시고, 여기서는 Xcode에서 Subversion을 사용하는 방법에 대해서 간단히 알아 보겠습니다.


1. Subversion 다운로드/설치

이곳을 클릭하시고 맥 OS X용 Subversion 설치파일(dmg)을 다운로드 받습니다.

현재 버젼은 1.4.4로 설치 프로그램을 실행하시면 간단히 설치하실 수 있습니다.

(소스코드설치를 원하시면 Subversion 사이트에 서 다운로드 받으실 수 있습니다.)

설치가 완료되면 /usr/local/bin/에 실행파일들이 위치합니다. .bash_profile의 PATH에 /usr/local/bin을 추가하시면 터미널에서 사용이 편리합니다.


2. 프로젝트에 Subversion 적용

저 는 Test란 프로젝트에 적용해 보겠습니다. 프로젝트명, 위치등은 각자 환경에 맞게 변경하여 작업하시면 됩니다. 우선 아래와 같이 저장소 디렉토리 svn_test를 생성합니다.

>/usr/local/bin/svnadmin create ~/svn_test


프로젝트를 가져오기 위하여 아래와 같이 tmp라는 임시폴더와 그 아래 trunk, branches, tags 디렉토리를 각각 생성합니다. 그 후에 cp 명령으로 적용시킬 프로젝트를 임시 디렉토리로 복사합니다.  [프로젝트 디렉토리]는 가져 올 프로젝트가 위치한 경로 입니다.

> mkdir tmp
> mkdir tmp/Test
> cd tmp/Test
> mkdir trunk
> mkdir branches
> mkdir tags
> cp -r [프로젝트 디렉토리] ~/tmp/Test/trunk


이 제 svn_test 저장소로 프로젝트를 저장합니다. [계정아이디]는 현재 계정 아이디를 입력하시면 됩니다. 아래의 이미지를 클릭하시면 확대하여 확인하실 수 있습니다.

>/usr/local/bin/svn import ~/tmp/Test file:///Users/[계정아이디]/svn_test --message 'Start...'



그 후에 작업할 디렉토리로 프로젝트를 가지고 옵니다. [프로젝트 디렉토리]는 Test 프로젝트를 저장소로 부터 가져 올 디렉토리이며 전 ~/Projects란 디렉토리로 설정하였습니다. 위와 같이 아래의 이미지를 클릭하여 보시면 이해가 빠르실 겁니다.

> cd [프로젝트 디렉토리]
> /usr/local/bin/svn checkout file:///Users/[계정아이디]/svn_test Test


임 시 폴더를 아래와 같이 삭제하고,  확인을 위하여 Xcode를 실행합니다.

> cd ~/tmp/
> rm -fR Test/


3. Xcode 설정 및 확인


이제 Xcode의 Open메뉴에서 터미널에서 설정하였던 디렉토리의 trunk/[프로젝트명]에서 프로젝트 파일을 가지고 옵니다. 저는 Projects/Test/trunk/Test로 되어 있습니다.

프로젝트 정보창을 열어 Genral  메뉴 하단의 SCM 설정을 아래와 같이 Subversion으로 선택하고 Enable SCM을 체크합니다.

이제 소스코드를 수정하여 봅니다. 확인을 위하여 아래와 같이 기존 소스에 "NSLog..." 라인을 추가하였습니다.

이제 Xcode의 SCM 메뉴에서 Compare With Revision... 을 실행합니다. 비교할 버젼을 선택한 후 [Compare] 버튼을 클릭하시면 이전 버젼과 현재 파일의 차이점을 아래와 같이 확인하실 수 있습니다.

이 제 SCM 메뉴의 Commit Changes... 을 클릭하여 현재 상태를 새로 저장합니다. 변경에 대한 간단한 메시지를 작성한 후 [commit] 버튼을 클릭합니다. Get SCM Info를 클릭하시면 아래와 같이 Test.m 파일에 관한 버젼 히스토리를 확인할 수 있습니다.




출처 : http://blog.naver.com/PostView.nhn?blogId=seogi1004&logNo=110085698583

'XCODE' 카테고리의 다른 글

[펌] Xcode 3 둘러보기(3) - 기타  (0) 2010.06.21
[펌] Xcode 에서 디버깅 작업  (0) 2010.06.21
[펌] Xcode 에 Subversion 적용하기  (0) 2010.06.21
[펌] Xcode 단축키  (0) 2010.06.21
[펌] Mac OS X 키보드 단축키  (0) 2010.06.17
[펌] Xcode, 꼭 알아두면 좋은 것들  (0) 2010.06.17
Posted by 오늘마감

댓글을 달아 주세요

XCODE2010. 6. 21. 09:27
[펌] Xcode 단축키
출처 - http://www.cocoadev.co.kr/52




1. Xcode

1. 프로젝트 & 파일

* 새 프로젝트 [shift][command] N
새로운 프로젝트를 생성한다.
* 프로젝트 닫기 [control][command] W
현재 프로젝트를 종료한다.
* 프로젝트 추가 [option][command] A
프로젝트에 파일을 추가 한다.
* 새 파일 [command] N
새로운 파일을 작성한다.
* 파일열기 [command] O
파일을 오픈한다.
* 파일 저장 [command] S
현재 파일을 저장한다.
* 모든 파일 저장 [option][command] S
프로젝트의 모든 변경된 파일을 저장한다.


2. Xcode

* 새 그룹 생성 [option][command]  N
좌측의 Groups & Fiels에서 새로운 그룹을 생성한다.
* 파일그룹 지정 [option][command] G
선택된 파일들을 새로운 그룹으로 만든다.
* 파일그룹 지정 [option][command][shift]G
그룹을 해제한다.
* 에디터 전체 보기 [shift] [command] E
Group & Files 윈도우를 제외하고 에디터를 전체 보기로 만든다.
* 에 디터 전체 보기 [shift] [option] [command] E
Group & Files 윈도우도 감추고 에디터를 전체 보기로 만든다.
* 클 래스 브라우져 [shift] [command] C
프레임워크 또는 사용자 정의 클래스의 메소드, 소스를 보여 준다.
* target 속성창 [option][command] E
빌드 및 어플리케이션 옵션을 설정한다.
* 실행 속성창 [option][command] X
실행파일 패스, 인자, 디버깅 정보를 설정한다.
* 핼프 [shift] [command] /
Xcode 핼프 윈도우를 연다.


3. 빌드

* 빌드 [command] B
프로젝트를 빌드 한다.
* 빌드 후 실행 [command] R
빌드를 완료한 후, 프로그램을 실행한다.
* 빌드 후 디버그 [command] Y
빌드를 완료한 후, 디버그를 실행한다.
* 빌드 결과 보기 [shift][command] B
빌드 결과창을 보여준다.
* clean [shift][command] K
소스 파일의 날짜를 현재 시간으로 변경하여, 다시 컴파일 될 수 있도록 한다.


4. 디버깅

* 다음 경고/오류 [command] =
소스파일에서 경고나 오류가 발생한 다음 위치로이동한다.
* 이전 경고/오류 [shift][command] =
소스파일에서 경고나 오류가 발생한 이전 위치로 이동한다.
* 디버거 [shift][command] Y
디버거 윈도우로 이동한다.
* 디버그 실행 [option][command] Y
디버그를 시작한다.
* 브레이크포인트 보기 [option][command] B
브레이크포인트가 설정된 위치를 모두 보여 준다.
* 브레이크포인트 [command] \
현재 위치에 브레이크포인트를 설정/해제 한다.
* step into [shift][command] I
한라인씩 실행하며 함수일 경우 내부로 진입한다.
* step over [shift][command] O
한라인씩 실행하며 함수일 경우 건너 뛴다.
* step out [shift][command] T
함수를 나가 호출한 위치 다음으로 이동한다.
* 로그창 [shift][command] R
실행로그창을 보여 둔다.


5. 에디터

* 잘라내기 [command] X
현재 선택된 영역을 잘라낸다.
* 복사 [command] C
현재 선택된 영역을 복사낸다.
* 붙여넣기 [command] V
현재 클립보드에 있는 내용을 붙여 넣는다.
* undo [command] Z
실행을 취소한다.
* redo [shift] [command] Z
undo를 취소한다.
* 전체선택 [command] A
파일 전체를 선택한다.
* 자동완성 보기 [esc]
자동으로 입력될 내용(함수, 변수)들을 보여 준다.
* 다음 제안 [control] .
자동완성 목록중에 다음 목록을 보여 준다.
* 이전/다음 파일 [option] [command] 왼쪽 방향키
여러 파일이 열려있을 경우에 다음 소스 파일을 보여 준다.
* 이전/다음 파일 [option] [command] 오른쪽 방향키
여러 파일이 열려있을 경우에 이전 소스 파일을 보여 준다.
* 헤더/소스 파일 보기 [option] [command] 위쪽 방향키
소스파일일 경우에는 헤더 파일을 헤더파일일 경우에는 소스 파일을 보여 준다.
* 우 측으로 들여 쓰기 [command] ]
현재 또는 선택된 영역의 내용을 오른쪽으로 한칸 들여 쓴다.
* 좌측으로 들여 쓰기 [command] [
현재 또는 선택된 영역의 내용을 왼쪽으로 한칸 들여 쓴다.
* 찾기 [command] F
현재 에디터에서 문자를 찾거나 대치한다.
* 전체 찾기 [shift][command] F
모든 프로젝트 또는 열린 파일에서 문자를 찾거나 대치한다.
* 다음 문자 [command] G
다음 문자를 찾는다.
* 이전 문자 [shift][command] G
이전 문자를 찾는다.
* 찾기 문자열에 복사 [command] E
현재 선택된 문자를 찾을 문자열 에디터에 복사한다.
* 대치 문자열에 복사 [command] J
현재 선택된 문자를 대치할 문자열 에디터에 복사한다.
* 라인 가기 [command] L
지정한 라인으로 바로 간다.
* 북마크에 추가 [command] D
현재 라인을 북마크에 추가한다.


2. 인터페이스 빌더

1) Window

* 인스펙터 [shift][command] I
오브젝트의 속성창을 연다.
* attributes [command] 1
인스펙터의 attributes 항목을 연다.
* connections [command] 2
인스펙터의 connections 항목을 연다.
* size [command] 3
인스펙터의 size 항목을 연다.
* bindings [command] 4
인스펙터의 bindings 항목을 연다.
* 팔레트 [command] /
팔레트 윈도우를 보여준다.
* 테스트 [command] R
윈도우를 실행한다.
* 테스트 종료 [command] Q
윈도우 를 종료하고 인터페이스 빌더로 돌아 온다.
* 정렬 판넬 [shift][command] A
윈도우 상의 오브젝트들을 정렬할 수 있는 판넬을 연다.
* 레이아웃 사각형 [command] L
오브젝트들의 레이아웃을 나타내는 사각형을 보여주거나 감춘다.
* 레이아웃 검사 [shift][command] V
레 이아웃 검사창은 보여준다. 오브젝트들의 겹침, 잘림등을 체크해준다.


2)  Classes

* subclass [option][command] S
Classes 판넬에서 현재 선택된 클래스의 서브클래스를 생성한다.
* Action 추가 [option][command] A
Classes 판넬에서 현재 선택된 클래스에 Action을 추가한다.
* Outlets 추가 [option][command] O
Classes 판넬에서 현재 선택된 클래스에 Outlet을 추가한다.
* Outlets 추가 [option][command] F
Classes 판넬에서 현재 선택된 클래스의 소스파일을 생성한다.


출처 : http://blog.naver.com/PostView.nhn?blogId=seogi1004&logNo=110085698380

'XCODE' 카테고리의 다른 글

[펌] Xcode 3 둘러보기(3) - 기타  (0) 2010.06.21
[펌] Xcode 에서 디버깅 작업  (0) 2010.06.21
[펌] Xcode 에 Subversion 적용하기  (0) 2010.06.21
[펌] Xcode 단축키  (0) 2010.06.21
[펌] Mac OS X 키보드 단축키  (0) 2010.06.17
[펌] Xcode, 꼭 알아두면 좋은 것들  (0) 2010.06.17
Posted by 오늘마감

댓글을 달아 주세요