XCODE2011. 4. 9. 11:13
출처 - 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 삭제  (0) 2011.04.09
[Objective-C] Xcode프로젝트 창  (0) 2011.04.09
[펌] Xcode 에 Subversion 적용하기  (0) 2011.04.09
XCODE용 디버그 메크로  (0) 2011.04.09
새로운 개발툴 XCODE 4  (0) 2011.04.09
[OSX] Xcode 맥과 아이폰 프로그래밍의 준비  (0) 2011.04.09
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 10. 13. 10:22
[아이폰 앱 개발] 모달뷰를 View에 넣는 소스 와 Navigation 에 올리는 소스

네비게이션based 컨트롤러상에서 모달뷰

[self.navigationController presentModalViewController:self.cityWeatherNavigationController animated:YES];


ViewBased컨트롤러상에서의 모달뷰

[self presentModalViewController:self.cityWeatherNavigationController animated:YES];



http://www.iphonedevsdk.com/forum/iphone-sdk-development/21556-presentmodalviewcontroller-viewdidload.html

Posted by 오늘마감

댓글을 달아 주세요

오브젝트C2010. 8. 12. 16:40
Object-C : Declared Properties 에 대한 깔끔한 정리

이번에는 Object-C의 Property에 대해서 이야기를 해볼까 합니다.

어떻게 보면 조금 필요없어 보일수도 있고 어찌보면 MVC(Model, View, Controller)개발 기법과도 밀접한 연관이 있어 보입니다.

하지만 일반적으로 MVC개발에서도 setter/getter로 구성 된 도메인 객체를 따로 두고 있듯이 Object-C에서도 역시 비슷한 구현을 할 수 있는것 같습니다.

Object-C에서 일반적으로 객체의 Property에 접근하기 위해서는 한쌍의 접근자 메서드(getter/setter)를 사용합니다.

이 메서드들을 사용함으로써 객체지향 프로그래밍의 캡슐화(Encapsulation)에 더욱 충실 할 수 있습니다.

관련된 자료는Object-Oriented Programming with Objective-CMechanism Of Abstraction을 찾아보라고 하는군요.

Property를 정의함으로써 효과적으로 접근자 메서드들을 간략화 시키는 효과를 가져올 수 있습니다.

Property를 사용하기 위해서 일반적으로 @property 지시자와 @synthesize 지시자를 함께 사용합니다.

@property 지시자는 클래스의 @interface 내부에 선언하며 다음과 같은 형식으로 선언합니다.

@property(attributes) type name;


하나의 Property 선언은 두개의 접근자 메서드와 동일한 기능을 갖습니다.

@proprtyfloat value;


위의 선언은 다음과 같이 두가지 메서드를 선언한것과 같은 기능을 하게 됩니다.

-(float)value;
-(void)setValue:(float)newValue;



@property 지시자의 attributes 에는 다음과 같은 정의를 할 수 있습니다.

getter=gettername
기본적으로 Property의 getter 메서드 명은 Property 자신의 이름과 동일 (예 : Property가 foo일 경우 foo)
하지만 이 기본 설정을 내가 원하는 메서드명으로 변경 할 수 있습니다.

setter=settername
Property의 setter 메서드 명은 setPropertyName:입니다. (예 : Property가 foo일 경우 setFoo:)
역시나 이 기본 설정을 내가 원하는 메서드명으로 변경 할 수 있습니다.

readwrite (DEFAULT)
Property의 값을 읽고 쓸 수 있다는 것입니다. 이 설정은 기본 설정입니다.

readonly
Property의 값을 단지 읽기만 할수 있다고 정의하는 속성입니다.
이 속성은 @implementation 블럭 안에서 오로지  getter 메서드만 필요할 경우에 사용합니다.
@synthesize 지시자를 사용하였을 경우에는 역시나 getter 메서드의 역할만을 하게 됩니다.
값을 대입 하려고 할 경우 에러를 출력하게 됩니다.

