0
Objective-C에서 디스패치 소스에 대한 이벤트 처리기를 블록이나 함수로 지정할 수 있습니다.Swift 3의 DispatchSource 용 GCD 함수 이벤트 핸들러?
기능 기반의 이벤트 핸들러 파견 소스 개체를 포함하는 단일 컨텍스트 포인터, 을하고 값을 반환하지 : 애플의 Concurrency Programming Guide가에서. 블록 기반 이벤트 처리기는 매개 변수를 사용하지 않고 값을 반환하지 않습니다.
스위프트 3에서는 이벤트 처리기로 함수를 사용할 수 있습니까? 블록을 사용하는 방법 만 볼 수 있습니다. 내 처리기에서 소스에 액세스해야하며 소스가 정의 된 곳과 별도로 처리기를 정의해야합니다.
블록 이벤트 핸들러를 사용하고 있지만 소스를 캡처하도록 작성 했습니까? 그게 맞습니까? 'let foo : (DispatchSourceRead) -> Void = {print in "hi \ (source)")}'그리고 나서'source.setEventHandler {foo (source)}'와 같은 일을 할 수 있었습니까? 다시 말해'클래스 푸 (class Foo) '가 필요한 이유는 무엇입니까? – sam
수업이 필요하지 않습니다. 그것은 왜 당신이 원점에서 정의 된 것을 필요로하는지에 대한 나의 첫 번째 생각이었습니다. 캡처를 방지하려면 소스에 대한 약한 참조를 사용하는 캡처 핸들 목록에 이벤트 핸들러를 추가 할 수 있습니다. –