14-1 UITableView综合-模态viewController、单例(LED,Neon)

本文详细介绍了模态视图控制器的概念及其在iOS应用中的使用场景,并深入探讨了单例模式的设计原理和实现方法,包括如何保证单例对象的唯一性和正确使用。

1、模态视图控制器

介绍
程序中切换页面,可以使用UINavigationController。通过导航功能实现页面切换。
某种情况下,可以使用视图控制器的一对方法实现切换页面
presentViewController:animated:completion: 展示新的页面
dismissViewControllerAnimated:completion: 从新页面返回
通过上述方法显示的controller被称为模态视图控制器。注:模态视图控制器不是一个类,只是一种方式显示的controller。

使用场景
UIImagePickerController。调用系统相册、照相机。
临时展示一些内容。例如:程序中用户登录,通讯录中添加联系人等等。
导航控制器控制的controller具有层级关系。present控制显示的controller与之前的controller是两个层级。

使用方式
presentViewController:animated:completion: 模态显示controller
在controllerA中模态显示controllerB
presenting view controller => controllerA
presented view controller => controllerB (被弹出的)

dismissViewControllerAnimated:completion: 弹出模态controller
两种实现方式,在模态controller中使用:
[self dismissViewControllerAnimated:YES completion:nil];
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
使用self调用方法,系统会使用self.presentingViewController调用这个方法。

属性设置
modalPresentationStyle 模态controller显示样式
modalTransitionStyle 模态显示动画样式

2、单例

单例对象
单例。单:唯一性。例:实例对象。即使用某个类创建的对象是程序中唯一的实例对象。

注:通常每次使用alloc创建的是不同的对象,即单例只alloc+init一次。

单例核心:保证类的全局对象是唯一的 整个工程中只创建一次(和懒加载相似),只alloc init过一次 ,不是新创建的。

如果一个类只能创建一个对象,称为单例类。单例类可以是工具类,视图类,控制器类。

使用场景
某些时候,程序中的多个类需要使用同一个变量。如何处理?将变量定义在单例类中,则所有类在操作这个变量时都很方便容易。

使用方法
定义单例类。
定义创建单例对象的方法(类方法)。
根据需要实现伪单例或完整单例。

屏幕快照 2015-12-03 下午8.31.14.png

注意
操作单例对象的变量存储在静态区,程序关闭后由系统自动回收。
单例对象存储在堆区,不释放,程序关闭后由系统自动回收。
变量和单例对象的生命周期与程序同步。

优势
a.在内存中只有一个对象,节省内存空间。
避免频繁的创建销毁对象,可以提高性能。
避免对共享资源的多重占用。
b.可以全局访问。
降低模块之间的耦合度,降低代码的复杂度。

3、单例模式

单例模式是一种设计模式。
实现:定义一个单例类,(方法锁)保证程序中这个类只能创建唯一的实例对象,实现资源共享。

方法锁
待添加
/  单例类使用此方法,创建单例对象

static Singleton *singleton = nil;
+ (Singleton *)defaultSingleton
{
    //  方法锁,作用为:当多个线程同时调用一个方法的时候,保证只有一个县城在使用此方法。例如:A和B同时调用defaultSingleton方法,如果A正在使用此方法,那么B就不能调用,直到A使用完成,B才会执行此方法。这个也是保证单例对象的唯一性,避免初始化方法被同时多次执行。(iOS5之后新加功能)  使用相当方便。

    @synchronized(self) {
        // 如果还没有创建过对象,使用singleton指向新创建的对象
        if (singleton == nil) {
            singleton = [[Singleton alloc] init];
        }
        // 如果已经创建过对象,则直接返回已经创建的对象
        return singleton;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值