assign(DEFAULT)
단순하게 값을 대입합니다. 기본설정입니다. 이전에 어떤 객체를 가리키고 있던 Property라면 이로 인해 해당 객체는 미아가 되어 메모리릭의 주범이 될 수 있습니다. 가비지콜렉터를 사용하지 않는다면 사용을 피해야 합니다.

retain
이것은 assign과 비슷하지만 조금 다릅니다. 이전에 가리키고 있던 객체가 있다면 해당 객체를 Release하여 메모리에서 제거 합니다. 가비지콜렉터를 사용한다면 결과적으로 assign과 동일한 결과를 가지겠지만 좀더 명시적으로 사용해 주면 좋을것 같습니다.

copy
객체를 바로 대입하지 않고 해당 객체의 복사 메서드를 Invoke호출합니다.
그리하여 다른 메모리 영역에 복사본을 만든 다음 그것을 반환하게 됩니다. 이전에 가리키고 있던 값은 Release 시킵니다.

nonatomic
이 속성은 접근자 메서드가 Atomic 하지 않게 동작하게 합니다(?). 기본적으로 접근자는 Atomic하게 동작합니다.
Atomic이라는 말은 멀티스레드 등으로 구성된 프로그램이 특정 접근자 메서드를 호출할때 서로 충돌이 나지 않도록(보통 세마포어니 크리티컬섹션이니 하는 말들 들어보셨을겁니다.) 객체 레벨에서 Lock을 걸고 Property에 접근하게 되는데요 매우 좋은 이야기지만 접근할때 마다 Lock을 걸고 다시 푸는 작업이 반복되므로 퍼포먼스를 떨어뜨리는 결과를 가져오게 됩니다.
이런 접근이 필요없다면 이 속성을 사용하여 Non-Atomic하게 동작하도록 만들어 주시는 것이 좋습니다.

이제 Property에 대해 거의 모든것을 알게 된것 같네요. 이제 예제를 한번 볼까요?

@interfaceMyClass:NSObject{
   
NSString*value;
}
@property(copy, readwrite)NSString*value;
@end

@implementationMyClass
@synthesize value;
@end


value라는 이름의 Property의 getter 메서드 명은 value이고 setter 명은 setValue입니다.

값을 대입할때 복사가 일어나고 읽고 쓰기를 할 수 있습니다. 또한 nonatomic 속성이 없으니 atomic하게 동작하겠군요.

마지막으로 Property를 사용할때 주의사항이 한가지 있습니다.

객체가 제거 될때 소멸자로 dealloc이 호출되는데 Property들이 자동으로 소거되지 않아 명시적으로 제거해 주셔야 합니다.

-(void)dealloc {
   
[value release];
   
[super dealloc];
}


출처 : http://blog.naver.com/PostView.nhn?blogId=74hans&logNo=109471860

'오브젝트C' 카테고리의 다른 글

다른언어와 다른 Objective-C 만의 특징  (0) 2010.08.31
Objective-C의 기초  (0) 2010.08.22
Object-C : Declared Properties 에 대한 깔끔한 정리  (0) 2010.08.12
Hello iPhone - 1  (0) 2010.08.11
The Objective-C 2.0 Programming Language  (0) 2010.06.24
Objective-C  (0) 2010.06.22
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 6. 25. 07:44
iPhone / iPod touch 에 JAVA 개발환경 설치하기
설치대상 : 1.1.4 버전이상 jailbreake 가 설치된 아이폰

 설치 파일이 비교적 크기 때문에 Settings -> General -> Auto-Lock 을 Never 으로 바꾼다.

