관련 질문이 있지만 기존 스레드에 대한 논평이 사이트 명성이 부족하여 새 스레드를 시작해야합니다. 미안합니다.Swift 3에서 조건부 컴파일을 수행하는 방법은 무엇입니까?
Swift에는 전처리 기가 없습니다. #if/#else/#endif를 사용하여 해결할 수 있지만 문제는 컴파일러에서 'false'부분을 숨기지 않아서 'true'와 'false'부분 모두 구문 적으로 유효해야한다는 것입니다. Swift 3이 Swift 2와 구문 적으로 호환되지 않기 때문에 어렵습니다. 어느 환경에서 컴파일 할 수있는 코드를 만들 수있는 해결 방법을 찾은 사람이 있습니까? XCode 8 베타가 Swift 2.2를 허용하거나 XCode 7.3.1이 Swift 3을 허용 한 경우 여기에서 해결 방법이 제공됩니다. 난 그냥 하나의 사소한 예를 제공하기 위해, 할 노력하고있어 무엇
, 나는이 작업을 수행 할 수있는 방법을 찾을 수 없습니다
#if SWIFT3
let session = WCSession.default()
#else
let session = WCSession.defaultSession()
#end
같은이며,이없는 것은 놀라운 것 Swift3 구문이 Swift2와 얼마나 완벽하게 호환되지 않는지를 고려해보십시오.
스위프트 3 구문은 실제로 스위프트 2와 매우 다릅니다.'# if'를 사용하여 페이퍼를 작성하려고하는 것은 전처리기를 사용하더라도 작동하지 않습니다. 의도 된 솔루션은 코드베이스를 Swift 3으로 변환 (또는 Swift 3으로 포크)하는 것입니다. 두 가지 모두를 컴파일하는 중요한 코드 기반을 유지하려고 시도하는 것은 막 다른 길입니다 (Swift 1과 Swift 2와 마찬가지입니다). –
@RobNapier 나는 그것에 동의 할 수 없다. 그것은 도덕적으로 바람직하지 않을 수도 있지만, 정확히 이러한 목적을 위해 조건부 컴파일을 제공하고 작동합니다. 스위프트 3 로의 전환이 단편적으로 진행되어야하는 상황을 상상할 수 있습니다. – matt
@matt 그 게임을 보는 것이 흥미로울 것이지만, 1에서 2로가는 것은 사소한 코드 기반에서는 실용적이지 않습니다. 2 ~ 3은 여러 가지 이름을 변경하기 때문에 훨씬 더 큰 변화입니다. 매우 작은 코드 조각 이상으로 작동한다고 상상하기는 어렵습니다. 그러나 시간은 말할 것이다. –