单例模式

来源:互联网 发布:js监听屏幕大小变化 编辑:程序博客网 时间:2024/06/05 15:55

1.单例模式  使用类方法创建,所以内存地址是不会变得(主要是因为有static的修饰)。第一次创建好以后再次创建的时候他的内存地址是不变的

2.在类中,用static修饰的变量和单例的static是一样的,只有一个并且内存地址不会改变。

3.再类中,全局变量_开头的变量使用allco init方法创建的,他也能保证在类中他只有一个,但是再次alloc init 后,他的内存地址会变,虽然他还是只有一个。

4.在arc情况下,创建一个实类对象,如果没有强引用的话他会在出大括号的时候销毁,并且会走这个类的delloca方法。

5.在viewcontroller中,平时使用- (void)delloca方法,销毁的是控制器本身(self),并不是所有的用的的类都在这里面销毁,其他的类都是在自身的delloca方法中销毁。

6.static修饰的变量存储于静态变量区.类如, 在一个viewController中定义了一个 static int类型对象 a,在dealloc中让 a= 1000,然后当你再次进入这个viewController的时候你会发现a 不是默认的0了,而是1000.解释:虽然控制器销毁了,控制器是在栈中的,但是存储在静态变量区的a并没有销毁.所以当你再次进入这个viewController的时候,a的值并不是重新赋值,而是区静态变量区取原来的值了.

7.static默认的值为0.

8.既然static修饰的对象存储在静态变量区,那么我在多个控制器中给cell加重用标识符的时候,用的都是@"cell",这样的话怎么分得清这是哪个控制器的cell呢.别忘了,static还有一个作用是,被static修饰的对象只能在本类中显示,别的类连看都看不到,所以在本类中定义的@"cell"只用本类能用----这说明,虽然定义的字符串@"cell"是一样的,但是她们在静态变量区的地址是不一样的...

0 0
原创粉丝点击