Installer 를 실행 시키고 Sources 에서 repository (  http://apptapp.saurik.com  )를 ADD 한다.

▷ Refresh 한다.

Install -> System 으로 들어간다. 

Term-vt100 ( Mibile Terminal App ) 를 찾아서 인스톨 한다.

다시 System 으로 들어간다. Cydia Installer ( The Future of the iPhone ..) 를 설치한다.

    // 두개의 패키지가 있는경우가 있는데 아무거나 해도 상관 없다.

iPhone 을 재시작한다.

화면에 Cydia 라는 아이콘이 생성되 있다.

Cydia 아이콘을 눌러 들어간다.

▷ Install - Java 로 들어간다.

필요한 패키지를 설치한다. ( JAVAVM / JocStrap .. ) 

    ( iPhone 에서 자바 컴파일을 하려고 할 경우  jikes 패키지를 설치한다. )

iPhone 을 재시작한다.

★ iPhone 에서 자바 컴파일시 jikes 컴파일러 사용. ( javac 가 아니고 jikes 를 사용한다. )

$>jikes -cp 포함할jar파일위치 HelloJava.java

$>jikes -cp /usr/lib/rt.jar HelloJava.java

★ Windows 에서 컴파일시. ( iPhone 에서 관련 jar 파일들을 FTP 등을 이용하여 가져와야한다. )

- jdk 1.5 이상  -

 $> javac -cp jar파일위치1;jar파일위치2;jar파일위치3 HelloJava.java

권한문제 발생시 : $> chmod 755 HelloJava



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

댓글을 달아 주세요

오브젝트C2010. 6. 22. 09:53
[Objective-C]id 에 관하여
1) id 타입으로 선언한 변수에 대해서는 어떤 메소드 호출도 기술할 수 있다.

2) id 타입으로 선언한 변수와 클래스명을 타입으로 선언한 변수 간의 상호 대입이 가능하다.

3) 클래스명을 타입으로 사용해서 변수 선언을 하면 그 클래스가 대응할 수 있는 것 외의 메소드 호출에 대해 경고가 나온다.

4) 클래스명을 타입으로 사용한 변수에 그 클래스의 서브 클래스를 타입으로 하는 변수를 대입할 수 있다.

5) 클래스명을 타입으로 사용한 변수에 그 클래스의 슈퍼 클래스를 타입으로 하는 변수를 대입하지 못한다.

6) 프로그램 코드 상의 선언에 관계없이 런타임에는 실제로 변수에 들어있는 객체의 메소드가 실행된다.

7) id타입은 (NSObject *) 타입이 아니다.

동적 할당에 대한 정리문장 입니다. Java 나 ActionScript 와 비슷한 개념입니다.
상속 관련된 개념들의 설명도 있는데 슈퍼클래스 변수로는 하위 서브클래스를 모두 담을수 있겠지만 그 반대는 불가능 하다는 이야기가 되겠지요.
6번 문장은 슈퍼클래스 변수로 서브클래스 객체를 받았어도 메소드 호출시 슈퍼클래스것이 호출되는것이 아니라 서브것이 호출된다는 소리겠지요.
id 타입이 Java 나 ActionScript 에는 없는 형태여서 - ActionScript 에서 *이 있지만 이것은 타입을 나타내는게 아니라 허용을 나타내는듯 합니다. 또한 형선언 없이 var obj; 이런식의 선언만 하니 직접 뭔가가 대입되기 전까지는 undefineed 로 뜨게 됩니다.

Objective-C 역시 C 기반이기 때문에 컴파일 할때 굉장히 깐깐하게 검사할 줄 알았는데 의외로 허술한 부분이 많더군요.
@interface 부분에서 오타가 나서 실제 @implementation 부분과 메소드 명이 틀려졌었는데 그냥 경고만 띄우고 프로그램은 어찌어찌 굴러 갔었습니다. 하지만 또 가끔 정말 뭔지도 모르는 곳에서 에러가 발생했는데 어디가 문제인지도 모르는 경우도 많구요.

아직까지는 갈길이 멀었으니 좀더 해봐야 알것같네요.


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

'오브젝트C' 카테고리의 다른 글

[Objective-C]메모리 관리  (0) 2010.06.22
[Objective-C] 클래스  (0) 2010.06.22
[Objective-C]id 에 관하여  (0) 2010.06.22
[Objective-C] 기본 클래스  (0) 2010.06.22
[Objective-C] 1주일 하면서 알아낸 것들  (0) 2010.06.22
Delegate와 Protocol  (0) 2010.06.22
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 오늘마감

댓글을 달아 주세요