2017-03-06 3 views
0

여러분에게 작은 퀘스트가 하나 있습니다. 함수를 포함하는 selector를 param으로 수행하고 싶습니다. 하지만 항상 런타임 오류가 발생합니다.함수를 매개 변수로 사용하여 선택자를 수행 할 수 없습니다.

이 방법은 iAd 프레임 워크에서 가져 왔습니다. 그리고 이것은 내가 할 노력하고있어 무엇 : funcAsVar가 변수로 함수가

let sel = Selector("requestAttributionDetailsWithBlock:") 
if obj.responds(to: sel) { 
    obj.perform(sel, with: funcAsVar) 
} 

. 도움말, 사람

런타임 오류는하십시오 : 당신은 당신이 perform 방법에 전달할 매개 변수에 @convention(block)을 추가 할 수 있습니다 libswiftCore.dylib-[_SwiftValue dealloc]:

+0

런타임 오류 란 무엇입니까? – NobodyNada

+0

Swift 함수가 Objective C 블록에 자동으로 연결되는 것을 생각하지 않습니다. 함수를 호출하는 Swift 블록을 사용해 보셨습니까? –

+1

사실'perform' 메소드에 전달한 매개 변수에서'@convention (block)'을 사용할 수 있습니다. –

답변

1

. 이와 같이 :

let sel = Selector("requestAttributionDetailsWithBlock:") 
if obj.responds(to: sel) { 
    obj.perform(sel, with: @convention(block) funcAsVar) 
} 
관련 문제