2017-04-13 3 views
3

스위프트 3에서 선택기 메서드를 많이 검색했지만 혼란 스럽습니다.인수가있는 스위프트 3 선택기

1) 차이점은 무엇입니까 Selector & #selector?

2) Selector으로 쓰면 함수가 윤곽선이 그려져 있지 않습니다.

3) #selector 방법으로 매개 변수를 전달하는 방법.

내 코드

let button = UIButton()  
button.addTarget(self, action: #selector(getData(_:true)), for: .touchUpInside) 
button.addTarget(self, action: Selector(), for: .touchUpInside) 

func getData(_ isShowing:Bool){ 

    } 

당신은 내 혼란을 취소 도와 드릴까요?

내가 #selector 단지 형 Selector의 객체를 생성하는 언어 구조라고 생각

+0

이 하나 개 http://stackoverflow.com/questions/41520683/swift-3-unrecognized-selector-sent-to-instance-uibutton –

+0

에 관한 질문 (3)과 비교 그냥 ('#selector를 사용 getData)'매개 변수를 지정할 필요가 없습니다. –

+0

@LeoDabus 답장을 보내 주셔서 감사합니다.하지만 조건을 확인하기 위해 값을 전달해야합니다. – user1673099

답변

1

여러분의 귀중한 시간 주셔서 감사합니다. 컴파일러가 메서드가 어디에서나 존재하는지 여부를 확인하기 위해 #selector을 사용하려는 경우 Selector("abc")을 사용하면 생성자를 실행하고 유효성을 검사하지 않습니다. 질문에 대한

2

답변 :

  1. 선택기는 유형입니다. (함수 유형임을 나타 내기 위해). 반면에 # selector은 함수를 호출하는 것입니다. #selector ->Selector 유형을 반환합니다. #selector 검사 어떤 기능이있는 경우는
  2. 먼저 대답이
  3. 당신은 다음과 같이 보낸 사람을 통해 가치를 보낼 수 명확히 것이다 함수 이름으로 존재한다. 예 : button.layer.setValue(forKey:"someKey")
+2

# 3 : KVO를 준수하는 경우에만 임의의 값에 대해 수행 할 수 없습니다. OP가 원하는 것에 관해서는, 그는 Bool을 이런 방식으로 통과시킬 수 없다. – Losiowaty