自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大兵布莱恩特

专注iOS开发喜欢 C/C++ 开发语言

  • 博客(42)
  • 收藏
  • 关注

原创 lg_pod_plugin解决 pod instal慢的问题

猛一看有点标题党意思, 说十倍提升有点夸张, 5-9 倍提升还是可以做到的.下边便是小编精心打磨 3 个月之久的ruby gem介绍部分。

2022-12-01 17:44:05 435 1

原创 __block修饰基本数据类型

####block内部为什么不能够直接修改 auto 变量的值?因为 auto age 变量是在栈上存放的, 当函数作用域结束时就会被销毁,而 block 执行的函数是在另一个函数方法里, 这个函数是无法访问到 auto age 变量的 ,虽然 block内部也会生成一个一模一样的变量 age 但是这个 age变量 是 block 内部的 不会影响到外部的 auto 变量 age . 因此...

2019-02-25 09:56:04 396

原创 Block对auto 类型对象的内存管理

在开始我们本文之前 我们先看下边的代码 运行结果NSMallocBlock 对auto 类型变量会进行强引用 因为 block 内存分配在堆空间 内部对 auto 变量进行强引用 在调用的时候 不至于 auto 对象类型已经被销毁掉在执行到48行代码时候 Person并没有被销毁 ,说明 block 内部对Person 对象进行了强引用NSStackBlock 不会对 auto类型变量进...

2019-02-25 09:55:18 226

原创 Block的三种类型

block有3中类型,可以通过 class方法或者 isa 指针查看具体类型,最终都是继承与NSBlock 的类型 有__NSGlobalBlock__,NSMallocBlock,NSStackBlock这三种 block在内存中分配的位置是不同的那么什么样的 block 是 NSGlobalBlock?什么样的 block 是 NSMallocBlock ?什么样的 block 是__N...

2019-02-25 09:54:52 3182

原创 Block内部的数据结构类型

本文会记录下最近对B lock 的一些探究,先从 block 是如何对局部变量捕获开始讲起.上边的代码 auto变量的值改变时,block 内部输出结果还是10,而 static 的局部变量 值变成了50. 那么 block 内部是如何对age height 进行处理的呢?可以通过 xcrun -sdk phones clang -arch arm64 -rewrite-objc ma...

2019-02-25 09:54:24 443

原创 iOS weak 指针实现原理2

