首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
Ghost123
掘友等级
iOS开发工程师
世上除死无大事
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
0
文章 0
沸点 0
赞
0
返回
|
搜索文章
最新
热门
行为型模式之模板模式
要考虑一些特殊情况特殊处理.这里采用子类的扩展来实现。可以定义一些在特定点调用“钩子”操作方法。子类可以通过对钩子操作的实现从而在这些点上扩展功能。钩子操作默认情况是不对整个模板造成影响的。子类重载后,才为模板算法提供附加的操作。比如项目中的某些数据请求方法要加请求头token…
行为型模式之状态模式
仔细分析上面的问题,用户投票的类型就相当于描述了人员的几种投票状态,而各个状态和对应的功能处理具有很强的对应性,有点类似于“一个萝卜一个坑”,各个状态下的处理基本上都是不一样的,也不存在可以相互替换的可能。 为了解决上面提出的问题,很自然的一个设计就是首先把状态和状态对应的行为…
dispatch_group 的崩溃
1. 第一次在步骤1创建了一个新的group1,这时网络请求n1到n4请求未返回,也就是b1到b4 2. 此时又执行了一次步骤一创建了一个新的group,命名为group2(这是一个新的,代码见上图), 3. 此时若是1中的网络请求返回了,b1到b4就会调用,会对步骤2中创建的…
Block的本质(三)
方法。最终调用的 _Block_object_assign 方法会对block引入的对象 person 进行引用计数操作,当所引入的对象使用 strong 修饰则使其引用计数加1,若使用weak修饰则引用计数不变。 方法,将block内部引用的对象成员引用计数减1,如果此时外部…
Block的本质(二)
但是我们上面提到过,上述代码转化为c++代码查看源码时却发现block的类型与打印出来的类型不一样,c++源码中三个block的isa指针全部都指向_NSConcreteStackBlock类型地址。 我们可以猜测runtime运行时过程中也许对类型进行了转变。最终类型当然以r…
iOS bug和警告记录
提交APP Store Connect 第三方或者自身代码API和苹果私有API相似或者一样 上面错误的意思是你访问了苹果非公开的API,那你就找到它报错的方法,那么为了保证不相似,通常在方法前面加前
Block的本质(一)
使用 xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m 命令将其OC代码转化为底层的C++代码,观察block的底层结构。 很清晰,__main_block_impl_0是个结构体,那么相当于block就是一个…
行为型模式之迭代器模式
公交车上,有各色各样的人,售票员都需要让这些人买票,那么要让这些人买票,售票员肯定都得把车厢里的人都遍历一遍,不放过一个不买票的乘客,不管这个人是中国人还是外国人,是公交车公司内部人员还是公务员或者是小偷等,只要是来乘车的乘客,就必须买票. 仔细分析上面的问题,要以一个统一的方…
行为型模式之解释器模式
NonterminalExpression:非终结符表达式。为文法中的非终结符相关的解释操作 现在我们用解释器模式来实现一个基本的加、减、乘、除和求模运算。例如用户输入表达式“3 * 4 / 2 % 4”,输出结果为2 2. 定义终结符表达式 灵活的扩展性,想扩展语法规则时只需…
行为型模式之命令模式
要想实现一个请求命令可以被任意命令接受者执行,那么必须对二者进行解耦,让请求命令不必关心具体的命令接受者和命令执行的具体细节,只管发出命令,然后就可以被具体的命令接受者接受并执行。 那么如何实现二者的解耦呢?要让两者互相不知道,那么就必须引入一种中间量,这就是命令对象.它会把按…
下一页
个人成就
文章被点赞
105
文章被阅读
89,806
掘力值
1,796
关注了
18
关注者
54
收藏集
0
关注标签
6
加入于
2019-02-26