1. 单例。单:唯⼀性。例:实例对象。即使⽤某个类创建的对象是程序中唯⼀的实例对象。注:通常每次使⽤alloc创建的是不同的对象。
2. 如果⼀个类只能创建⼀个对象,称为单例类。单例类可以是⼯具类, 视图类,控制器类。
3. 注意:
操作单例对象的变量存储在静态区,程序关闭后由系统⾃动回收。
单例对象存储在堆区,不释放,程序关闭后由系统⾃动回收。
变量和单例对象的⽣命周期与程序同步。
4. 优势:
在内存中只有⼀个对象,节省内存空间。
避免频繁的创建销毁对象,可以提⾼性能。
避免对共享资源的多重占⽤。 可以全局访问。
降低模块之间的耦合度,降低代码的复杂度。
5. 单例模式:
单例模式是⼀种设计模式。 实现:定义⼀个单例类,保证程序中这个类只能创建唯⼀的实例对象,实现资源共享。
单例传值的小例子:
/*
需求
利用单例传值
把
A
界面的
TextField
输入的字符串传到
B
界面
将内容作为
B
界面的标题
*/
- 1> 创建继承自NSObject的单例
- @implementation MyHandle
- #pragma mark - 创建一个单例
- + (MyHandle *)shareHandle {
-
- static MyHandle *handle = nil;
-
- if (handle == nil) {
-
- handle = [[MyHandle alloc] init];
- }
- return handle;
- }
-
- - (void)dealloc {
- [_name release];
- [super dealloc];
- }
- @end
-
- @implementation RootViewController
- #pragma mark - 创建View, 创建textfield, 讲textfield的值传给第二页面的title, 点击按钮跳到下一个界面
- - (void)creatView { }
-
- #pragma mark - 点击继续按钮
- - (void)actionButton:(UIButton *)button {
-
- UITextField *textField = (UITextField *)[self.view viewWithTag:100];
-
-
- [MyHandle shareHandle].name = textField.text;
-
- SecondViewController *secondVC = [[SecondViewController alloc] init];
- [self.navigationController pushViewController:secondVC animated:YES];
- [secondVC release];
- }
- @end
-
- @implementation SecondViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- self.view.backgroundColor = [UIColor whiteColor];
-
-
-
- self.navigationItem.title = [MyHandle shareHandle].name;
- }
- @end