objective c 소유권 objective c에서 메모리 관리 방법은? 1.MRC - 수동 메모리 참조 계수 2.ARC - 자동 메모리 참조 계수 리테인 카운터란? Retain Counter 란 소유계수라고도 한다. 대부분 인스턴스가 생성(alloc)될 때 1로 초기화 된다. 만일 해당 인스턴스를 다른 곳에서 공유(retain)하면 소유계수는 1만큼 증가된다. 반대로 더 이상 해당 인스턴스에 접근할 필요가 없을때는 이값은 1만큼 감소(release)된다. 최종적으로 계수가 0이되면 인스턴스는 시스템에 의해 제거된다. 예제1 아래 예제에서는 NSObject의 인스턴스를 alloc/init 으로 만들어서 obj 포인터에 할당한다. retain을 1회 release를 2회씩 호출한 결과이다. 마지막 rel..
objective c 동적결합 아래 로직은 터미널에 입력된 숫자에 따라 변수 obj에 대입되는 객체 클래스가 달라진다. 클래스 A, B는 whoAreYou에 대응되지만, NSObejct는 대응못한다. objective c에서 어떤 객체가 그 메시지를 처리할수 있는지 없는지는 실제로 메시지를 보낼 때 정해진다. 모든 인스턴스는 자신이 어떤 클래스 인스턴스인지 알고 있으므로 메시지를 받았을 때 그에 따라 처리한다. 반대로 객체가 받은 메시지를 처리 못할때는 아래와 같이 실행 에러가 발생하고 종료된다. 이렇게 송신된 메시지에 대응해서 어떤 메서드가 실행될지가 실행 시에 결정되는 방식을 동적결합이라고 한다. #import #import @interface A : NSObject - (void)whoAreYou;..
objective c 상속과 클래스 상속이란? 다른 클래스 정의의 일부분을 확장 또는 변경해서 새로운 클래스를 정의하는 기능을 상속이라고 한다. 새롭게 작성한 클래스에서 상속의 기본이 되는 클래스를 슈퍼클래스라고 부르고, 반대로 상속받은ㅇ 클래스는 서브클래스라고 부른다. 상속의 특징은 무엇인가? 서브클래스는 슈퍼 클래스의 정의를 모두 이어 받는다. 서브 클래스는 슈퍼 클래스에 있던 인스턴스 변수도 이어받고 슈퍼 클래스와 같은 메서드를 실행할 수도 있다. 1. 새로운 메서드 추가하기 2. 새로운 인스턴스 변수 추가하기 3. 슈퍼 클래스 메서드를 다른 정의로 바꾸기 클래스 계층이란? 유용한 클래스를 상속해서 새로운 클래스를 더 만들거나, 상속으로 정의한 클래스를 다시 상속해서 다른 클래스를 만드는 작업을 반..
objective c 프로그램 모든 클래스에서 객체는 id라는 특별한 형태로 표현된다. id obj; 메시지 표현식 어떤 객체 obj에 메세지 msg를 보내려면 아래과 같이 작성한다. [obj msg] 참고로 메시지 표현식은 리시버 객체(obj)가 그 메시지를 처리한 결과값을 리턴한다. 메시지에 인수가 있으면 메시지 키워드 끝에 : 를 붙여서 인수가 있음을 나타낸다. [printInfo setLeftMargin: 60.0]; 인수가 두개 이상 있을때는 콜론을 붙이고 다른 키워드를 추가한다. [printInfo setLeftMargin: 60.0 setRight: 90.0]; 객체에게 일을 시킬려면? id형 변수를 선언하는 것만으로는 변수에 객체가 저장되지 않는다. 객체에게 일을 시킬려면 우선 클래스에서 ..
객체 개념 객체의 구성은? 객체는 속성과 메시지로 구성되어 있다. 메시지를 받으면 그에 따른 처리를 한다. -자동차 객체의 속성: 칼러, 속도 -자동차 객체의 메시지: 앞으로 달린다. 후진한다. 드래프트한다. 등 객체의 특성은? 사람이 '물건'으로 다른 것과 구별해서 인식할 수 있음 속성이 있음 다른 객체에 메시지를 보낼 수 있음 메시지를 받아 그에따른 처리를 함 메시지 처리는 객체의 메서드로 이루어짐 객체의 속성? 객체의 속성은 무엇을 나타내는가? 객체는 다른 객체를 참조해서 속성을 나타낸다. 속성을 나타내는 다른 객체의 참조 (포인터)를 저장한 장소가 인스턴스 변수이다. 또는 그냥 변수라고도 하고, 변수에서 참조할 수 있는 객체가 없는 상태를 널로 표현하기도 한다. 객체를 연결하려면 어떤 객체 변수에..
Objective C의 프로그래밍은 클래스를 설계하고 이것을 운영하는 것 1.클래스의 구성 요소 Objective C는 기존의 C 언어로 프리컴파일되어 실행되기 때문에 기본적인 실행구조는 C 언어와 동일하다. 이런 이유로 Objective C 프로그램은 main() 함수가 실행되면서 시작하고 이 함수가 종료되면 프로그램도 끝나게 된다. 함수 main()은 클래스[Class, 형식]에 메시지를 보내 도장 찍듯이 인스턴스[Instance, 예]를 만들어내며 이 인스턴스가 동작하면서 프로그램이 운영된다. 클래스는 인스턴스를 만들기 위한 일 종의 형틀이며 변수부분과 동작부분으로 구성된다. 변수는 멤버[member, 구성원]라 하며, 값을 기억하는 역할을 한다. 동작은 메소드[method, 방법/함수]라고 하며,..