TroubleShooting

[Swift] performSelector로 multi-argument 전달 방법

Phililip
728x90

안녕하세요.

 

NSObject를 상속받는 클래스라면 performSelector로 함수를 호출해 줄 수 있어요.

 

함수 호출할 때 인자도 같이 넘길 수 있는데 최대 2개까지만 넘길 수 있습니다.

 

 

Objective-C에선 NSInvocation을 사용해서 제약 없이 여러 argument(인자)를 넘길 수 있어요.

 

근데 Swift에는 NSInvocation이 없어서... 다른 방법을 써야 해요.

 

 

제가 찾은 Swift에서 여러 인자 넘기는 몇 가지 방법 소개할게요.

 

##  1. 배열을 사용하자.

배열을 전달받는 함수를 추가로 정의하고 함수 내부에서 배열을 파싱해서 사용하는 것이에요.

 

- 장점
    - 없는 듯..?
- 단점
    - optional unwrapping 처리 필요
    - 배열 순서 중요

 

 

## 2. Dictionary를 사용하자.

위와 마찬가지로 Dictionary를 사용하는 방법이 있어요.

 

- 장점
    - 없는 듯22...?
- 단점
    - value를 얻기 위해 argument와 동일한 키를 알고 있어야 함.
    - optional unwrapping 처리 필요

 

 

## 3. 커스텀 클래스를 사용하자.

Array, Dictionary를 사용하지 않고 커스텀 클래스를 사용하는 방법이 있습니다.

 

- 장점
    - optional unwrapping 처리 불필요
    - 인자 타입이 변경되거나 추가될 경우 컴파일 에러
- 단점
    - NSObject 클래스 타입을 인자로 넘겨야 함

 


이번 글은 여기서 마무리.

 

 

 

반응형