반응형
swift : 차단 선언과 같은 폐쇄 선언
우리는 Objective-C에서 아래와 같이 블록을 선언할 수 있습니다.
typedef void (^CompletionBlock) (NSString* completionReason);
저는 이것을 빨리 하려고 합니다. 그것은 오류를 일으킵니다.
func completionFunction(NSString* completionReason){ }
typealias CompletionBlock = completionFunction
오류: 선언되지 않은 '완료' 사용함수'
정의:
var completion: CompletionBlock = { }
어떻게 하는 거지?
업데이트:
@jtbandes의 답변에 따르면, 나는 다음과 같은 여러 인수로 종결을 만들 수 있습니다.
typealias CompletionBlock = ( completionName : NSString, flag : Int) -> ()
함수 유형의 구문은 다음과 같습니다.(in) -> out
.
typealias CompletionBlock = (NSString?) -> Void
// or
typealias CompletionBlock = (result: NSData?, error: NSError?) -> Void
var completion: CompletionBlock = { reason in print(reason) }
var completion: CompletionBlock = { result, error in print(error) }
Swift 3+부터는 입력 유형 주변의 괄호만 필요합니다.
여기 빠른 마감에 대한 멋진 블로그가 있습니다.
다음은 몇 가지 예입니다.
변수로:
var closureName: (inputTypes) -> (outputType)
선택적 변수로:
var closureName: ((inputTypes) -> (outputType))?
유형 별칭:
typealias closureType = (inputTypes) -> (outputType)
언급URL : https://stackoverflow.com/questions/24133797/swift-closure-declaration-as-like-block-declaration
반응형
'programing' 카테고리의 다른 글
치명적 오류:발견되지 않은 오류: 스칼라를 어레이 경고로 사용할 수 없습니다. (0) | 2023.08.01 |
---|---|
IIS 관리자로 이동하려면 어떻게 해야 합니까? (0) | 2023.08.01 |
SQL-Developer: 프로그램을 열 수 없습니다. (0) | 2023.08.01 |
여러 개를 사용할 수 있음처음 실패할 때 가드가 모두 실행됨 (0) | 2023.08.01 |
목표-C 구조의 기본값 및 테스트 방법 (0) | 2023.08.01 |