才学iOS,现在遇到单例的理解问题,单例中的属性可以修改吗?根据定义似乎不应该啊。但是我通过如下测试,构造函数是不会再次加载,但是属性name是可以被修改的,单例是不是就是这样的?谢谢
如上,第二次把name改为“小王”了 ,单例就是这样可以改属性的吗?
import Foundation
class Person: NSObject {
var name: String?
var age: Int?
var phone: String?
class var sharedInstance: Person {
struct Static {
// 定义静态的常量属性
static let instance: Person = Person()
}
return Static.instance
}
override init() { //这个方法只会在第一次实例化时被使用,第二次实例化不会被使用,属性不受影响
println("初始化Person单例对象")
}
}
//
// main.swift
// Swift单例模式理解
//
// Created by xyq on 15/6/22.
// Copyright (c) 2015年 xyq. All rights reserved.
//
import Foundation
// 第一次会调用init方法
var tom = Person.sharedInstance
tom.name = "小明"
tom.age = 10
tom.phone = "18714589652"
println("tom:\(tom.name)")
// 第二次不会再调用init方法了,但是对属性的赋值还是可以的
var mark = Person.sharedInstance
mark.name = "小王" //结果是小王,属性被修改了
mark.age = 10
mark.phone = "18714589652"
println("mark:\(mark.name)")
// tom和mark实际上是一个人
如上,第二次把name改为“小王”了 ,单例就是这样可以改属性的吗?