Objective C/C언어 기능2010. 7. 18. 17:46

 지금까지 다루어 배열, 구조체, 문자 스트링 상수, 공용체 이들은 객체가 아니다.

 또한 Foundation프레임 워크에서 제공하는 기능, 특히 메모리 할당과 같은 기능을 사용할 없다.

 이는 메모리 활용 관리가 어렵다는 것이다.

 

 ############### 오브젝티브 C 동작하는 방식 ###############

 1) 인스턴스 변수는 구조체에 저장된다.

- 클래스와 그에 속한 인스턴스 변수를 정의하면 변수 들은 구조체에 저장된다.

- 객체는 인스턴스변수로 구성된 구조체이다.

- alloc으로 객체를 생성하면 구조체로 메모리 공간에 예약된다.

 

 2) 객체는 포인터이다.

 - Fraction * myFraction 같이 객체는 포인터이다.

 - myFraction = [Fraction alloc]; 으로 Fraction클래스(구조체) 리턴받아 myFraction 할당한다.(객체 생성)

 - 할당받은 myFraction Fraction 복사체이다

 - 원본과 별개의 메모리공간을 가지고 있으므로 원본 같은 것을 변수로 담고있는 들과 충돌이 나지 않는다.

 

 3) 메서드는 함수이다. 메시지 표현식( [myFraction add] ) 함수 호출이다.

 - 오브젝티브C 구조가 남다르기 때문에 메서드와 함수의 형태가 뚜렷하지만 둘은 같은 구조를 갖는 함수이다.

 - ) 프로그램에서 함수는 일반적인 함수의 형태를 갖고있다그러나 .m 에서의 메서드는 일반적인 함수와 형태가 다르지만 함수이다.

 

 - 메시지 표현식은 함수호출이다. 마찬가지로 다른 언어와 달리 함수 호출의 형태가 독특하며 명칭또한 다르다(메시지 표현) 그러나 함수호출과 같은 기능이다.

 

4) id객체는 포인터이다.

 - id객체는 포인터이므로 데이터 타입이나 객체 자유롭게 할당할 있다.

 

5) 모든 객체에는 꼬리표가 있다

- 모든 객체는 루트에서 상속받은 potected 정의된 isa 멤버(4바이트) 갖는다. 사실상 이것을 통해 객체를 분류하고 식별한다.

 


Posted by 버터백통