博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 如何创建单例对象
阅读量:5889 次
发布时间:2019-06-19

本文共 2336 字,大约阅读时间需要 7 分钟。

一、什么是单例?

说到单例我就想起了我的java啊 ,不禁感叹起我的大学时光,学了4年的java开发,到现在还是放弃了我的java,踏入了iOS的行列。

算了,入正轨,我现在正是铁树银花的青春美少女,不要抱怨,少说多做,要相信自己,要勇于拼搏,送自己一句话:  不论你在什么时候开始,重要的是开始之后就不要停止。

单例模式是一种常见的设计模式。“单”是指唯一性,“例”是指实例化对象,也就是使某个类的一个对象成为系统中的唯一实例。

这样有什么优点呢? 

1.在内存中只有一个对象,节省内存空间。 

2.避免频繁的创建销毁对象,可以提高性能。

3.避免对共享资源的多重占用。

4.可以全局访问。

例如,由于项目的需求,我需要写我的登录模块,而且需求要求每次确保一个用户登录,而且在项目中大量用到登录用户的登录的账户名,判断登录状态,这个时候,我就可以把登录用户 用单例模式来创建,登录成功的时候给单例赋值,这样就确保了只有一个对象存在,在其他类里面也可以共享这个单例了。

二、如何创建iOS中的单例?

首先,我创建一个UserEntity来保存登录用户的信息。
////  UserEntity.h//  Community////  Created by Juncy_Fan on 13-6-15.//  Copyright (c) 2013年 macmini. All rights reserved.//#import 
@interface UserEntity : NSObject{ NSString *userName; //存储登录用户的用户名 BOOL isLogin;//存储登录状态}@property (copy, nonatomic) NSString *userName;@property (assign, nonatomic) BOOL isLogin;@end
下面是.m文件
////  UserEntity.m//  Community////  Created by Juncy_Fan on 13-6-15.//  Copyright (c) 2013年 macmini. All rights reserved.//#import "UserEntity.h"@implementation UserEntity@synthesize userName;@synthesize isLogin;@end
其次,我写一个工具类Util,来帮助我存储登录用户,实现单例模式
////  Util.h//  Community////  Created by Juncy_Fan on 13-6-5.//  Copyright (c) 2013年 macmini. All rights reserved.//#import 
#import "UserEntity.h"@interface Util : NSObject//获取当前的用户信息+(UserEntity * )getCurrentUserInfo;@end
下面就去实现单例模式吧
////  Util.m//  Community////  Created by Juncy_Fan on 13-6-5.//  Copyright (c) 2013年 macmini. All rights reserved.//#import "Util.h"#import "Constants.h"@implementation Util//当前登录用户的信息 为单例模式+(UserEntity * )getCurrentUserInfo{    static dispatch_once_t pred;    static UserEntity *currentUser;    dispatch_once(&pred, ^{        currentUser = [[UserEntity alloc] init];    });    return currentUser;}@end

三、如何使用单例对象

在LoginViewController界面,点击登录按钮,判断是否登录成功。登录成功,就要把用户信息存储起来。
if ([loginflag isEqualToString:kLoginSuccessFlag]) /*如何判断登录成功*/             {                 //存储登录用户到单例                 UserEntity *user = [Util getCurrentUserInfo];                 user.isLogin = YES;                 user.userName = _nameTextField.text;                 //跳转页面的代码。。。。。。。。             }
在某些地方需要判断用户是否登录的时候
if ([Util getCurrentUserInfo].isLogin == YES)        {           NSString *userName = [Util getCurrentUserInfo].userName;//已经登录状态,获取登录用户名        }        else        {            NSLog(@"未登录状态");        }
好啦,OK啦。收工

 

转载地址:http://rvysx.baihongyu.com/

你可能感兴趣的文章
Java的缓冲流内部实现及其效率探讨
查看>>
mysql+mycat实现读写分离
查看>>
http协议特点,web资源,url通用格式
查看>>
学习安卓开发[1] - 程序结构、Activity生命周期及页面通信
查看>>
安装和卸载软件包
查看>>
socket_ftp下载实例_完善功能
查看>>
linux源码包与RPM包的区别
查看>>
部署 k8s Cluster(下)- 每天5分钟玩转 Docker 容器技术(119)
查看>>
40条常见的移动端Web页面问题解决方案
查看>>
bash-shell-scripts高级脚本配置IP地址
查看>>
week04_python函数、参数及参数结构
查看>>
centos6.4_kvm 双网卡(adsl+局域网)配置
查看>>
电力行业IT运维管理解决方案
查看>>
Protostar format4
查看>>
SpringDataJpa的简单入门使用
查看>>
解决Wget下载时的乱码问题
查看>>
import android.support.v7.app.ActionBarActivity; 报
查看>>
ImageView显示超大图片
查看>>
bash的工作特性之命令执行返回值和命令展开的内容及练习示例
查看>>
linux 命令 —— gzip
查看>>