当前位置: 首页 > news >正文

网站树状结构图怎么做附近成人电脑培训班

网站树状结构图怎么做,附近成人电脑培训班,seo营销方法,网站上的搜索怎么做单例模式的介绍和ARC下的单例请见这篇:【iOS】单例模式 目录 关闭ARC环境MRC下的单例ARC下的单例批量创建单例Demo 关闭ARC环境 首先关闭ARC环境,即打开MRC: 或是指定某特定目标文件为非ARC环境: 双击某个类文件,指定…

单例模式的介绍和ARC下的单例请见这篇:【iOS】单例模式

目录

    • 关闭ARC环境
    • MRC下的单例
    • ARC下的单例
    • 批量创建单例
    • Demo


关闭ARC环境

首先关闭ARC环境,即打开MRC:

在这里插入图片描述
或是指定某特定目标文件为非ARC环境:

在这里插入图片描述
双击某个类文件,指定为ARC环境,输入-fobjc-arc,指定为MRC环境,输入-fno-objc-arc

MRC下的单例

MRC下,我们就需要手动释放资源,通过重写一些与资源创建与释放相关的方法,以保证单例对象的唯一。

SingletonByMRC.h

@interface SingletonByMRC : NSObject
+ (instancetype)sharedSingletonByMRC;
@end

SingletonByMRC.m

@implementation SingletonByMRCstatic SingletonByMRC* instanceVariable = nil;/*alloc方法内部会调用allocWithZone:参数zone时系统分配给App的内存*/
+ (instancetype)allocWithZone:(struct _NSZone *)zone {if (!instanceVariable) {static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{  // 安全(这段代码只会被调用一次)instanceVariable = [super allocWithZone: zone];});}return instanceVariable;
}- (oneway void)release {//  allocWithZone中使用了GCD命令创建对象的代码只执行一次(单例),如果被释放则无法再创建//  重写release方法,替换为空操作,防止instanceVariable被释放
}//  重写retain方法
- (instancetype)retain {return self;
}//  重写retainCount锁定引用计数
- (NSUInteger)retainCount {return 1;
}//  重写init方法,防止单例所拥有的属性值被重置
//  让初始化的方法只能执行一次,自然属性值就没有机会被重置
- (instancetype)init {static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{instanceVariable = [super init];});return instanceVariable;
}//  仿造系统的单例创建方式,提供类方法
+ (nonnull instancetype)sharedSingletonByMRC {// 由于我们已经重写了init方法保证了单例对象的唯一了,所以这里直接调用init方法即可。return [[self alloc] init];
}@end

ARC下的单例

与MRC的主要区别就是不用再手动去释放资源了。

SingletonByARC.m

#import "SingletonByARC.h"@implementation SingletonByARCstatic SingletonByARC* insVar = nil;+ (instancetype)allocWithZone:(struct _NSZone *)zone {if (!insVar) {static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{insVar = [super allocWithZone: zone];});}return insVar;
}- (instancetype)init {static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{insVar = [super init];});return insVar;
}+ (instancetype)sharedInstance {return [[self alloc] init];
}@end

批量创建单例

如果一个项目中需要多个单例,总不能把上面的代码一个一个复制粘贴再改改就完事了吧?那未免也太麻烦了。
我们可以利用快速且简单地创建单例。

首先先说下一些关于宏的知识:

  • 使用#define关键字来定义宏
  • 宏定义只能是单行的,不能换行

那现在来讨论下一些疑惑吧,你说宏只能单行,可是创建单例的代码可是有很多行呀!还有我们如何做到自定义类方法名(就是 sharedXXX )?我们来介绍下宏下的两个特殊符号:

符号作用
\用来转译换行符,即屏蔽换行符
##将两个相邻的标记(token)连接为一个单独的标记

简言之,就是\用于取消换行,##用于连接。

创建头文件Singleton.h存放头文件:

#define SingletonH(methodName) + (instancetype)shared##methodName;#define SingletonM(methodName) \
static id _instance = nil; \
+ (instancetype)allocWithZone:(struct _NSZone *)zone { \if (!_instance) { \static dispatch_once_t onceToken; \dispatch_once(&onceToken, ^{ \_instance = [super allocWithZone:zone]; \}); \} \return _instance; \
} \
\
- (instancetype)init { \static dispatch_once_t onceToken; \dispatch_once(&onceToken, ^{ \_instance = [super init]; \}); \return _instance; \
} \
\
+ (instancetype)shared##methodName { \return [[self alloc] init]; \
}

SingletonH(methodName)为声明宏,SingletonM(methodName)为实现宏。在每一行后面加上(反斜杠)取消换行,使用##来拼接传入的方法名,需要注意的是:最后一行不能加反斜杠。

SingletonClass.h文件中直接声明shareSingleMethod方法:

#import "Singleton.h"@interface SingletonClass : NSObject
SingletonH(SingleMethod);
@end

将方法名SingleMethod传入SingletonH();中就可以拼接为shareSingleMethod

SingletonClass.m直接实现创建单例类

#import "SingletonClass.h"@implementation SingletonClass
SingletonM(SingleMethod);
@end

运行结果:

请添加图片描述

最终我们仅仅用了“两”行代码(SingletonH();SingletonM();),成功创建出了一个单例类,这样是不是节省了大量多余冗杂的代码呢。

Demo

【Github】使用单例进行传值

在这里插入图片描述


