본문 바로가기
[Objective-C] 블록 객체 [Objective-C] 블록 객체 출처 : OS X 구조를 이해하면서 배우는 Objective-C Chap 14. Notice : 정리자(돼지왕 왕돼지)가 remind 하고 싶은 내용이나 모르는 내용 기반으로 정리하는 것이기 때문에 구체적인 내용은 책을 사서 보시기를 권장드립니다. 14.1. 블록 객체란 * 14.1.1. C 컴파일러와 GCD -다른 프로그래밍 언어에서는 클러져 (closure)라고 하는 기능에 해당한다. -Mac OS X 10.6 및 iOS 4 부터 멀티 코어에서 스레드가 더 효율적으로 동작하도록 그랜드 센트럴 디스패치(GCD : Grand Central Dispatch)라는 구조 도입 * 14.1.2. 블록 객체 정의 -^ 부터 인수열, 본체의 마지막 괄호가 나올 떄까지의 블록 객체.. 2018. 1. 6.
[Objective-C] NSObject 클래스와 런타임 시스템 [Objective-C] NSObject 클래스와 런타임 시스템 출처 : OS X 구조를 이해하면서 배우는 Objective-C Chap 8. Notice : 정리자(돼지왕 왕돼지)가 remind 하고 싶은 내용이나 모르는 내용 기반으로 정리하는 것이기 때문에 구체적인 내용은 책을 사서 보시기를 권장드립니다. 8.1. NSObject 클래스 * 8.1.1. 루트 클래스의 역할 -런타임 시스템은 Objective-C 용 운영체제 같은 것으로, 객체 생성, 해제에 따른 메모리 영역 관리와 송신된 메시지에 대응하는 메서드 검색 등을 한다. -보통은 프로그램에서 런타임 시스템 기능을 직접 사용하지 않는다.이런 기본 기능은 루트 클래스인 NSObject 에 있는 메서드로 제공된다.다시 말해 루트 클래스는 런타임 .. 2017. 12. 29.
[ios] block typedef 방법 & param 기입 방법 [ios] block typedef 방법 & param 기입 방법 -block 의 typedef 는 문법이 딱 와닿지 않는다. -typedef 를 할 때는 block 을 함수 포인터라고 생각하고 정의하면 쉽다. -Syntax :typedef returnType (^blockName)(params); Example :typdef void (^MyBlock)(UIView * _Nonnull view); -param 으로 쓸 때는 또 다른 형태가 된다. -Syntax :(returnType (^)(params)) paramName Example :-(void)doSomething:(void (^)(UIView * _Nonnull))block; block typedef, blockname, Example, Pa.. 2017. 12. 17.
[Effective Objective-C] #37 블록을 이해하라 [Effective Objective-C] #37 블록을 이해하라 출처 : Effective Objective-C -맥 OS X 내에서 UI 스레드가 멈추면 그 무시무시한 돌고 있는 비치볼을 보게 될 것이다.iOS 에서는 앱이 너무 오랫동안 멈추어 있으면 강제로 종료될 것이다. -멀티스레딩의 핵심 기술은 블록과 GCD(Grand Central Dispatch) 다.블록은 C, C++. 오브젝티브-C 에 렉시컬 클로저(lexical closure)를 제공하는데 이는 매우 유용하다.( 클로저는 함수 내에 함수를 선언할 수 있게 하는 기능이다. 리스프 계열 언어에서 많이 쓰이며, 내부에 선언된 함수는 외부 함수의 파라미터들을 참조할 수 있다. )블록은 코드를 전달하는 기법을 제공한다. -GCD는 스레딩을 이른.. 2017. 10. 1.
[Effective Objective-C] #13 불투명 메서드를 디버깅할 때 메서드 스위즐링을 사용하라 [Effective Objective-C] #13 불투명 메서드를 디버깅할 때 메서드 스위즐링을 사용하라 출처 : Effective Objective-C -Opaque Method ( 불투명 메소드 ) : 소스 코드를 볼 수 없는 메소드 -동적 바인딩은 호출될 메서드가 실행 시간에 바뀔 수 있다는 것을 뜻한다.이 능력은 굉장한 유연성을 제공하는데, 소스 코드가 없는 클래스 ( 즉 바이너리 파일만 있는 경우 ) 라도 하위 클래스를 만들거나 메서드를 재정의하지 않고도 기능을 변경할 수 있다.그래서 하위 클래스에서 메서드를 재정의하는 방법은 하위 클래스의 인스턴스만 변경한 기능을 사용할 수 있는 것에 반해, 이 방법은 해당 클래스(기본 클래스와 모든 하위 클래스)의 모든 인스턴스에서 새로운 기능을 사용할 수 .. 2017. 8. 15.
[Effective Java] 전략을 표현할 때 함수 객체를 사용하자. [Effective Java] 전략을 표현할 때 함수 객체를 사용하자. - 자바는 함수 포인터를 제공하지 않는다. 대신 객체 참조를 사용해서 유사한 효과를얻을 수 있다. 호출된 객체의 메소드에서 다른 객체(메소드로 전달되는)의 메소드를 수행하도록 객체를 정의하는 것이 가능하다. 그런 메소드 하나만 달랑 외부에 제공하는 클래스의 인스턴스는 사실상 메소드 포인터의 역할을 한다. 그런 인스턴스를 함수 객체(function object)라고 한다. ex) Comparator Interface 를 상속한 Class instance. - 좋은 함수 객체는 상태가 없어 static final, singleton 으로 사용 가능한 녀석이다. Summary 함수 포인터의 주 용도는 전략(strategy) 패턴을 구현하는.. 2016. 11. 15.
반응형