Objective-C Basic 1.

Slides:



Advertisements
Similar presentations
Python Ch.06 RaspberryPi Sejin Oh. Raspberry Pi Python  IDLE(Integrated Development Environment)  라즈베리 파이 배포본들은 일반적으로 파이썬과 파이썬 3 의 IDLE 파 이썬 개발 도구를.
Advertisements

6 장. printf 와 scanf 함수에 대한 고찰 printf 함수 이야기 printf 는 문자열을 출력하는 함수이다. – 예제 printf1.c 참조 printf 는 특수 문자 출력이 가능하다. 특수 문자의 미 \a 경고음 소리 발생 \b 백스페이스 (backspace)
1 08 배열. 한국대학교 객체지향연구소 2 C 로 배우는 프로그래밍 기초 2 nd Edition 배열  동일한 자료유형의 여러 변수를 일괄 선언  연속적인 항목들이 동일한 크기로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는.
Part 03 상수, 변수, 자료형 ©우균, 창병모 © 우균, 창병모.
Objective-C Basic 1.
OpenCV 안드로이드 연동 환경설정 OpenCV-Android 를 다운 받습니다.
ㅎㅎ 구조체 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스 구조체 배열.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express Slide 1 (of 27)
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
㈜디아이씨 SSLVPN 협력사 접속방법 2017년 4월.
제 9 장 구조체와 공용체.
Power Java 제2장 자바 개발 도구.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
자료 구조: Chapter 3 (2)구조체, 포인터
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 12. 포인터의 이해.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
Chapter 04 C 연산자의 이해.
5장. 참조 타입.
1. C++ 시작하기.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
23장. 구조체와 사용자 정의 자료형 2.
소프트웨어 분석과 설계 Struts2 & JBOSS 설치하기
6장. printf와 scanf 함수에 대한 고찰
14장. 포인터와 함수에 대한 이해.
11장. 1차원 배열.
C 8장. 포인터 #include <stdio.h> int main(void) { int num;
13. 연산자 오버로딩.
JA A V W. 03.
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
Lesson 4. 수식과 연산자.
이름 : 황 상 두 전화번호 : 이메일 : PinTool 이름 : 황 상 두 전화번호 : 이메일 :
3장 상수 변수 기본 자료형 키워드와 식별자 상수와 변수 기본 자료형 형변환 자료형의 재정의.
Java의 정석 제 5 장 배 열 Java 정석 남궁성 강의 의
영상처리 실습 인공지능연구실.
19. 함수 포인터와 void 포인터.
3장. 변수와 연산자 교안 : 전자정보통신 홈페이지 / 커뮤니티/ 학술세미나
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
에어 조건문.
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
2장. 변수와 타입.
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
자바 5.0 프로그래밍.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
Chapter 02. 자바 기본 문법.
8주차: Strings, Arrays and Pointers
Choi Seong Yun 컴퓨터 프로그래밍 기초 #03 : 변수와 자료형 Choi Seong Yun
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
CHAP 21. 전화, SMS, 주소록.
Canary value 스택 가드(Stack Guard).
DK-128 개발환경 설정 아이티즌 기술연구소
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
7주차: Functions and Arrays
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
Numerical Analysis Programming using NRs
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
어서와 C언어는 처음이지 제21장.
윈도우에서의 유니코드.
2장 자바의 기본문법(1).
7 생성자 함수.
6 객체.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

Objective-C Basic 1

1. X-Code & SDK 다운로드 및 설치 X-Code 다운로드 사이트 http://developer.apple.com/iphone/index.action 위의 사이트에서 다운로드 받은 프로그램을 더블 클릭해서 설치 설치 확인 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 3

예제 1.XCode를 실행 Developer 폴더 안에 있는 Applications 폴더에서 Xcode 아이콘을 찾아 더블 클릭 하면 Xcode가 실행됩니다. Xcode가 실행되면 네비게이션 윈도우가 표시됩니다. (설정에 따라 나오지 않을 수도 있습니다.) 4 4

2. [File] – [New] - [New Project]를 클릭하고 MAC OS X 아래의 [Application] - [Command Line Tool]을 선택하고 아래 옵션에서 Foundation을 선택하고 프로젝트 이름 입력(First) 한 후 저장 위치를 설정 5 5

6

3. main. m 파일에 소스 코드 확인 #import <Foundation/Foundation 3. main.m 파일에 소스 코드 확인 #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { @autoreleasepool { NSLog(@"Hello, World!"); } return 0; } 7 7

4.툴바의 아이콘 중에서 Run을 눌러서 컴파일과 실행 Product 메뉴의 Run을 눌러도 됩니다. 8 8

X-Code 도움말 도움말은 다운로드 받아서 사용해야 합니다. [X-Code] - [Preference] – Documents 탭 에서 다운로드 받을 수 있습니다. 9 9

1. [help] – [Documentation and API Reference]을 이용 도움말 사용 1. [help] – [Documentation and API Reference]을 이용 2. 도움말을 보고자 하는 클래스나 메서드를 선택한 후 Command + 클릭 : 클래스가 정의된 파일로 이동 Option + 클릭 : 풍선 도움말 Control + Option + Command + ? : 문서로 바로 이동 10 10

