Swift에는 두 가지 유형의 변수가 있습니다.
- 옵션 변수
- 일반 (비 선택 사항) 변수
옵션 변수 : 가장 짧은 설명이 옵션 변수/객체가 재산 "객체 반환-무풍 때 비를 포함 -있다". objC에서 우리가 만드는 거의 모든 객체는 선택적 변수 일뿐입니다. 즉, 객체에는 "object-returns-nil-when-non-exist"라는 속성이 있습니다. 그러나이 특별한 행동은 항상 필요하지 않습니다. 그래서, 옵션을 식별하기 위해 기호 '?' 및 '!' 사용 되왔다. 다시 선택적 항목의 두 가지 유형이 ...있다
- 정상 선택적 개체
- 암시 적으로 풀어 선택적 항목
정상 선택적 항목 (?) (!) :
var normalOptional : String?
암시 적으로 풀어 선택적 항목 :
var specialOptional : String!
둘 다 "선택적"동작을하고 있지만 차이점은 '암시 적으로 래핑되지 않은 선택 사항'을 일반 (비 선택적) 값으로 사용할 수도 있습니다.
예를 들어 indexPath 변수는 기본적으로 tableview 대리자 메서드에 의해 (cellForRowAtIndex) 매개 변수 목록에서 선언됩니다. 행 값은 cellForRowAtIndex가 호출 될 때 존재합니다. indexPath 변수는 함수 (cellForRowAtIndex) 매개 변수 목록에 선언되어 있습니다. 그래서 'indexPath'에서 'row'값의 언 래핑은 다음과 같습니다.
var rowValue = indexPath?.row // variable rowValue inferred as optional Int value
or
var rowValue = indexPath!.row// variable rowValue inferred as normal Int value
참고 : '!' unwrapping, 특정 클래스가 존재한다는 것을 확실히 알아야합니다 (값 포함).
희망이 링크는 당신에게 더 많은 아이디어를 줄 것이다. What is the intended use of optional variable/constant in swift
코드 스 니펫 중 하나에'? '를 포함 시키려고 했습니까? 어느 누구도하지 않기 때문에, 지금까지 볼 수 있습니다. –
가능한 복제본 [ "?" 및 "!"] (http://stackoverflow.com/questions/24122601/swift-variable-decorations-with-and) – JJJ
@ 주 : 감사합니다. 나는 찾았지만 어떤 것도 얻지 못해서 내가 물어 보았다 .. –