我正在尝试使用新的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
Run Code Online (Sandbox Code Playgroud)
出于特定目的,我们不能直接触摸秒,分和小时,并且只允许使用方法逐秒递增.只有这种方法可以通过使用实例变量的技巧来更改值.
由于Swift中没有这样的东西,我试图找到一个等价物.如果我这样做:
class Clock : NSObject {
var hours: UInt = 0
var minutes: UInt = 0
var seconds: UInt = 0
func incrementSeconds() {
self.seconds++
if self.seconds …Run Code Online (Sandbox Code Playgroud) 我不知道如何使用AutoreleasingUnsafePointer.我有以下代码:
var myString: AutoreleasingUnsafePointer<NSString?>
myScanner.scanUpToCharactersFromSet(NSCharacterSet.newlineCharacterSet(), intoString: myString)
Run Code Online (Sandbox Code Playgroud)
现在,我该怎么做才能从'myString'中获取字符串?我知道它可以是零,但我不知道如何得到字符串值,以防它不是零.Swift展开技术仅适用于Optional类型.
谢谢!