파일 헤더 파일의 확장자는 h로 C언어와 동일합니다.(C++ → hpp) 클래스의 내용을 구현하는 파일의 확장자는 m입니다. (c, cpp, mm, py 등이 될 수 있습니다.) pch 파일은 PreCompiledHeader의 약자로 미리 컴파일 해두고 사용하겠다는 의미의 파일입니다. pch 파일에 포함되어 있는 import 구문은 프로젝트 내의 다른 파일 모두에 import되어 있는 것과 동일한 효과를 나타내게 됩니다. Cocoa 프로그래밍에서는 확장자가 l인 파일은 프로젝트의 정보를 가지고 있는 파일입니다. Cocoa Touch 프로그래밍에서는 plist 파일이 설정 내용을 저장하고 있습니다. 11 11

프로그램 기본 구조 헤더파일을 프로젝트에 추가할 때는 C언어의 #include 대신 #import 이용 의미는 같지만 import는 여러 번 사용해도 한 번만 import됩니다. SDK가 제공하는 헤더파일은 < >안에 기재하며 프로젝트 작업 시 생성한 파일들은 “ “안에 기재합니다. 프로그램의 entryPoint가 main으로 시작하는 것도 C언어와 동일합니다. main의 구조는 C언어와 동일합니다. NSLog는 메시지나 변수를 서식에 맞추어 콘솔 창에 출력해주는 메서드입니다. C언어의 printf와 유사합니다. 메시지를 출력할 때는 @”문자열”의 형태로 사용됩니다. 문자열 상수를 unicode로 나타내려면 Objective-C에서는 @를 붙여서 사용합니다. Objective-C 에서는 모든 문자열을 기본적으로 unicode로 사용합니다. 주석을 처리하는 방법은 C에서와 동일합니다. // 한 줄 주석, /* 여러 줄주석*/ 블럭에 이름 붙이기 #pragma mark 이름 12 12

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 13 13

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는 참조형입니다. 14 14

예제 15 15

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는 데이터를 부호가 없는 형태로 읽이 때문에 가장 큰 정수로 출력 NSLog(@"부호있는 정수:%d \n부호없는 정수:%u ", data, data); char str[] = "Hello World"; NSLog(@"str:%s", str); NSLog(@"str[0]:%c", str[0]); NSLog(@"str[1]부터 끝까지:%s", &str[1]); BOOL isOK=YES; //BOOL 타입의 메모리 사이즈는 1바이트 NSLog(@"BOOL Memory Size:%ld byte", sizeof(isOK)); NSLog(@"isOK:%d", isOK); //16진수 41 => 10진수 65 => 대문자 A unichar uchar = 0x0041; NSLog(@"unichar:%C", uchar); } return 0; 16 16

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에서는 참조형 변수의 경우 선언 시 사용한 데이터 타입과 대입될 때 사용되는 객체의 데이터 타입이 다르면 경고일 뿐 에러가 아닙니다. 일반 값 타입의 자료형 변수의 주소를 대입하면 경고 발생 17 17

예제 18 18

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; NSLog(@"vp가 가리키는 값: %d 주소:%d",*((int *)vp), vp ); //id는 변수가 참조형임을 알리는 데이터 타입 id obj = &n; NSLog(@"obj가 가리키는 주소:%d",obj ); //아래 줄은 XCode4에서는 에러이고 XCode3에서는 유효한 코드 //NSLog(@"obj가 가리키는 주소:%d\n 값:%d",obj, *obj); } return 0; 19 19

3.연산자 (): 연산의 우선 순위 변경 []:배열의 첨자 또는 메서드 호출 ->:구조체의 멤버 필드 참조 . :구조체의 멤버나 객체의 프로퍼티 호출 - : 2의 보수 +:양수 ++:1증가 –:1감소 !: NOT ~:1의 보수 *:포인터 변수의 데이터 참조 &: 일반 변수의 주소 sizeof: 메모리 크기 (자료형): 강제 형 변환 *:곱셈 /:나눗셈 %:나머지 +: 덧셈 -: 뺄셈 <<:왼쪽 시프트 >>:오른쪽 시프트 20 20

<: 작다 <=: 작거나 같다 >: 크다 >=: 크거나 같다 ==: 같다 !=: 다르다 &: 비트 AND ^: 비트 XOR |: 비트 OR &&: 논리 AND ||: 논리 OR ?: : 삼항 연산자 =: 할당 연산자 *=, /=, %=, += -=, &=, ^=, |= <<=, >>= ,: 컴마 연산자 21

예제 22 22

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; NSLog(@"정수의 메모리 크기 : %ld 바이트",sizeof n); float f = 10.7; n = f; NSLog(@"n의 값: %d",n); n = (f+0.5); n = n << 2; n = 4 | 1; n = 1022 & 2; n = 1021 & 2; } return 0; 23 23

4.제어문 예제 24 24

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) NSLog(@"%d", i); cnt++; break; } else if(i%j==0) else continue; NSLog(@"============================="); NSLog (@"2부터 100까지 소수의 개수: %i개", cnt); return 0; 25 25