Download presentation
Presentation is loading. Please wait.
1
Objective-C Basic 1
2
1. X-Code & SDK 다운로드 및 설치 X-Code 다운로드 사이트
위의 사이트에서 다운로드 받은 프로그램을 더블 클릭해서 설치 설치 확인 Finder - 자신의 하드디스크 - Developer – Application – Xcode를 확인 설치된 버전 확인 [XCode] – [About Xcode] 로 확인합니다. 삭제(root 패스워드 필요) - 터미널에서 작업 sudo /Developer/Library/uninstall-devtools –mode=all 재설치 sudo rm -rf /Developer/* root 패스워드 변경(기존 계정의 패스워드가 있어야 합니다.) sudo passwd root root 접속 sudo su - root 2 2
3
Developer 디렉토리 Application
Dashcode, Instruments, Quartz Composer, Xcode 앱 등이 설치된 디렉토리 Documents Xcode, Perl, Python, wxWidgets 의 개발 문서 디렉토리 Examples 예제 파일 디렉토리 Extras: 64비트 앱 변환 툴, 코어 이미지 대시보드 위짓, 코어 오디오와 사전용 개발 예제 Headers: 카본용 헤더들과 소스 변환용 스크립트 Library: 개발환경과 프레임워크, Quartz Composer 등의 라이브러리 Makefiles: 내부 프로젝트 구성 요소 Platforms Xcode와 인터페이스 빌더, 인스트루먼트의 플러그인과 내부 구성 요소 및 아이폰 버전별 SDK와 프레임워크, 라이브러리와 개발 문서등이 포함되면 아이폰 시뮬레이터와 버전별 내부 앱과 라이브러리가 있는 디렉토리 SDKs: Mac OS X 10.? 프레임워크 라이브러리와 헤더 포함 Tools: UNIX 명령어 도구들 Usr: UNIX 시스템 도구 들과 헤더, 라이브러리, 컴파일 환경이 포함된 디렉토리 3 3
4
예제 1.XCode를 실행 Developer 폴더 안에 있는 Applications 폴더에서 Xcode 아이콘을 찾아 더블 클릭하면 Xcode가 실행됩니다. Xcode가 실행되면 네비게이션 윈도우가 표시됩니다. (설정에 따라 나오지 않을 수도 있습니다.) 4 4
5
2.[File] – [New] - [New Project]를 클릭하고 MAC OS X 아래의 [Application] - [Command Line Tool]을 선택하고 아래 옵션에서 Foundation을 선택하고 프로젝트 이름 입력(First) 한 후 저장 위치를 설정 5 5
6
6
7
3. main. m 파일의 소스 코드 확인 #import <Foundation/Foundation
3.main.m 파일의 소스 코드 확인 #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { @autoreleasepool { World!"); } return 0; } 7 7
8
4.툴바의 아이콘 중에서 Run을 눌러서 컴파일과 실행 Product 메뉴의 Run을 눌러도 됩니다.
8 8
9
프로젝트 네비게이터 영역 화면에서 보이지 않으면 [View] – [Navigators] – Show 메뉴 중에서 아무거나 선택
9 9
10
프로젝트 네비게이터 영역 프로젝트 네비게이터: 프로젝트 내의 파일 구성을 출력
심벌 네비게이터: 클래스 계층과 메서드 등을 출력 Find 네비게이터: 찾기 이슈 네비게이터: 오류나 경고 등을 출력 디버그 네비게이터 브레이크 포인트 네비게이트 로그 네비게이터 10 10
11
X-Code 도움말 도움말은 다운로드 받아서 사용해야 합니다.
[X-Code] - [Preference] – Documents 탭 에서 다운로드 받을 수 있습니다. 11 11
12
1. [help] – [Documentation and API Reference]을 이용
도움말 사용 1. [help] – [Documentation and API Reference]을 이용 2. 도움말을 보고자 하는 클래스나 메서드를 선택한 후 Command + 클릭 : 클래스가 정의된 파일로 이동 Option + 클릭 : 풍선 도움말 Control + Option + Command + ? : 문서로 바로 이동 12 12
13
파일 헤더 파일의 확장자는 h로 C언어와 동일합니다.(C++ → hpp) 클래스의 내용을 구현하는 파일의 확장자는 m입니다.
(c, cpp, mm, py 등이 될 수 있습니다.) pch 파일은 PreCompiledHeader의 약자로 미리 컴파일 해두고 사용하겠다는 의미의 파일입니다. pch 파일에 포함되어 있는 import 구문은 프로젝트 내의 다른 파일 모두에 import되어 있는 것과 동일한 효과를 나타내게 됩니다. Cocoa 프로그래밍에서는 확장자가 l인 파일은 프로젝트의 정보를 가지고 있는 파일입니다. Cocoa Touch 프로그래밍에서는 plist 파일이 설정 내용을 저장하고 있습니다. 13 13
14
프로그램 기본 구조 헤더파일을 프로젝트에 추가할 때는 C언어의 #include 대신 #import 이용
의미는 같지만 import는 여러 번 사용해도 한 번만 import됩니다. SDK가 제공하는 헤더파일은 < >안에 기재하며 프로젝트 작업 시 생성한 파일들은 “ “안에 기재합니다. 프로그램의 entryPoint가 main으로 시작하는 것도 C언어와 동일합니다. main의 구조는 C언어와 동일합니다. NSLog는 메시지나 변수를 서식에 맞추어 콘솔 창에 출력해주는 메서드입니다. C언어의 printf와 유사합니다. 메시지를 출력할 형태로 사용됩니다. 문자열 상수를 unicode로 나타내려면 앞에 붙여서 작성 const char * 은 “문자열”의 형태로 사용 주석을 처리하는 방법은 C언어 에서와 동일 // 한 줄 주석, /* 여러 줄주석*/ 블럭에 이름 붙이기 #pragma mark 이름 14 14
15
2.자료형 1.정수 int: 정수 상수의 기준형 앞에 long을 붙여서 long형을 만들 수 있습니다.
작은 정수를 저장하는 short도 있습니다. unsigned를 가능 %d, %i, %u, %x 등을 이용해서 출력합니다. =>Objective-C: NSInteger, NSUInteger 2.실수 float은 작은 실수를 저장할 때 사용하며 4바이트를 차지합니다. double은 실수 상수의 기준 자료형이며 float 형 실수 상수는 숫자 뒤에 f를 붙여서 표기 double은 기본적으로 8바이트를 차지하며 출력할 때는 %f, %g, %e를 이용합니다. =>Objective-C: CGFloat 15 15
16
unichar는 유니코드 문자를 나타내며 2바이트 문자입니다. 출력을 할 때는 %C를 이용합니다. 4.논리형
3. 문자 char를 이용하며 1바이트 문자입니다. 출력을 할 때는 %c 또는 %d를 이용합니다. unichar는 유니코드 문자를 나타내며 2바이트 문자입니다. 출력을 할 때는 %C를 이용합니다. 4.논리형 BOOL로 표시하며 1바이트를 차지하고 값은 YES와 NO가 있으며 출력은 %d로 합니다. 0이나 nil은 NO로 간주하며 0이 아닌 일반 변수나 nil이 아닌 id는 YES로 간주 5.포인터 타입 자료형과 *을 이용해서 포인터 타입의 변수를 생성할 수 있습니다. 6. id 객체를 가리킬 수 있는 데이터 타입 *이 없지만 id는 참조형입니다. 16 16
17
예제 17 17
18
1.Mac OS X의 Command Line Tool 프로젝트 생성(DataType) 2.main.m 파일의 코드 수정
int main (int argc, const char * argv[]) { @autoreleasepool //한 줄 주석입니다. unsigned int data = -1; //%d는 데이터를 부호가 있는 형태로 읽기 때문에 -1 //%u는 데이터를 부호가 없는 형태로 읽이 때문에 가장 큰 정수로 출력 정수:%d \n부호없는 정수:%u ", data, data); char str[] = "Hello World"; str); str[0]); 끝까지:%s", &str[1]); BOOL isOK=YES; //BOOL 타입의 메모리 사이즈는 1바이트 Memory Size:%ld byte", sizeof(isOK)); isOK); //16진수 41 => 10진수 65 => 대문자 A unichar uchar = 0x0041; uchar); } return 0; 18 18
19
id 타입 Objective-C 언어는 runtime 시에 객체나 메서드를 결정하므로 기존의 데이터 타입을 미리 기재하는 static typing 이외의 방법이 필요합니다. Objective-C는 모든 참조형 데이터(힙에 생성)를 전부 포인팅 할 수 있는 타입(참조형)을 id라는 데이터 타입으로 가지고 있습니다. C언어의 void * 개념과 id는 유사합니다. id타입을 사용하기 위해 Objective-C에서는 모든 객체에게 isa 라는 instance variable을 멤버로 소유하게 했습니다. isa는 객체가 사용할 클래스 객체의 id를 저장하게 있는데 이것을 이용해서 runtime 시에 데이터 타입을 알아낼 수 있게 됩니다. Objective-C에서 참조형을 선언할 때 사용한 데이터 타입은 실제적으로는 id 타입입니다. Objective-C에서는 참조형 변수의 경우 선언 시 사용한 데이터 타입과 대입될 때 사용되는 객체의 데이터 타입이 다르면 경고일 뿐 에러가 아닙니다. 일반 값 타입의 자료형 변수의 주소를 대입하면 경고 발생 19 19
20
예제 20 20
21
1.Mac OS X의 Command Line Tool 프로젝트 생성(idTest) 2.main.m 파일의 코드 수정
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { @autoreleasepool int n = 10; //경고 발생 void *vp = &n; 가리키는 값: %d 주소:%d",*((int *)vp), vp ); //id는 변수가 참조형임을 알리는 데이터 타입 id obj = &n; 가리키는 주소:%d",obj ); //아래 줄은 XCode4에서는 에러이고 XCode3에서는 유효한 코드 가리키는 주소:%d\n 값:%d",obj, *obj); } return 0; 21 21
22
3.연산자 (): 연산의 우선 순위 변경 []:배열의 첨자 또는 메서드 호출 ->:구조체의 멤버 필드 참조
. :구조체의 멤버나 객체의 프로퍼티 호출 - : 2의 보수 +:양수 ++:1증가 –:1감소 !: NOT ~:1의 보수 *:포인터 변수의 데이터 참조 &: 일반 변수의 주소 sizeof: 메모리 크기 (자료형): 강제 형 변환 *:곱셈 /:나눗셈 %:나머지 +: 덧셈 -: 뺄셈 <<:왼쪽 시프트 >>:오른쪽 시프트 22 22
23
<: 작다 <=: 작거나 같다 >: 크다 >=: 크거나 같다 ==: 같다 !=: 다르다 &: 비트 AND
^: 비트 XOR |: 비트 OR &&: 논리 AND ||: 논리 OR ?: : 삼항 연산자 =: 할당 연산자 *=, /=, %=, += -=, &=, ^=, |= <<=, >>= ,: 컴마 연산자 23
24
예제 24 24
25
1.Mac OS X의 Command Line Tool 프로젝트 생성(OperatorTest) 2.main.m 파일의 코드 수정
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { @autoreleasepool int n = 10; 메모리 크기 : %ld 바이트",sizeof n); float f = 10.7; n = f; 값: %d",n); n = (f+0.5); n = n << 2; n = 4 | 1; n = 1022 & 2; n = 1021 & 2; } return 0; 25 25
26
4.제어문 예제 26 26
27
1.Mac OS X의 Command Line Tool 프로젝트 생성(ControlState) 2.main.m 파일의 코드 수정
#import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { @autoreleasepool int cnt = 0; for(int i=2; i<=100; i++) for(int j=2; j<=i; j++) if(i % j == 0 && i == j) i); cnt++; break; } else if(i%j==0) else continue; NSLog 100까지 소수의 개수: %i개", cnt); return 0; 27 27
Similar presentations