Swift의 클로저, 루프 및 경고 중인 텍스트 필드 문제
typecho
typecho 2017-06-24 09:44:21
0
2
1028
으아악

}

위 코드에서 [unowned self]가 무엇을 하는지 아시나요? 루프를 방지하기 위한 것이라는 것은 알지만 이 코드는 이해하기가 좀 어렵습니다. 어떤 루프가 방지되고 있습니까?

더 중요한 질문은 [소유되지 않은 자아] 뒤에 있는 행동이 무엇인지입니다. 그것은 허공에서 나타나는 것 같습니다. 그것이 무엇을 의미하는지 모르겠지만, 그것이 없으면 코드는 오류를 보고할 것입니다.

guard let textField = Alert.textFields?.first,

으아악

위 두 코드는 무엇을 의미하나요? "alert.textFields?.first"은(는) 무슨 뜻인가요? 텍스트 필드를 추가하기 전에 이 경고가 텍스트 필드를 참조할 수 있는 이유는 무엇입니까?

질문이 많아서 코드에 클로저가 나오면 어지러워지네요. 누가 자세히 답변해주셨으면 좋겠습니다.

typecho
typecho

Following the voice in heart.

모든 응답(2)
某草草
  1. 블록 내부에 순환 참조가 없기 때문에 위 코드에 [unowned self]를 추가할 필요가 없습니다

  2. action是UIAlertAction 便利构造函数public convenience init(title: String?, style: UIAlertActionStyle, handler: ((UIAlertAction) -> Swift.Void)? = nil)의 핸들러 블록 매개변수는 Swift 후행 클로저 작성 방법 때문입니다.

  3. textFieldsUIAlertController中的可变数组var textFields: [UITextField]?
    guard是对textFields可选属性进行可选绑定, textField는 옵셔널 값을 언팩한 후의 값으로 nil이 아닙니다. textFields의 옵셔널 값이 nil이면 다음 코드는 실행되지 않습니다.

    으아악
过去多啦不再A梦

미소유 키워드와 약함은 모두 참조 순환을 깨는 데 사용됩니다. 약함과의 차이점은 참조된 인스턴스가 더 긴 수명 주기를 보장할 수 있을 때 일반적으로 사용된다는 것입니다. 이 경우 ARC는 인스턴스를 자동으로 설정하지 않습니다. . 하지만 위의 코드에 [onowned self]를 추가할 필요는 없을 것 같습니다. 여기서 순환 참조가 발생하는지 알 수 없습니다.

[unowned self] 뒤에 오는 작업은 이것이 클로저의 매개변수임을 나타냅니다. UIAlertAction 생성자의 마지막 매개변수에는 다음과 같이 UIAlertAction! 유형의 매개변수가 필요하기 때문입니다.
convenience init(title title: String!, style 스타일: UIAlertActionStyle, 핸들러 핸들러: ((UIAlertAction!) -> Void)!)

으아악

이 코드의 의미는 Alert.textFields?.first가 비어 있지 않은 경우에만 후속 로직이 실행되고, 그렇지 않으면 직접 반환된다는 것입니다. 두 번째 let은 첫 번째 let의 textField가 nil이 아닌 경우에만 실행될 수 있습니다. 이는 Swift에서 일반적인 사용법입니다. 자세한 내용은 설명서를 확인하세요.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!