iOS大典之单例传值

本文介绍了在iOS开发中,如何利用单例模式来实现多个类间共享数据,从而进行传值操作。通过定义单例类、创建单例对象并实现所需功能,确保单例只初始化一次,并遵循特定命名规范。文中给出一个实例,展示了从根控制器到第二个控制器的传值过程,包括单例类的声明与实现,以及在控制器中设置和接收值的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


传值过程中, 会遇到一个变量可能被多个类使用, 的情况
最简单的办法是, 将变量定义在单例类中, 操作时直接使用

这里简单的介绍如何使用单例.

步骤就是:
1. 定义单例类
2 . 类方法创建单例对象
3 . 根据需要实现单例

注意: 单例只初始化一次; 不用管理内存; 方法命名规范是以share开头; 单例继承于NSObject


简单的例子:
从root控制器 传值到 second控制器,

需要创建两个控制器, 和一个单例类


声明和实现单例类

#import <Foundation/Foundation.h>

@interface MyHandle : NSObject


// 1. 声明下
+ (MyHandle *)shareHandle;

// 2. 声明一个属性 用于传值
@property (nonatomic, retain) NSString *name;


@end
+ (MyHandle *)shareHandle
{
    // 在静态区定义个指针
    static MyHandle *handle = nil;
    // 如果这个指针指向的区域为空
    if (handle == nil) {
        // 就在 堆区开辟空间 创建对象
        handle = [[MyHandle alloc] init];

   }
    return handle;
}

root控制器中设置需要的控件, 别忘记导入头文件

@property (nonatomic, retain) UITextField *textField;
- (void)dealloc
{
    [_textField release];
    [super dealloc];
}

添加一个输入框和按钮,


- (void)addSubView
{
    self.textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 160, 200, 60)];
    self.textField.backgroundColor = [UIColor cyanColor];
    [self.view addSubview:self.textField];
    [self.textField release];

    UIButton *button = [UIButton buttonWithType:(UIButtonTypeCustom)];
    button.frame = CGRectMake(100, 300, 100, 50);
    [button addTarget:self action:@selector(actionButton:) forControlEvents:(UIControlEventTouchUpInside)];
    button.backgroundColor = [UIColor blackColor];
    [self.view addSubview:button];
    [button release];



}
- (void)actionButton:(UIButton *)button
{
    // 点击跳转 传值
    // 创建单例对象 并赋值
    [MyHandle shareHandle].name = self.textField.text;
    // 跳转
    SecondViewController *secondVC = [[SecondViewController alloc] init];
    [self.navigationController pushViewController:secondVC animated:YES];
    [secondVC release];
}

需要传值的 second控制器中接受下, 在 viewDidLoad中

    // 修改标题
    self.navigationItem.title = [MyHandle shareHandle].name;

over

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值