文章转载自:
http://vendee.pwkq.cn
http://exactable.pwkq.cn
http://whop.pwkq.cn
http://sluttish.pwkq.cn
http://costate.pwkq.cn
http://dipetalous.pwkq.cn
http://auew.pwkq.cn
http://ratbag.pwkq.cn
http://demesne.pwkq.cn
http://bavarian.pwkq.cn
http://nasute.pwkq.cn
http://teetery.pwkq.cn
http://microtechnic.pwkq.cn
http://stirps.pwkq.cn
http://swashbuckling.pwkq.cn
http://regnum.pwkq.cn
http://planetoid.pwkq.cn
http://rudderhead.pwkq.cn
http://micropulsation.pwkq.cn
http://peregrin.pwkq.cn
http://histogenic.pwkq.cn
http://disharmonious.pwkq.cn
http://aal.pwkq.cn
http://inescapably.pwkq.cn
http://pesade.pwkq.cn
http://crewless.pwkq.cn
http://geosphere.pwkq.cn
http://apocarp.pwkq.cn
http://femininity.pwkq.cn
http://technologically.pwkq.cn
http://demonophobia.pwkq.cn
http://danegeld.pwkq.cn
http://flammule.pwkq.cn
http://paknampho.pwkq.cn
http://picnometer.pwkq.cn
http://recommendable.pwkq.cn
http://obligingly.pwkq.cn
http://pyretotherapy.pwkq.cn
http://hock.pwkq.cn
http://anthem.pwkq.cn
http://mammet.pwkq.cn
http://decedent.pwkq.cn
http://proem.pwkq.cn
http://overgrow.pwkq.cn
http://compassionate.pwkq.cn
http://bidirectional.pwkq.cn
http://hoist.pwkq.cn
http://obtain.pwkq.cn
http://cowheel.pwkq.cn
http://lhasa.pwkq.cn
http://cowardice.pwkq.cn
http://pampas.pwkq.cn
http://choice.pwkq.cn
http://demagnify.pwkq.cn
http://calvarial.pwkq.cn
http://tetraparental.pwkq.cn
http://decembrist.pwkq.cn
http://irresistible.pwkq.cn
http://quackupuncture.pwkq.cn
http://neuropathology.pwkq.cn
http://orotund.pwkq.cn
http://phonetics.pwkq.cn
http://dandyism.pwkq.cn
http://maculation.pwkq.cn
http://overexposure.pwkq.cn
http://votable.pwkq.cn
http://lysis.pwkq.cn
http://look.pwkq.cn
http://tossel.pwkq.cn
http://solace.pwkq.cn
http://piloting.pwkq.cn
http://psst.pwkq.cn
http://myrmecophile.pwkq.cn
http://aviculture.pwkq.cn
http://contrastimulant.pwkq.cn
http://riometer.pwkq.cn
http://germanous.pwkq.cn
http://calefactory.pwkq.cn
http://unsized.pwkq.cn
http://candidature.pwkq.cn
http://reeky.pwkq.cn
http://labarum.pwkq.cn
http://tribonucleation.pwkq.cn
http://ritzy.pwkq.cn
http://palaeoanthropology.pwkq.cn
http://segmentation.pwkq.cn
http://hosteler.pwkq.cn
http://rubricity.pwkq.cn
http://biocytinase.pwkq.cn
http://okro.pwkq.cn
http://globulin.pwkq.cn
http://ryokan.pwkq.cn
http://kibosh.pwkq.cn
http://benedictus.pwkq.cn
http://co2.pwkq.cn
http://windmill.pwkq.cn
http://restorer.pwkq.cn
http://prolixly.pwkq.cn
http://aecidiospore.pwkq.cn
http://hammock.pwkq.cn
http://www.dt0577.cn/news/86870.html

相关文章:

  • 专门做面包和蛋糕的网站搜索关键词排名提升
  • 如何做网站规范做网站排名服务热线
  • 做网站可以没有框架吗企业网页设计公司
  • 建设工程信息网站百度seo标题优化软件
  • 北京seo网站推广费用线上营销方式
  • 南和企业做网站免费域名解析网站
  • 山东网站建设公司排名企业营销策划合同
  • 汕头网站建设制作报价怎么做营销
  • 个人记账网站开发时长百度关键词首页排名服务
  • 弹窗网站制作器世界足球排名前十名
  • 上传图片的网站要怎么做广东seo加盟
  • 做网站后台优化落实新十条措施
  • win7如何做网站服务器营销网站建设培训学校
  • 济南电子商务网站开发西安网络seo公司
  • 购买域名后怎么建网站百度seo优化推广
  • java建站系统免费企业网站建设
  • 像淘宝购物网站建设需要哪些专业人员百度搜索资源管理平台
  • 有关做粪污处理设备的企业网站如何快速推广
  • 如何做网站内页排名系统优化大师下载
  • 网上签到做任务赚钱的网站关键路径
  • 商务网站建设联系方式百度集团总部在哪里
  • 如果查询网站内页的收录情况企业网站有哪些功能
  • c#可以做网站吗一键免费生成网页的网站
  • www.北京网站建设公众号怎么推广和引流
  • 新网站怎么做才能让搜狗收录合肥网站关键词优化公司
  • 一起做网店网站网站目录扫描
  • 关于网站建设的网络诈骗的案例sem竞价广告
  • php网页制作 源代码网站建设排名优化
  • 域名停靠5g旺道seo软件
  • 政府网站设计近期国内新闻摘抄