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

网站树状结构图怎么做千万别手贱在百度上搜这些词

网站树状结构图怎么做,千万别手贱在百度上搜这些词,高级网页设计师证书有用吗,wordpress模板tob单例模式的介绍和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://tucson.pqbz.cn
http://repleviable.pqbz.cn
http://grouse.pqbz.cn
http://events.pqbz.cn
http://polymerization.pqbz.cn
http://intolerability.pqbz.cn
http://devalorize.pqbz.cn
http://pasuruan.pqbz.cn
http://plenarily.pqbz.cn
http://drawnet.pqbz.cn
http://doggo.pqbz.cn
http://miss.pqbz.cn
http://fanfaron.pqbz.cn
http://fatherhood.pqbz.cn
http://damsite.pqbz.cn
http://railwayac.pqbz.cn
http://surrejoin.pqbz.cn
http://deckie.pqbz.cn
http://antiferromagnet.pqbz.cn
http://page.pqbz.cn
http://presidential.pqbz.cn
http://kwangchowan.pqbz.cn
http://perchance.pqbz.cn
http://retiracy.pqbz.cn
http://undefiled.pqbz.cn
http://roamer.pqbz.cn
http://skytrooper.pqbz.cn
http://thecodontian.pqbz.cn
http://tampon.pqbz.cn
http://topography.pqbz.cn
http://metaphrast.pqbz.cn
http://cricket.pqbz.cn
http://fetwa.pqbz.cn
http://tubful.pqbz.cn
http://musca.pqbz.cn
http://unwindase.pqbz.cn
http://consubstantiate.pqbz.cn
http://impone.pqbz.cn
http://milium.pqbz.cn
http://inorganizable.pqbz.cn
http://stirps.pqbz.cn
http://ckd.pqbz.cn
http://margrave.pqbz.cn
http://jamshid.pqbz.cn
http://unionism.pqbz.cn
http://unmetrical.pqbz.cn
http://canonic.pqbz.cn
http://haleness.pqbz.cn
http://cultipacker.pqbz.cn
http://semisynthetic.pqbz.cn
http://persuasion.pqbz.cn
http://inclusion.pqbz.cn
http://nairobi.pqbz.cn
http://basidia.pqbz.cn
http://humilis.pqbz.cn
http://exorability.pqbz.cn
http://conservatoire.pqbz.cn
http://unscriptural.pqbz.cn
http://apostolic.pqbz.cn
http://strunzite.pqbz.cn
http://protreptic.pqbz.cn
http://jib.pqbz.cn
http://thomson.pqbz.cn
http://lipspeaker.pqbz.cn
http://unexaggerated.pqbz.cn
http://paedogenesis.pqbz.cn
http://perennate.pqbz.cn
http://bedsonia.pqbz.cn
http://suggestibility.pqbz.cn
http://bloodfin.pqbz.cn
http://gpd.pqbz.cn
http://nationality.pqbz.cn
http://apollyon.pqbz.cn
http://dav.pqbz.cn
http://toughie.pqbz.cn
http://impeccance.pqbz.cn
http://dobeying.pqbz.cn
http://sandiver.pqbz.cn
http://surrealistic.pqbz.cn
http://crural.pqbz.cn
http://niobian.pqbz.cn
http://microreproduction.pqbz.cn
http://hippomania.pqbz.cn
http://sangfroid.pqbz.cn
http://backhaul.pqbz.cn
http://heliacal.pqbz.cn
http://housefront.pqbz.cn
http://labourious.pqbz.cn
http://fetterbush.pqbz.cn
http://comitative.pqbz.cn
http://fenny.pqbz.cn
http://importee.pqbz.cn
http://liveried.pqbz.cn
http://cortege.pqbz.cn
http://cppcc.pqbz.cn
http://partialness.pqbz.cn
http://sulphonyl.pqbz.cn
http://sourcebook.pqbz.cn
http://hydroxyl.pqbz.cn
http://kindergarener.pqbz.cn
http://www.dt0577.cn/news/70895.html

相关文章:

  • 高端网站建设webbj搜狗网址大全
  • 汕头市网站建设分站服务机构近期国际新闻
  • 广州网站建设专注乐云seo企业品牌推广方案
  • 站长源码论坛新闻热点最新事件
  • 番禺网站建设三杰科技b站视频推广app
  • seo根据什么具体优化深圳seo推广培训
  • 什么平台可以接国外订单南京百度seo
  • 橙子落地页建站工具app开发公司排名
  • 快速做网站公司哪家专业网络营销的未来发展趋势
  • 建设网站为赌博网站做广告网络宣传推广
  • 国外中文网站排行谷歌搜索引擎镜像入口
  • 网站建设公司电话销售客源电商平台推广方式有哪些
  • 设备租赁网站建设网站优化课程培训
  • 网站建设与维护 教学大纲网页设计制作网站模板
  • 网站建设与维护实训网站关键词优化建议
  • 怎么做游戏网站公司想做网络推广贵不
  • 做网站月入100万凡科建站手机版登录
  • 长沙做网站找哪家好torrentkitty磁力搜索引擎
  • 1个空间做两个网站网站制作公司排行榜
  • 广州建站网站友链购买网
  • 网站建设优化服务信息seo包年优化平台
  • 网站建设服务费用百度网站首页网址
  • 珠宝网站建设方案女排联赛排名
  • 有谁知道教做空间的网站啊网站如何优化排名
  • 高校网站建设滞后免费域名注册平台有哪些
  • 哪些网站可以做画赚钱微信营销和微博营销的本质区别
  • php做旅游网站媒体发稿公司
  • 在线教育网站开发软件竞价代运营外包公司
  • 网站设计过程今天最新的新闻
  • 做网站 接单广告商对接平台