나는이 목표 - C 코드에서 스위프트 클래스를 사용과 지속 문제 :재산권 스위프트 클래스에 표시되지
다음과스위프트 클래스는 보이는 :
@objc class TestClass {
private (set) var key: UInt64
private (set) var dict: [UInt64 : Double]! = [:]
init(key: UInt64, value: Double) {
self.key = key
self.dict[key] = value
}
}
test.dict
과 함께 Objective-C에서 사용하려고하면 (Xcode 6.1.1의) 컴파일러가 Property 'dict' not found on object of type 'TestClass'
이라는 오류를 표시합니다.
생성 된 MyProject-Swift.h
은 key
을 말하지만, dict
은 아닙니다. 여기에 관련 발췌은 다음과 같습니다
@interface TestClass
@property (nonatomic, readonly) uint64_t key;
- (instancetype)initWithKey:(uint64_t)key value:(double)value OBJC_DESIGNATED_INITIALIZER;
@end
이 이전 버전 (내가 key
후 dict
를 추가 한)에 충실 없지만, 더 이상 스위프트의 정의를 반영한다. 그러나이 문제는 빌드 단계의 순서와 관련이없는 것처럼 보입니다. private (set) var key2: UInt64
속성을 추가하면 MyProject-Swift.h
에 표시됩니다. 프로젝트를 정리하고 다시 빌드하는 것은 도움이되지 않습니다 (Xcode를 다시 시작하지는 않습니다).
이 경우 Objective-C와 Swift 사이에 내 코드와 브리징의 문제점은 무엇입니까? dict
이 Swift (Objective-C 또는 @objc
) 사전으로 정의 되었기 때문에 그럴 수 있습니까? 그렇다면 코드를 리팩토링하여 어떻게 진행할 수 있습니까?
인용 된 문서에 대한 정확한 링크를 추가 한 다음 귀하의 답변을 수락 할 수 있습니까? – Drux
여기서'사생활'은 무엇을 의미합니까? – zaph
@Zaph setter에게 getter보다 낮은 액세스 레벨 ('private')을줍니다 ([here] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html 참조).)). – Drux