BLOG main image
분류 전체보기 (92)
Cocoa Touch (11)
Cocoa (10)
Objective-C (13)
Swift (6)
Development (11)
Tools (11)
Books (7)
etc (21)
Application release (1)
Document Project (1)
105,797 Visitors up to today!
Today 0 hit, Yesterday 2 hit
daisy rss
tistory 티스토리 가입하기!
'Class Object'에 해당되는 글 2건
2008. 9. 18. 10:09
Objective-C를 사용하다 보면 nil을 많이 사용하게 된다. nil이 "0" 즉, NULL이란 사실은 다 아는 사실이고 그렇다면 Nil은 무었일까?

이렇게 define 되어있다.
뭐.. 같은거네... 하지만 설명에는 이렇게 되어있다.

nil : Defines the id of a null instance.
Nil : Defines the id of a null class.

null instance라는 말은 익숙할텐데 null class라는 말은 왠지 익숙치 않을듯 하다.
Objective-C는 런타임 상에서 클래스도 "클래스 오브젝트"로 일종의 오브젝트라는 생각을 하면 null class라는 말이 이해하기 쉬울듯 하다. 뭐, 어차피 같은 값으로 define 되어있으니까 nil을 쓰나 Nil을 쓰나 그게 그거이긴 하지만...
박종암 | 2008.09.18 11:06 | PERMALINK | EDIT/DEL | REPLY
우연인데, 얼마전에 Apple의 Objective-C mailing list에 이것때문에 길게 토의가 진행된 적이 있어요.
nil, Nil, NULL, (void *)0 등의 차이가 뭐냐.. 뭐 그랬던거 같은데, 사람들이 이런 저런 이유로 이게 옳다 저게 옳다했었죠. 헤더에서 nil은 (void *)0이래나 하면서 그냥 NULL (0)하곤 다르다 어쩌고 이랬는데요..
지금 헤더를 보니 다 그냥 0이네요. 사실 (void *)0이라고 해도, automatic casting이 되니까, 별 의미 없죠.
제가 보기엔 이건 그냥 coding convention인거 같습니다.
Data Structure 책을 보면 (한국에서 교과서로 제일 많이 쓰는), pointer variable에 대해선 nil을 쓰더군요. ToolBox에서 nil을 보아온 저는 어라? 이거 익숙한데 했죠. 어디서 nil이란 말이 나왔는지는 여전히 모르지만.. 그래서 보면 보통 포인터 변수나 객체는 nil을 써서, 아 이놈이 포인터나 객체.. 즉 어쨌거나 포인터다라는 것을 알게 해주고 NULL이라고 하면 아 스칼라 변수구나 하고 알수있게 해주는거죠.
Nil은... 사실 전혀 쓰지 않아 생소하네요. 있었는지도 몰랐어요.
Jenix | 2008.09.24 13:23 | PERMALINK | EDIT/DEL | REPLY
헛.. Nil 이 있는줄은 이 글 보고 알았어요.
인스턴스랑 클래스를 구분지어 둔거군요. 또 하나 배우고 갑니다 :)
Name
Password
Homepage
Secret
2008. 7. 29. 16:28
이글루에서 옮겨온 글입니다. 2007/04/25 17:37


될거 같다는 생각은 했지만 실제로 이런 코딩은 처음이었습니다.
박종암 | 2008.08.28 05:35 | PERMALINK | EDIT/DEL | REPLY
다시 이 포스트를 봤는데요..

# id classobj = [dict objectForKey:@"NSString"];
# NSString *result = [[classobj alloc] initWithString:@"asdf"];

이 라인들이 좀 거시기 합니다.
objectForKey를 하면.. instance object가 return되는거 아닌가요?
근데 [classobj alloc] 부분에는 Class의 객체가 들어가 줘야 하구요.
근데 instance object로 alloc이 되네요?
근데 이게 된다구요? 해 봐야겠네요. 저두..
참 거시기 한데요?
박종암 | 2008.08.28 05:35 | PERMALINK | EDIT/DEL
근데..
운율이에요.
maccrazy | 2008.08.28 10:42 신고 | PERMALINK | EDIT/DEL
그게 Obj-C가 프로토타입 기반의 언어라서 그래요. 즉, 모든 객체는 클래스 오브젝트의 클론으로 만들어지고, 클래스 오브젝트도 일종의 인스턴스인 관계로...
그런 점에서 alloc이 C++의 new 연산자와는 아주 다른 관점이라고 볼 수도 있고요.
언제 한번 시간 내서 정리해봐야겠네요. 오래전에 Obj-C언어의 기초라고 해서 제가 작성했던 글이 인터넷 여기저기 돌아다니고 있던데 거기 클래스오브젝트와 메타클래스오브젝트 같은거 설명했었거든요. 그 부분을 다시 좀 다듬어서 한번 정리 해봐야겠네요. :)
박종암 | 2010.02.21 04:05 | PERMALINK | EDIT/DEL | REPLY
어제 Harris의 앨빈이라는 사람과 이야기를 하다가 딱 이이야기가 나왔더랬습니다. 그 친구는 Framework을 언어와 같이 생각을 하더라구요. 그렇게 생각하는것도 무리가 아니라고는 생각했지만, 동시에 .NET은 C#/C++과도 다 쓸 수있으니 같이 통합해서 생각하는게 좀 아니다 싶었습니다. 그러던 순간! 탁 뭔가가 머리에 떠올랐는데, 둘을 같이 생각하는 것이, 설명하는 것으로는 참 편하다 싶다는 생각이 들었습니다.
몰아간 제 생각에 대해서 반성하며, han9kin님에게도 반성합니다. 꾸벅~
Name
Password
Homepage
Secret
prev"" #1 next