새로운 Apple Swift 언어로 무언가를 찾으려고합니다. Objective-C에서 다음과 같은 작업을 수행했다고 가정 해 봅시다. 내가 가진 readonly
속성을, 그들은 개별적으로 변경할 수 없습니다. 그러나 특정 방법을 사용하면 속성이 논리적으로 변경됩니다.
다음 예제를 보자. 매우 간단한 시계. 나는 Objective-C로 이것을 쓸 것이다.
@interface Clock : NSObject
@property (readonly) NSUInteger hours;
@property (readonly) NSUInteger minutes;
@property (readonly) NSUInteger seconds;
- (void)incrementSeconds;
@end
@implementation Clock
- (void)incrementSeconds {
_seconds++;
if (_seconds == 60) {
_seconds = 0;
_minutes++;
if (_minutes == 60) {
_minutes = 0;
_hours++;
}
}
}
@end
특정 목적을 위해 초, 분 및 시간을 직접 만질 수 없으며 방법을 사용하여 초 단위로만 증가시킬 수 있습니다. 이 방법 만 인스턴스 변수의 트릭을 사용하여 값을 변경할 수 있습니다.
스위프트에는 그러한 것이 없기 때문에 동등한 것을 찾으려고 노력하고 있습니다. 내가 이렇게하면 :
class Clock : NSObject {
var hours: UInt = 0
var minutes: UInt = 0
var seconds: UInt = 0
func incrementSeconds() {
self.seconds++
if self.seconds == 60 {
self.seconds = 0
self.minutes++
if self.minutes == 60 {
self.minutes = 0
self.hours++
}
}
}
}
작동하지만 누구나 속성을 직접 변경할 수 있습니다.
어쩌면 이미 Objective-C에서 디자인이 잘못되어 새로운 Swift에 해당하는 것이 적합하지 않은 이유입니다. 그렇지 않은 경우 누군가 대답이 있으면 매우 감사합니다.)
아마도 애플이 약속 한 미래의 액세스 제어 메커니즘 이 답일까요?
감사!