본문 바로가기
컴퓨터공학/프로그래밍

ObjectiveC | 기초

by KISCH 2020. 2. 7.
반응형



objectiveC



구성요소


❛ .h 헤더파일 (class, type, function, 상수  기록)

 .m 소스파일 (O-C, C 코드 포함 가능)

 .mm 소스파일 (O-C, C, C++ 코드 포함 가능)

 Foundation.h stdio.h #import <Foundation/Foundation.h>

❛ @ -오브젝트 C 언어라는 것을 말해줌. C와의 충돌피하기

코코아 터치가 문자열을 나타내기 위해

 boolean타입 BOOL : YES, NO 설정

 인다이렉션 직접 처리하지 않는것. 파일 인다이렉션

 id 객체를 가르키는 포인터 // void *  같음

 self 자신을 가르키는 포인터 // java this  같음

❛ super  객체가 상속한 상위 객체

 nil 객체가 없음을 나타내는 포인터 // C NULL

 enum 열거형 상수

❛ %s 문자열 대체

❛ %d 정수

 %i



전처리기


 #import #include

 #define 상수값에 심벌명을 부여

 #ifndef 중복 선언 방지



지시어


1.컴파일러 지시어

@interface 클래스 선언

@implementation 클래스 구현

@protocol Delegate 일반적인 선언을   사용

@end class, category, protocol 등을 종료할  사용


2.member 접근 지정자

@private 상속불가, 해당 클래스 안에서만 사용되는 member들의 집합

@protected 정의된 클래스, 상속된 클래스에서만 접근이 가능한 member들의 집합

@public 모든 곳에서 사용할  있는 member


3.exception 핸들링을 위해 사용되는 지시어

@try, @throw, @catch(), @finaly


4.선언을 위한 지시어

@property 프로퍼티 정의에 사용

@synthesize property 정의한 변수 등의 getter,setter없이 사용하고자할 

@dynamic 동적으로 사용되는 메서드와 변수에 사용


5.obj-c 특별한 지시어

@class 사용자 클래스 선언을 위해서 사용

@selector(method_name) 정의된 메서드 이름을 리턴

@protocol(protocol_name) 프로토콜 클래스의 인스턴스를 리턴

@encode(type_spec) type_spec 구조를 인코딩하는 문자열을 산출

@synchronized() 하나의 스레드에 의한 코드 블럭 정의시 사용


 nonatomic : 멀티 스레드 환경 작동 안하게

 retain : 뷰 컨트롤러가 존재하는한 변수가 메모리에서 머무르게



키워드


create

select

check

start

stop

draw

save

upgrade

add

show

find



자료형


 int 정수형

 char 문자값

❛ const 변수의 상수화, 변경 못하게 선언



메시지 보내기


 []; 객체에 메시지를 보낸다

함수호출의 의미


 [[myObject draw]transform];

리턴값이 객체일 경우 중첩가능


❛ :

메시지 인자의 구분



배열


@ 문자와 문자를 묶어 배열을 구별해주는 역활

NSArray

NSMutableArray

arrayWithObjects:



클래스


문자로 시작, Foundation이나 UIKit 임포트


❛ 선

클래스명.h  선언

@interface 클래스명:부모클래스

{

멤버변수선언

}

메서드선언 @end


 구현

클래스.m  구현

@implementation 클래스명

-() …

@end


  생성

ex) MyObject *className = [[MyObject alloc]init];

alloc 클래스 메서드, 메모리를 준비

init 인스턴스 메서드, 인스턴스 변수를 초기화


❛ 클래스의 전방선언

@class XXX;                    

1.  XXX클래스를 사용한다는 것을 선언
2. 컴파일 속도 향상
3. 이 클래스의 메서드를 이용하기 위해서는 헤더 파일을 임포트 해야만 함
4. 여러 개의 인터페이스가 서로의 클래스명을 상호 참조하고 있는 경우 사용 

 인스턴스 변수로의 접근
- 구조체의 멤버에 접근하는 방법과 동일

 해제
Dealloc
-(void) dealloc {
[super dealloc];
}
상속해준 클래스 해제. NSObject 라든지, CCScene이 라든지, CCLayer 라든지...


메서드


 문자로 시작, 변수명과 같아도 무방

 기본 리턴 타입은 id, 타입 지정 생략시 id타입 지정

 선언

메서드타입식별자(리턴타입)메서드키워드:(파라미터타입)파라미터네임

