OC static 与 Swift static 差异性问题

Swift 里面该如何写这个 static BOOL isOpen = YES;
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    static BOOL isOpen = YES;
    
    NSLog(@"%@", @(isOpen)); // 点击第一次log: YES, 点击第二次log: NO, 点击第三次log: NO
    
    if (isOpen) {
        isOpen = NO;
    }
}

已找到解决方案

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    
        struct onceStruct { static var isOpen = true }
        
        print(onceStruct.isOpen) // 点击第一次log: true, 点击第二次log: false, 点击第三次log: false
        if onceStruct.isOpen {
            onceStruct.isOpen = false
        }
    }
阅读 1.9k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题