구성요소
❛ .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은 인스턴스 메서드, 인스턴스 변수를 초기화
❛ 클래스의 전방선언
[super dealloc];
메서드
❛ 소문자로 시작, 변수명과 같아도 무방
❛ 기본 리턴 타입은 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 |
댓글