关于单例的属性问题

来源:互联网 发布:scrypt挖矿软件 编辑:程序博客网 时间:2024/06/05 17:39
才学iOS,现在遇到单例的理解问题,单例中的属性可以修改吗?根据定义似乎不应该啊。但是我通过如下测试,构造函数是不会再次加载,但是属性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改为“小王”了 ,单例就是这样可以改属性的吗?
0 0