오후 4:17 2008-09-30
cocoa basic #1
조경민 bro@shinbiro.com neri.cafe24.com
====================================================================


hello world!
------------------------------------------------------------


int main ( int argc, const char *argv[])
{
  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
 
  NSLog(@"Hello World"); // printf 유사


  [pool release];
  return 0;
}


동적 배열 사용하기
------------------------------------------------------------


NSMutableArray


int main ( int argc, const char *argv[])
{
  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];


  NSMutableArray *arr = [[NSMutableArray alloc] init];


  [arr addObject: @"string1"];
  
  int iCount = [arr count];
  NSString* ps = [arr objectAtIndex: 0];


  NSLog (@"Array description: %@ \n", arr );


  [arr release] 
  [pool release];
  return 0;
}


해쉬맵을 필요로 한다면 NSMutableDictionary를 사용



윈도우 프로그래밍 기초
------------------------------------------------------------


윈도우 클릭 시 Quartz 윈도우 서버 (윈도우 매니저)는 눌린 윈도우를 알아낸 후 관련된 NSApp 프로그램에게 이벤트를 알려준다.
NSWindow 안에 NSView가 속할 수 있다. (자식윈도우)


Nib : Interface Builder (리소스 에디터)로 생성한 윈도우 배치 리소스 파일 (MFC의 res 유사)
아웃렛: Interface Builder에서 윈도우에 생긴 버튼을 관리하기 위한 인스턴스 변수 (MFC 다이얼로그에 붙은 버튼 관리 위한 클래스 위자드 CButton 생성하는 것과 같음)
액션: 버튼 클릭 등 이벤트 핸들러 함수


아울렛 생성시 만일 에디트 컨트롤 생성하면 MyController.h에 다음 처럼 추가됨.
IBOutlet NSTextField *textField;



Autorelease Pool
------------------------------------------------------------
객체의 참조카운터를 내리는 과정 release 또는 autorelease
올리는 과정 retrain


만일 내가 생성한 객체가 아닌 인자로 받은 객체를 release하면 안된다.
만일 인자로 보내줄 때 retrain해서 참조를 늘려줬다면 받아서 쓰고 release를 한다.


free나 dealloc을 호출하지 않는다.



NSWindow라면 newTitle 객체와 title을 공유하지 않기 위해 아래처럼 할 수 있다.
- (void)setTitle: (NSString *)newTitle
{
  [title autorelease];
  title = [newTitle copy];
}


아래는 원치 않는 결과 나올 수 있음.
NSMutableString *foo = [NSMutableString stringWithCString:"foo"];
[myWindow setTtitle:foo];
[foo appendString:@"bar"]; // 타이틀이 foobar가 됨.


 

'KB > iphone/mac' 카테고리의 다른 글

[iPhone SDK] ViewController 관련..  (0) 2008.10.02
[iPhoneSDK] 버튼 클릭하기  (0) 2008.09.30
Obj-C 간단한 C++ 비교 사용 법  (0) 2008.09.30
cocoa å  (0) 2008.09.30
xcode 유용한 개발 단축키  (0) 2008.09.29

+ Recent posts