Home // Blog
Home // Notice
Home // Tag Log
Home // Location Log
Home // Media Log
Home // GuestBook
C++와 Objective-C 간의 차이점 #2
Posted at 2008. 8. 29. 08:56 //
in S/W개발/MACDEV //
by
C++와 Objective-C간의 차이점 #1 도 보세요. 처음으로 Objective-C 2.0을 공부하면서 나름대로 정리하고 있는 내용이라서 오류의 가능성이 충분히 있으니 감안하고 보시기 바랍니다.
- Objective-C에 대해 이런것. 들.이 이미 있었구나. 항상 나는 뒷북을 치고 있는 거네. 쩝~2008-08-28 16:17:26
- C++와 Objective-C의 차이점 #11: root class로 NSObject가 있습니다. 이 클래스는 언어상의 Object는 아니고, Cocoa Framework 상의 Class 입니다.2008-08-28 20:03:23
- C++와 Objective-C의 차이점 #12: 기본적으로 dynamic binding이라는 건 subclass에서 method 를 override 하면 override한 method가 호출된다는 뜻이죠. C++ 용어로 말하자면 모든 method 가 virtual인 셈2008-08-28 21:45:33
- C++와 Objective-C의 차이점 #13: 언어 차원에서 Abstract Class를 정의하는 방법은 없습니다. 소위 interface 또는 abstract class를 정의하는 키워드 같은 건 없고, 그냥 특정 클래스를 그런식으로 쓰면 되는 것 같습니다.2008-08-28 21:50:15
- C++와 Objective-C의 차이점 #14: type 정보를 알아내는 게 언어차원에서 지원되지 않고, NSObject라는 root class의 여러 method 로 지원됩니다. isMemberOfClass: isKindOfClass: 등이 있습니다2008-08-28 21:56:41
- C++와 Objective-C의 차이점 #15: 역시 예상대로 class metadata 가 장난이 아니군요. 클래스 및 상위클래스명, instance variable 들에 대한 description, method 명과 인자 & 리턴값, method 구현까지… class metadata 는 Class 라는 type 이래요. 그리고, MyClass 라는 class 를 정의했다면 MyClass 라는 이름 자체가 class object 가 됩니다. 그래서 [MyClass alloc] 이런 것도 가능하고 [MyClass class] 이런 것도 가능하구요.2008-08-28 21:59:49
- C++와 Objective-C의 차이점 #16: instance 생성 구문 —> id aClass = [[AClass alloc] init]; alloc 은 모든 class object가 구현해야하고, init 는 모든 instance 가 구현해야하고instance 생성과 초기화가 구분되어 있다는 게 좀 그렇긴 하다. 실수를 줄이는 측면에서는 둘이 하나로 합쳐진 게 더 좋은데… 그래도 alloc init 을 연속해서 호출하는 게 idiom 이라면 별 큰 문제는 안 생길 듯…2008-08-28 22:12:56
- C++와 Objective-C의 차이점 #17: multiple inheritance가 안되고, namespace 가 없다. 다중상속은 그렇다 쳐도 namespace가 없다는 건 쫌 그렇다. 대규모 S/W 개발할 때 문제가 될 것 같은데 말이다.2008-08-28 22:21:01
- 여기를 보면 Objective-C가 Smalltalk을 상당히 많이 따랐음을 느낄 수 있다2008-08-28 22:25:22
- C++와 Objective-C의 차이점 #18: class variable이 없다. 그냥 전역 변수를 선언해야 한다. class member에 대한 access 조정은 못하겠네. 상속될 수도 없고. 뭐 근데 별로 그래야 하는 경우가 많을 것 같진 않다2008-08-28 22:40:50
- C++와 Objective-C의 차이점 #19: class 정의가 interface 선언과 implementation 정의가 확연히 구분되어 있다. 게다가 정의 구문도 정말 많이 다르다@interface ClassName : ItsSuperClass { instance variables declaration } method declaration @end —> 정말 특이하네. 이걸 특이하게 느끼는 나는 너무 C++에 익숙해져서 그렇겠지.2008-08-28 22:55:03
- C++와 Objective-C의 차이점 #20: class method 를 정의할 때는 method 이름 앞에 + 를 붙인다. instance method 앞에는 - 를 붙인다.2008-08-28 22:59:26
- C++와 Objective-C의 차이점 #21: method 정의 구문이 많이 다르네. (returnType)methodNameArg1:(arg1Type)arg1Name arg2:(arg2Type)arg2Name 이런식으로 한다.Arg1: arg2: 라고 argument 이름을 붙이는 건 mandatory는 아니지만 보통은 다 그렇게 하나보다. 일종의 idiom 같은 것! 안 그러면 method 이름이 methodName:: 이런식이 돼 버릴테니까. method name을 이런식으로 구성되게 만들면 name mangling도 필요 없지 않을까 싶다2008-08-28 23:03:04
- C++와 Objective-C의 차이점 #22: #include 말고도 #import 라는 directive가 있다. #import 를 쓰면 한번만 include 되도록 보장해 준단다. 훌륭하다. C++도 이렇게 만들어야 하는데. 된장!헤더 파일마다 include guard 쓰기 귀찮다2008-08-28 23:08:19
- 장애인 일어나 걷게 하는, 로봇 슈트 화제: 점차 로봇들이 일상 생활에서 쓰이는구나2008-08-28 09:15:56
- Anti들은 무조건 욕먹는 나라는?: 답은 여기에서…2008-08-28 13:14:43
- The design of preemptible read-copy-update. 리눅스 2.6.X대 커널에 적용된 RCU 스킴에 대한 해설 기사. 상당히 오래전 기사구나. Multi-Core Programming 이 일반화되면 이런 방법이 Appl에도 쓰이겠지2008-08-28 15:10:06
- 선점형 RCU의 구현: 이 링크를 처음 발견한 기사. 여기 있는 다른 링크도 읽어봐야 겠어요.2008-08-28 15:11:54
- 적절히 무시할 수 있는 센스: 무슨 인생의 엄청난 교훈 같기도 하고… 프로그래밍팁 같기도 한 중요한 원리. Multi-Core Programming 에서도 새겨둬야할 얘기겠네요.2008-08-28 15:23:53
이 글은 김윤수님의 2008년 8월 28일의 미투데이 내용입니다.