iOS大典之单例传值

来源:互联网 发布:明星直播用什么软件 编辑:程序博客网 时间:2024/05/17 04:18

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

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

步骤就是:
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

0 0
原创粉丝点击