标签:ios
说起单例,小伙伴们应该并不陌生了吧,它是设计模式中的一种,iOS开发中比较常见
说一下我们为什么要用单例吧
主要是我们想在项目的运行过程中,一直持有某个对象的内存,而不去释放它,随用随拿
但是要注意的地方就是初始化的时候,请不要在初始化方法里面添加耗时操作,只要添加一些较简单的就好
比如我们在做一个功能,类似百度贴吧的发帖功能吧,那么这里的发帖又分为在某贴吧、某群组、某个圈子去发帖,或者说发的帖子要删掉,发送失败的帖子要保存,好多复杂的逻辑
那么这时候我们就要去选择单例来处理,因为我们随时可调,无论它在哪个贴吧、群组、圈子
所以我们把整个发帖流程封装到一个Manager类中,为它起个名字:NTCSendPostInfoManager
它的主要作用就是封装好几个方法来为使用者来使用,先完成它的初始化方法吧
+ (instancetype)sharedInstance; + (instancetype)sharedInstance { static NTCSendPostInfoManager *instance = nil; static dispatch_once_t predicate; dispatch_once(&predicate, ^{ instance = [[self alloc] initWithPostInfoType:InfoTypeSendInfo]; }); return instance; }
接下来我们要给使用者暴露1个方法来进行发帖的操作,里面直接调用相应的发帖接口就好,那么这里我们需要传进来一个Model,是用来保存整个帖子信息的,包括是否有图片的情况,所以我们要在方法的里面自己去判断,这里我用来一个Block来回调是否发帖成功,以及对应的后续处理
typedef void(^SendPostInfoResult)(BOOL isSendPostSuccess, NTCSendPostInfoModel *infoModel); - (void)sendPostWithSendPostInfoModel:(NTCSendPostInfoModel *)model success:(SendPostInfoResult)sendPostSuccess;
还有就是要与数据库、Model相关联,这里我们要暴露一个存储、删除、获取的几种方法,用来操作帖子相关的信息
- (void)saveSendInfoModelData:(NTCSendPostInfoModel *)model; - (NTCSendPostInfoModel *)loadSendInfoModelData; - (void)deleteSendInfoModelData;
接下来我们还要想到是否需要暴露一些属性,方便使用者来用呢,具体情况具体分析了,例子中我用时间来表示当前Model的唯一性,方便我们取出某一个时间对应的帖子信息
@property (nonatomic, strong) NSDate *currentPostInfoKey;
然后我们再调用的时候只要记得调用单例然后再调用对应的方法就好了哦
[[NTCSendPostInfoManager sharedInstance] setInfoTypeYouNeed:InfoTypeSendInfo];
好吧,就写这么多吧,希望对读者可以有帮助哦
本文出自 “东软iOS校友群的技术博客” 博客,请务必保留此出处http://neusoftios.blog.51cto.com/9977509/1651883
标签:ios
原文地址:http://neusoftios.blog.51cto.com/9977509/1651883