Objective-c Smalltalk에서 진화
런타임에서 많은것들을 하기 위함 메세지방식 → 씨플플과 다름
c기반 맥 프로그램 카본
코코아는 옵씨에서만 코코아터치
아기들도 하는 게 코코아 자바 견제
IS-A HAS-A
인스턴스 객체, 클래스 객체, 메타클래스
하이브리드 가상 디스패치
옵씨의 장점은 모두 런타임에서 일어난다.
objc_msgSend(aPenHolder, @selector(replacePen:withPen:), aPen, bPen);
블록은 람다나 클로저 개념을 가져와서 옵씨에 추가했다.
블록객체는 힙이 아닌 스택에 저장된다
소유권 관리가 가능하지만 스택객체이기때문에 포인터가 반환되면 객체는 사라진다
그래서 copy메세지로 힙에 복사해야한다.
글로벌 블록객체는 복사되지 않고 참조카운트만 증가한다.
클로저는 접근 가능한 특정 범위 내에서 사용하는 값을 (함수 내부에) 갖고 있는 함수를 의미한다.
스위프트에서 함수는 모두 클로저다.
그리고 스위프트에서 클로저는 함수이거나 이름없는 그냥 클로저 중 하나다.
20년간 변화가 없던 파운데이션 프레임워크 조차도 멀티패러다임언어인 스위프트가 나오면서 제너릭을 지원했다.
세이프 에리아는 꼭 지원