코딩 기본 규칙
1. 클래스는 대문자로 시작한다.
2. 인스턴스 변수는 소문자로 시작한다.
* private 일 경우 _xxx, __xxx 허용
* 최상위 클래스
NSObject (자바의 Object같은 것인듯)
클래스를 만들때 NSObject를 상속받는다.
* 상속, 클래스 변수, 연산자 오버로딩
다중 상속을 지원하지 않는다.
클래스 변수를 지원하지 않는다. (자바와는 다른듯?)
연산자 오버로딩을 지원하지 않는다.
아규먼트 오버로딩을 지원하지 않는다.
* id, self, super, nil, @""
id : 객체를 가리키는 포인터 void*와 같다.
self : 자신을 가리키는 포인터. (자바의 this)
super : 자바의 super
nil : 객체가 없음.
NULL : C와 같음
c style 의 스트링 "하하"
유니코드 스트링 @"하하"
* 메소드의 기본 리턴타입은 id
- (id)sayHello
- sayHello
두가지는 같은 의미. 즉 명시하지 않으면 기본으로 객체 타입을 리턴한다.
* 객체 생성
MyObject *className = [[MyObject alloc] init];
alloc은 클래스 메소드. init은 인스턴스 메소드
alloc - 메모리 준비, init - 인스턴스 변수 초기화
* 메세지 보내기(자바의 "함수 호출" 이란 뜻인듯)
Object C 는 [ 구문 ]; 형식을 취한다.
[myObject draw];
* 메세지 인자
메세지 인자는 : 로 구분한다.
[myObject drawWithX:pointX withY:point Y];
[myObject drawWithX:pointX:point Y];
두가지는 같은 뜻이지만 위에것이 더 명확하다.
* import
C의 include도 허용하지만 자바처럼 import를 사용하는 듯하다.
* 클래스 선언
클래스이름.h 로 파일 생성
Foundation이나 UIKit을 import
-> #import <Foundation/Foundation.h>
-> #import <UIKit/UIKit.h>
@interface 클래스이름 : 상위클래스 로 선언
+(Return type) ClassMethod; -> Class Method Declare
-(Return type) InstanceMethod; -> Instance Method
@end 로 닫는다.
클래스 선언 예제
#import <Foundation/Foundation.h>
@interface MyName:NSObject
{
NSString *name;
}
+(MyName*) newInstance; //or +(Id)newInstance;
-(Id)initWithName:(NSString *)name;
@end
* 클래스 구현
클래스이름.m 으로 파일 생성
#import "클래스이름.h" 로 미리 선언한 헤더 import
@implementation MyName 으로 구현시작
+(Return type)ClassMethod {...}; 구현
-(Return type)InstanceMethod {...}; 구현
클래스 구현 예제
#import "MyName.h"
@implementation MyName
+(MyName*)newInstance
{
// 내용 구현
return [[MyName alloc] initWithName:null] autorelease];
}
-(Id)initWithName:(NSString*)name
{
// 내용 구현
if(self = [super init])
{
}
return self;
}
@end
출처 : http://blog.naver.com/PostView.nhn?blogId=marlboroyw&logNo=130126597618