SideTable 结构如下struct SideTable { spinlock_t slock; ///线程同步锁 RefcountMap refcnts; /// weak_table_t weak_table; /// weak 散列表 所有 weak 指针存放在这个表里};weak_table_t 结构如下struct weak_table_t { ...

2019-02-25 09:53:59 495

原创 iOS weak 指针实现原理1

####__weak 的作用是什么?先给出一段代码 分别用 __strong __weak __unsafe_unretained 指向这个Persion 对象时控制台输出内容分别是什么?__strong 指向该 Person 对象时 最后Person 才被 dealloc 说明 __strong是个强引用指针 Preson 对象在作用域结束后并没有被立即释放掉2019-02-19 16:...

2019-02-25 09:53:26 457

原创 iOS 数据结构之单向链表

链表 ,数组 是我们经常碰到的线性数据结构, 是一种真正的动态数据结构 ,而数组是一段连续的内存空间,通过指针偏移去取数组里相邻的数据,而链表是将不同的内存空间,连在在一起,类似于我们生活中常见的火车车厢,每节车厢就可以看做是一个数据,只不过这个数据内部还有个指针指向它下一个节点的数据.因此链表需要有个头节点 ,可以方便的进行查询 添加 移除等操作,小编通过学习链表这种数据结构的特点,用 ...

2018-08-07 17:48:18 550

原创 iOS 数据结构之数组

iOS 开发中经常使用到的数组为 NSArray 和 NSMutableArray ,这是 Foundation 给我们提供的数据结构.平时开发中使用 NSArray 和 NSMutableArray 是可以满足开发需要的.抱着学习的态度 小编对于数组这种数据结构的底层实现饶有兴趣,因此自己实现了一个数组.https://github.com/ZhaoBingDong/iOS-DataStr...

2018-08-07 17:43:55 467

原创 iOS 数据结构之队列

队列是iOS 中常见的一种数据结构,比如 NSOpeartionQueue 和 GCD 的 各种队列 ,其特点是先进先出(First In First out), 在多线程执行执行多个任务时候 ,放进同一队列的任务是顺次从队列里取出任务并执行的. gith 代码仓库 : https://github.com/ZhaoBingDong/iOS-DataStructures.git队列在我们生活...

2018-08-07 17:43:21 2381

原创 iOS使用GCD实现一个Timer

由于 NSTimer 要加到 runloop 中才能工作,这样的话 runloop 在跑圈的时候,如果遇到了当前线程任务比较繁忙,那么它处理 NSTimer 的时机就会滞后,导致 NSTimer 不够准时.因为我们可以用 GCD 的 dispatch_soure_t 去实现一个自己的定时器,而且还比较准时不受 Runloop 影响YVTimer API 设计 尽可能的仿照 NSTimer...

2018-07-11 17:21:05 952

原创 iOS窥探KVO底层实现实战篇

上文讲到 iOS KVO 底层实现原理https://www.jianshu.com/p/0aa83ac521ba,大概就是runtime时候动态的创建一个子类,并重写了子类的 setter dealloc class 等方法,将当前类的 isa 指针指向这个子类,这样就不会影响原有类的实现上图可以看到 KVO内部执行顺序今天我们就 kvo 内部执行顺序 也通过 runtime 动态...

2018-07-09 13:38:38 846

原创 iOS窥探KVO底层原理

最近小编公司招聘 iOS, 于是小编从网上找了几道面试题,来考察候选人iOS 开发方面的技术水平,其中有一道面试题便是 KVO 底层实现是什么? 如何手动出发 KVO? 修改成员变量的值会出发 KVO 吗? KVC 赋值会出发 KVO 吗? 当你了解 KVO 实现原理后,这几道面试题自然不在话下.接下来我将通过代码和讲解来窥探 KVO 背后的奥秘.首先创建一个 Perso...

2018-07-07 17:19:44 637

原创 iOS[super class]和[self class]

最近小编所在公司招 iOS 开发职位,小编也出了几道面试题考察下候选人的 iOS 开发水平,其中有一道题如下:@implementation Student : Person- (instancetype)init{ self = [super init]; if (self) { id obj1 = [self class]; i...

2018-07-07 09:59:39 3067

原创 iOS关联对象技术底层原理

iOS 通过 runtime 的 API 可以给分类添加属性,关联属性总共有下边3个 API///获取某个对象的关联属性id objc_getAssociatedObject(id object, const void *key) { return _object_get_associative_reference(object, (void *)key);}///给某个对...

2018-06-21 09:38:13 1352

原创 iOS设计模式之Strategy(策略模式)

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。有点类似于我们玩是 CS 枪战,不管你用 1 机枪 2 手枪 3小刀 4 手雷 ,到角色身上的永远是一个字干,点击鼠标左键,老夫写代码上去就是一梭子,不管你怎么实现的.接下来我将会用 C++ 代码去模拟我们玩 CS 过程中 武器 (策略) 角色之间的关系...

2018-06-14 20:44:45 256

原创 iOS设计模式之观察者模式

iOS 常见的观察者模式主要有通知和 KVO 这两种,通知可以实现一对多的关系, KVO 可以观察属性值的变化.虽然小编开发中经常用到观察者模式这种设计模式,但总觉得理解不是很深入 . 通知模式 KVO 监听下边会用一个例子详细的阐述观察者这种设计模式具体使用场景 这是一个酒店里经常可以看到的墙上挂的不同时区时间的钟表,我们以我国东八区北京时间为基准,当北京时间发送改变生...

2018-06-13 21:02:52 647

原创 iOS设计模式之单例模式

iOS 开发中单例随处可见,从开发者接触最多的 UIApplication 到 NSNotificationCenter, 再到 NSFileManager 单例模式的应用十分广泛,小便开发 iOS至今也经常用到单例这种设计模式,今天看 java 同事讲到懒汉式单例,感觉有点新颖(小编半路出家搞 iOS,基础很差),然后百度了下才知道了有饿汉模式和懒汉模式.楼主看了下自己写的代码,然后才知道自己一...

2018-06-13 19:50:02 150

原创 组件化开发之07 中间件的设计

原则上来说每个业务组件之间联系很少 ,比如消息模块 跟拼车 个人中心 不搭噶,拼车模块 只有一个 看图猜猜组件入口 ,一个心雨心愿组件入口,为了减少组件之间的依赖关系 ,就需要有个中间件去处理两个组件之间信息传递的问题.YVMediatorLib 是利用 Targe-Action runtime时候去跟其他组件发送消息APP 中有很多地方需要用户登录 这个时候该怎么设计,笔者使...

2018-06-12 16:06:25 553

原创 组件化开发之06 拼车组件是如何形成的

一个业务组件在 APP 中可能是一个业务模块,但它同时又是一个工程可以单独的调试和编译只要给这个组件相应的依赖组件 它就能运行起来 比如给拼车组件一个 登录注册组件 它就能完成登录注册,给它一个个人中心组件 ,它就能打开个人中心笔者建议 当你没有时间做组件时候 一定要将某个模块用到的控制器 模型 views 单独放到一个文件夹下 包括图片资源 ,将来抽取组件时候 单独对这个文件夹...

2018-06-12 16:06:01 200

原创 组件化开发之05 静态库转动态库

我们常见的友盟 微信支付 百度地图 高德地图 由于历史原因 可能要兼容 iOS7之前版本,目前这些公司提供的 SDK 都只支持静态库,笔者也咨询了融云客服希望他们能够提供下融云 IM 动态库的 framework, 但是融云客服并没有提供,只是说让笔者自己将静态库打包成动态库使用.其实静态库打包成动态库 跟普通类文件制作成 framework 基本相似, 以下以高德地图 SDK 进行演示 ...

2018-06-12 16:05:38 419

原创 组件化开发之04 如何将一些静态库打包成动态库

笔者打造出来了5个基础组件,满怀信心准备大干一场时候,发现业务组件用到支付宝 , 微信支付 SDK ,微博 SDK ,高德地图 SDK 等静态库. a ,.framework 文件时候,链接到组件时候报错误,而且还不容易解决,因为我整个工程都是 use_frameworks! ,将来 cocoapods 会把每个 pod 编译成一个个的 framework 动态库,这样静态库就没法使用了,这段时期...

2018-06-12 16:05:16 1553 2

原创 组件化开发之03 打造一喂航母战斗群

从 Boss 说要打造航空母舰开始 我就想到了用组件化去实现,一条航母(一喂主 APP), 多条护卫舰 顺风车 拼车网 长途汽车票 ,是如何利用多个 APP 给主 APP 引流的. 在刚到一喂智能科技时候,只有一个一喂直达 App, 里边有配送 跑腿 长途急件 爱心店铺 服务店铺等模块,刚开始笔者并么有对项目进行大刀阔斧的改造,而是一点点的抽离,先抽取出来一个 YVNetworkLib 将网络请...

2018-06-12 16:04:52 1245

原创 组件化开发之03 一喂 App 架构演变

从 Boss 说要打造航空母舰开始 我就想到了用组件化去实现,一条航母一喂主 APP, 多条护卫舰 顺风车 拼车网 长途汽车票 ,是如何利用多个 APP 给主 APP 引流的. 在刚到一喂智能科技时候,只有一个一喂直达 App, 里边有配送 跑腿 长途急件 爱心店铺 服务店铺等模块,刚开始笔者并么有对项目进行大刀阔斧的改造,而是一点点的抽离,先抽取出来一个 YVNetworkLib 将网络请求模...

2018-06-12 14:52:34 1300

原创 组件化开发之02 cocoapods 远程私有库

上一讲我们讲到了如何创建本地私有仓库,关于远程私有库就是我们按照 cocoapods 的一些规范创建一个自己的私有索引文件库和一个自己的私有库代码仓库,私有索引库存放我们私有库的podspec索引文件,后边更改了私有库版本内容,就将私有库的podsepc文件提交到这个私有索引库仓库里. 接下来我会具体的讲解 如何去生成这样一个远程私有索引库仓库,方便公司内部开发人员去使用这个远程私有库.//...

2018-06-12 12:03:20 270

原创 数据结构之栈-> Swift版本

iOS 开发中用到的 UINavigationController 其实就是一个栈结构,可以存放多个子控制器,栈顶控制器为当前显示的控制器,栈底控制器为 rootViewController ,当 push 操作时会将一个新的 UIViewController 存放到栈中去, pop 操作时会将栈顶控制器从 UINavigationController中移除Github代码地址 : https...

2018-06-09 20:46:43 175

原创 数据结构之环形队列-> Swift 版本

iOS 中的 NSOperationQueue 就是一种队列结构,遵循 FIFO 的原则,将 NSOperation 任务添加到队列中去,并挨个取出执行任务.Github代码地址 : https://github.com/ZhaoBingDong/DataStructure.git今天用 swift 代码来实现一个队列结构,使其具备一下特点 1 能够插入一个新的元素到队列尾 2 能够从...

2018-06-09 20:45:22 281

原创 组件化开发之01 cocoapods 本地私有库

阅读本文之前假定读者已经具有了能够使用 cocoapods 管理包依赖和能够通过编写 podspec 文件并上传过自己的 cocoapods 共公库到 GitHub.并能够通过 pod search 和 pod install 安装自己的 cocoapods 库.私有库分为远程私有库和本地私有库,本地私有库顾名思义就是在自己电脑上搞个文件夹放自己库的代码,并通过pod install从本地引入...

2018-06-09 20:43:12 802

原创 七牛云多图片上传顺序问题

七牛云只提供了单张图片上传的 API, 如果需要多张图片上传,那么就需要多次调用上传文件的 API, 这样在多图片上传时无法保证上传图片顺序,因为有的图片上传的快,有的图片上传的慢,类似朋友圈发表评论的功能,用户可以选择上传图片,那么你必须保证上传图片的顺序跟用户选择图片的顺序一致.本文提供了部分代码,教你如何使用七牛云多图片上传时图片顺序的问题.将图片和对应的 key 放到一个字典里,可以同...

2018-06-09 20:41:22 1848

原创 数据结构之环形队列-> Swift 版本

iOS 中的 NSOperationQueue 就是一种队列结构,遵循 FIFO 的原则,将 NSOperation 任务添加到队列中去,并挨个取出执行任务.Github代码地址 : https://github.com/ZhaoBingDong/DataStructure.git今天用 swift 代码来实现一个队列结构,使其具备一下特点1 能够插入一个新的元素到队列尾2 能够从队列头取出一个元...

2018-06-09 20:22:03 192

原创 C语言五子棋小游戏

这段时间笔者一直在学习 C 语言的语法,能够使用 C 语言的构造类型,简单的指针使用,今天做了一个五子棋的小游戏,图形界面是用的 Xcode 上的 UIKit 框架主要是对二维数组的初始化和访问 主要是对棋盘横向 竖向 两个斜方向棋子内容进行扫描 将某个方向连续相同的棋子放到一个数组里,判断棋子是否大于等于5个....

2018-06-06 20:03:28 1481

原创 拼车多乘客线路规划

笔者最近在开发一款拼车的项目,车主发布服务时候 可能会有多个乘客购买,而每个乘客可能出发地和目的地不尽相同,这也就造成了车主接送乘客优先级的问题,到底怎么选择先接那个乘客送那个乘客才能减少出行距离呢.地图路线规划这块用的高德地图 API, 使用起来很简单 可以设置起点 终点 ,沿途经过点(最多16个途经点),就可以在地图上将所有点绘制成一条线路,如果不考虑每个点之间的距离,那么简单设置下 会看的地...

2018-06-06 20:00:48 4458 1

原创 sizeThatFits 和 sizeToFit的区别

代码部分 :   https://github.com/ZhaoBingDong/CAAnimaiton一  sizeThatFits 和 sizeToFit的区别UIView 有个 sizeToFit 方法来计算 UIView 合适的 bounds.size, 注意 autolayout 约束过的 view 该方法失效.```- (void)sizeToFit;           // cal...

2018-05-16 19:12:32 358

原创 sizeThatFits 和 sizeToFit的区别

代码部分 :   https://github.com/ZhaoBingDong/CAAnimaiton一  sizeThatFits 和 sizeToFit的区别UIView 有个 sizeToFit 方法来计算 UIView 合适的 bounds.size, 注意 autolayout 约束过的 view 该方法失效.```- (void)sizeToFit;           // cal...

2018-05-16 18:03:12 214

原创 记一次面试后的经历,求解篇

本文涉及到的几个问题来源于一次面试经历 ,当时回答的一塌糊涂,所以回来就看看官方文档和一些博客文章,并问下同学看看他们如何回答这几个问题.希望各位 iOS 开发同学,在学习使用  Cocoa的一些 Framework 时多看看一些官方文档说明,有时候官方文档都有明确说明,我就是没有看, so 我面试时回答不出来.声明 : 本文代码部分来源于 objc 中国 View-Layer 协作  https...

2018-05-16 18:02:53 276

原创 iOS 自定义 tabbar 的 badgeValue显示样式

系统的 tabbar 中设置tabbarItem.badgeValue 后显示样式是红色的小数字,由于UI在设计 app 界面时考虑到风格统一的问题,那么就需要让 badgeValue 背景色,文字颜色有所改变.通过遍历所有 tabbar 内部子 view 没有发现某个 view 时可以改变这个 badgeValue 的样式的,通过查找 subLayer 方式也没有找到控制着这个 badgeVal...

2018-05-16 18:02:33 1872

原创 仿微信 QQ 图片选择器

iOS8以后苹果推出了 Photos.Framework来管理用户相册等多媒体资源,笔者抱着学习的态度仿写了一个多图片选择器,利用 Photos.Framework 来获取相册里的相片视频.CYPhotosLibrary  获取相册里的分组,查看单个分组里所有相片,单选和多选照片,可以设置最大选择照片的数量. github地址: [https://github.com/ZhaoBingDong/C...

2018-05-16 18:02:14 167

原创 如何优雅的设置圆形图片,避免离屏渲染的问题

其实就是把下载的图片裁切成圆形图片,然后再设置 imageView.image  ,为了避免每次都需要裁切图片的操作,对已经裁切成圆形的图片进行缓存,方便快速读取.github地址 : https://github.com/ZhaoBingDong/CYRoundImageViewUIButton+Extension 和 UIImageView+Extension  主要是给 UIButton 设...

2018-05-16 18:01:48 219

原创 服务器返回<null>值 iOS 端如何处理

两张图让你对服务器返回值不再纠结,其实就是过滤吧&lt;null&gt;  类型替换成 "" 不就得了// 网络请求成功后,拿出 response object 在这里进行处理扩充了 NSDictionary的类型,将字典里&lt;null&gt;的值进行替换// 使用后的效果如下...

2018-05-16 18:01:08 812

原创 如何自己实现属性的 setter和getter 方法

笔者最近做项目中需要将用户的资料模型归档成plist 文件,并在应用启动时从 plist 文件中读取出来,使用了单例类来管理这个模型.因为用户资料中有些属性需要频繁的赋值修改,需要每次把模型取出来后修改属性,再归档到沙盒目录下是很麻烦的.所以通过单例类保存一个用户资料模型,需要的时候直接通过 getter 方法读取,然后通过setter方法赋值.那么这个时候问题来了, property 的属性不支...

2018-05-16 18:00:37 1912

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除