이후는 파라미터

+ 클래스 메서드인스턴스를 생성할 필요가 없다 

-  인스턴스 메서드 : 클래스의 특별한 인스턴스 범위에서 실행, 호출하기 전에 반드시  클래스의 인스턴스를 생성해야한다.



메시징


체가 수행하도록 메시지를 전송

❛ [] 대괄호로 표현

 셀렉터 뒤에 콜론을 붙이고 파라미터 전달

 메시지 셀렉터 : 키워드를 메시지명으로 사용해서 다른 메시지와 구분

myRectangle display];

[myRectangle setWidth:20.0];

[myRectangle setOriginX: 30.0 y:50.0]

display, setWidth:, setOriginX:, y:  개체에 있을 메소드를 선택하는 역할을 하고 있으므로 선택자(selector) 



프로퍼티


어플리케이션에 필요한 데이터를 신뢰할  있고 안전하게 보존하는데 필요한  제공


 @property (…) …

 nonatomic 한 번에 하나의 스레드에서만 사용되는 변수

 속성 키워드

readonly

retain

readwrite

copy

assign



신서사이즈


프로퍼티에서 선언한 데이터들을 외부에서 합법적으로 접근할  있는 통로를 제공

프로퍼티에 대한 메소드를 생성



Strong type, Weak Type


 강형 : 클래스 타입을 확실히 적어주는 

 약형 : 확실히 모를  클래스 타입 대신 id라고 적어준다



메모리


 alloc 객체 생성

retain 메시지 보냄


 retain

retain 1증가, retainCount 0이면 소거될수 있음


 deadlloc 인스턴스 변수 소거

super dealloc];


 release

retain 1감소


 autorelease 소거를 잠시 미룸



SEL타입


@selector 메서드 포인터



delegate, dataSource


❛ delegate

1. 대행자

2. 객체가 어떤일을 하고자할  끝났을  대행자를 가지고 있을 경우  대행자가 수행할  있도록 메시지를 보내는 

3. Will, Did, Should 들어가 있다면 델리게이트 메서드



category


메서드의 묶음

메서드를 묶음단위로 표기할  있고, 기존의 클래스에 묶음으로 메서드를 더할  있다

자바스크립트 prototype  유사



protocol


부모 클래스  <...>

주고 받을  있는 메시지를 규약

자바의 인터페이스와 흡사

정의  @protocol

UIApplicationDelegate 어플리케이션 시작과 종료, 메모리부족, URL리소드, 시스템이벤트




코코아 터치 프레임워크


문자, 문자셋, 배열, 집합, 넘버, 날짜 등 여기에 포함


1. NSObject 루트클래스, 코코아 기본 클래스

2. NSAutoreleasePool Foundation 속한 클래스의 객체를 이용할때 설정

NSAutoreleasePool *변수명 = [[NSAutoreleasePool alloc] init]; // 클래스초기화

[pool drain];


3. NSSting

4. NSArray 수정불가능한 배열

5. NSBundle

6. NSLog 로그를 남기는 , printf

7. NSInteager



UIKit 화면과 관련된 


1. UIWindow 애플리케이션이 스크린에 표시 하는 윈도우를 관리하는 클래스

2. UIView

3. UIButton

4. UIEvent

5. UITextInput

6. UIWebView

7. UILabel

8. UIApplication

9. UIToolbar



라이브러리


❛ strlen 문자열 길이 <foundation.h>

❛ fopen

❛ fgets


❛ 수학함수

ceil() 올림값

floor() 내림값

fabs() 절대값

sqrt() 루트값

pow() 거듭제곱근

exp() 지수값


❛ IBAction

버튼이 눌려졌을  처리하는 메소드


❛ IBOutlet

버튼이 눌려졌을  텍스트를 내보내기 위한 레이블, 화면상의 컴포넌트를 나타낼  쓰이는 키워드






반응형

'컴퓨터공학 > 프로그래밍' 카테고리의 다른 글

C# | 레퍼런스 둘러보기  (0) 2020.02.07
C# | 자료형  (0) 2020.02.07
C# | 기초  (0) 2020.02.07
ObjectiveC | Property Synthesize 지시어  (0) 2020.02.07
C++ | 기초  (0) 2020.02.07
C | 기초  (0) 2020.02.07
함수 | 익명메소드 람다식  (0) 2020.01.03
함수 | 함수 델리게이트 콜백  (0) 2019.11.25

댓글