<출처 : http://wwwww.kr/30792>
1. MAC OS 의 변천사.
<출처 : http://en.wikipedia.org/wiki/History_of_Mac_OS>
단축키
Ctrl => command
Alt => option
Mac을 처음 사용 하는 입장에서 제일 헷갈리는 단축키다.
shift + command + <- : home key
-> : end key
objective-c 를 하려면 아래 세가지가 필요
=========================
c level - 순수 c언어
core level - 앞에 cf가 붙음
object-c - NS가 붙음
언어 : objective-c
프레임워크 : iPhone SDK (cocoa touch)
Mac OS X (cocoa)
cocoa touch(i-os) - ipod, iphone, ipad
cocoa - mac os x
project folder
=============
source - .h, .m… 클래스에 관한 파일 들어감
메모리에 모두 자동으로 로드가 됨
other - main, pch
실행하는데 반드시 필요하지만 소스는 아니다.
resources - 외부자원
필요할때 읽어 옴
framework - 라이브러리
오브젝티브c 에선 안씀. 나중에 아이폰에서 사용
products - 번들(App)
실행 파일
objective-c 기본 구성파일
================================
project name.m : 메인을 소유 (c언어의 .c or .cpp 파일에 해당)
.pch : PreCompiled Header 미리 번역해놓는 파일. 속도향상을 위하여.
import하면 모든 파일(h와m파일)에 적용된다.
=> 부피는 커지지만 속도는 빨라짐
.l : 프로젝트 정보에 대한 파일. 아이폰에선 info.plist 로 변경됨
.Os Darwin \" 맥os x 를 외부에서 부르는 이름
추가구성
.h : header file
런을 할때는 콘솔을 띄우고 확인
런 - 콘솔 (쉬프트 커맨드 알)
가끔 iOS나 Android 프로그래밍 할 때도 마찬가지지만
알 수 없는 오류가 발생할 때가 있는데 이럴때는 엑스코드에서
방법1. 빌드 - 클리어 올 타겟
방법2. 시뮬레이터에서 초기화
정수
unsigned int : 양의 정수를 저장
unsigned int a = -1 //가능. 컴퓨터에선 1의 2의 보수. -1은 정수에서 Maximum 이다. 무한대의 의미.
=> NSInteger, NSUInteger
문자
char - 1byte
unichar - unicode, 2byte. %c use.
논리형
BOOL로 표시. 값은 yes or no
&d 사용
c에서 printf와 sprintf의 다른점?
간단하게 설명하면
printf는 일반적인 outputStream을 보여준다.
fprintf는 파일을 핸들링한다.
sprintf는 할당된 버퍼로 이동한다.
사용법은 아래와 같다.
#include <stdio.h>
int fprintf(FILE *stream, const char *format, …);
int printf(const char *format, …);
int sprintf(char *buffer, const char *format, …);
=================================================================================================
파일
=================================================================================================
Ø헤더 파일의 확장자는 h로 C언어와 동일합니다.
Ø소스 파일의 확장자는 m입니다.
=================================================================================================
프로그램 기본구조
=================================================================================================
C언어의 printf와 유사합니다.
일반 메시지를 출력할 때는 @”문자열”의 형태를 취하면 됩니다.
Objective-C 에서는 모든 문자열을 unicode로 사용하기 때문입니다,
문자열 상수를 unicode로 나타내려면 Objective-C에서는 @를 붙여서 사용합니다.
// 한 줄 주석
/* 여러 줄주석*/
=================================================================================================
기본자료형
=================================================================================================
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
3. 문자
char를 이용하며 1바이트 문자입니다.
출력을 할 때는 %c 또는 %d를 이용합니다.
unichar는 유니코드 문자를 나타내며 2바이트 문자입니다.
출력을 할 때는 %C를 이용합니다.
4.논리형
BOOL로 표시하며 1바이트를 차지하고 값은 YES와 NO가 있으며 출력은 %d를 이용하여 0과 1로 출력합니다.
0이나 nil은 NO로 간주하며 0이 아닌 숫자나 nil이 아닌 id는 YES로 간주합니다.
5. id
객체를 가리킬 수 있는 데이터 타입
*이 없지만 id는 포인터 타입(참조형)으로 간주합니다.
6. 포인터 타입
자료형과 *을 이용해서 포인터 타입(참조형)의 변수를 생성할 수 있습니다.
01.
#import <Foundation/Foundation.h>
02.
int
main(
int
argc,
char
*argv[])
03.
{
04.
//한 줄 주석입니다.
05.
unsigned
int
data = -1;
06.
NSLog(@
"%d %u "
, data,data);
07.
char
str[] =
"Hello World"
;
08.
NSLog(@
"%s"
, str);
09.
NSLog(@
"%c"
, str[0]);
10.
NSLog(@
"%s"
, &str[1]);
11.
BOOL
isOK=YES;
12.
NSLog(@
"BOOL Memory Size:%d byte"
,
sizeof
(isOK));
13.
NSLog(@
"%d"
, isOK);
14.
return
0;
15.
}
=================================================================================================
id 타입
=================================================================================================
- Objective-C 언어는 runtime 시에 객체나 메서드가 변할 수 있으므로 기존의 static typing 이외의 방법이 필요합니다.
- Objective-C 에는 모든 객체를 전부 포인팅할 수 있는 타입을 새로 정의해 놓았는데 id 입니다.
- C언어의 주소의 개념과 id는 유사합니다.
- id타입을 사용하기 위해 Objective-C에서는 모든 객체에게 isa 라는 instance variable을 멤버로 소유하게 했습니다.
- 실제 그 객체가 사용할 클래스 객체의 id를 저장하고 있는데 이것을 이용해서 runtime 시에 데이터 타입을 알아낼 수 있게 됩니다.
- C언어의 void *과 유사하지만 void *과는 조금 다릅니다.
- void * 은 실제 사용을 하고자 하는 경우 형 변환을 해서 사용해야 하지만 id는 형 변환 없이도 자유 자재로 사용할 수 있습니다.
- id에 클래스를 자료형으로 갖는 데이터가 아닌 데이터의 주소를 대입할 수 있지만 Warning이 발생합니다.
01.
#import <Foundation/Foundation.h>
02.
int
main(
int
argc,
char
*argv[])
03.
{
04.
int
n = 10;
05.
NSLog(@
"정수의 메모리 크기 : %d 바이트"
,
sizeof
n);
06.
float
f = 10.7;
07.
n = f;
08.
NSLog(@
"n의 값: %d"
,n);
09.
n = (f+0.5);
10.
NSLog(@
"n의 값: %d"
,n);
11.
n = n << 2;
12.
NSLog(@
"n의 값: %d"
,n);
13.
return
0;
14.
}
=================================================================================================
제어문
=================================================================================================
반복문은 for, while, do ~ while이 있으며 이를 제어하기 위한 continue, break
조건문은 if, switch가 있습니다.
01.
#import <Foundation/Foundation.h>
02.
int
main (
int
argc,
const
char
* argv[])
03.
{
04.
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
05.
int
cnt = 0;
06.
for
(
int
i=2; i<=100; i++){
07.
for
(
int
j=2; j<=i; j++){
08.
if
(i % j == 0 && i == j){
09.
NSLog(@
"%d"
, i);
10.
cnt++;
11.
break
;
12.
}
13.
else
if
(i%j==0){
14.
break
;
15.
}
16.
else
{
17.
continue
;
18.
}
19.
}
20.
}
21.
NSLog(@
"============================="
);
22.
NSLog (@
"2부터 100까지 소수의 개수: %i개"
, cnt);
23.
[pool drain];
24.
return
0;
25.
}
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
//메모리해제를 대신해주는 pool
// insert code here...
NSLog(@"Hello, World!");
// NSLog = printf와 같은 기능, @:유니코드로 출력하라!
[pool drain]; // drain : release
return 0;
}
'iOS' 카테고리의 다른 글
Chap3-2. property,synthesize,atomic,setter,getter,assign,readonly,.(dot),const,extern,상속,self,super,다형성,동적바인딩,nil포인터,지역메서드 (0) | 2012.03.21 |
---|---|
Chap3-1. property와 synthesize (0) | 2012.03.20 |
Chap2. id,연산자,파일의구조,클래스 (0) | 2012.03.19 |
iOS, hitTest 메서드를 통한 Touch Event 처리 (0) | 2011.07.26 |
iOS, ScrollView Paging기법 (0) | 2011.07.26 |