iOS界面传值

第一:单例(SingleTon)

自己创建一个继承NSObject的.h和.m文件,例子如下:

SingleTon.h文件

#import 

@interface SingleTon : NSObject

//声明属性:用于传值或存值
@property(nonatomic,strong)NSString *str1;
@property(nonatomic,strong)NSString *str2;

//声明一个+方法也就是一个类方法
+(SingleTon *)sharedSingleTon;

@end

SingleTon.m文件

#import "SingleTon.h"

@implementation SingleTon

+(SingleTon *)sharedSingleTon {
    //声明一个静态变量:静态变量的类型是SingleTon类型
    static SingleTon *singleTon = nil;
    //GCD  线程管理   dispatch_once只执行一次   单次线程管理
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        if (!singleTon) {
            singleTon = [[SingleTon alloc] init];
        }
    });
    return singleTon;
}

@end

注意无论赋值还是使用的时候都要先进行初始化

//申明初始化单例类的对象
SingleTon *single = [SingleTon sharedSingleTon]

第二:系统单例(AppDelegate)

与单例传值类似,不过是直接用工程的AppDelegate.h和AppDelegate.m文件,在此不做例子说明了。

//获取单例对象
AppDelegate *app = [[UIApplication sharedApplication] delegate];

使用ARC时,获取全局的AppDelegate会有如下的警告。

Initializing 'AppDelegate *__strong' with an expression of incompatible type 'id _Nullable'

解决方案:强制转换

AppDelegate *app = (AppDelegate*)[[UIApplication sharedApplication] delegate];
//获取应用程序的单例对象
UIApplication *app = [UIApplication sharedApplication];
//获取应用程序的单例对象的代理对象
AppDelegate *delegate = (AppDelegate *)app.delegate;

第三:初始化传值
第四:属性传值(局限于只能正向传值)
第五:NSUserDefaults(通过存值进行传值)

第六:代理(delegate)
第七:block

第八:通知
第九:KVO

你可能感兴趣的:(iOS界面传值)