单例对象

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 {
    // 取出TextField
    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];
    // Do any additional setup after loading the view.
   
    // 取出单例对象, 作为标题
    self.navigationItem.title = [MyHandle shareHandle].name;
}
@end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值