美文网首页
iOS界面传值

iOS界面传值

作者: RyderZhang | 来源:发表于2016-07-11 16:31 被阅读167次

    第一:单例(SingleTon)

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

    SingleTon.h文件

    #import <Foundation/Foundation.h>
    
    @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<UIApplicationDelegate> _Nullable'
    

    解决方案:强制转换

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

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

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

    第八:通知
    第九:KVO

    相关文章

      网友评论

          本文标题:iOS界面传值

          本文链接:https://www.haomeiwen.com/subject/terjjttx.html