自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王学森的专栏

为年轻时吹下的牛逼而奋斗

  • 博客(13)
  • 资源 (2)
  • 收藏
  • 关注

原创 dispatch_walltime与dispatch_time_t 的区别

dispatch_walltime的官方文档解释如下Functiondispatch_walltime// 根据系统时钟,创建一个绝对时间Creates a dispatch_time_t using an absolute time according to the wall clock.Declarationdispatch_time_t dispatch_walltime(con...

2020-03-26 11:36:25 1244

转载 iOS管理对象内存的数据结构以及操作算法--SideTables、RefcountMap、weak_table_t(二)

这篇文章是之前那篇文章iOS管理对象内存的数据结构以及操作算法--SideTables、RefcountMap、weak_table_t的补充和延伸。如果没有阅读过前一篇文章请先看那一篇。上一篇文章中关于SideTables、SideTable和RefcountMap三者关系可能描述的不太清楚。很多朋友表示看起来晕乎乎的。当初我在研究的时候也是蒙圈了好长一段时间。所以特意写了这篇文章来...

2020-03-21 17:38:51 543

转载 iOS管理对象内存的数据结构以及操作算法--SideTables、RefcountMap、weak_table_t (一)

通过阅读本文你可以了解iOS管理对象内存的数据结构是什么样的,以及操作逻辑。对象的reatin、release、dealloc操作是该通过怎样的算法实现的,weak指针是如何自动变nil的。    本文所阐述的内容代码部分在苹果的开源项目objc4-706中。** 本文流程:**一、引用计数的概念二、抛出问题三、数据结构分析(* SideTables、RefcountMap、weak_...

2020-03-21 16:00:40 518

转载 通过Mach-O文件结构看iOS堆栈信息(函数地址与符号关联)

任务Mach-Task描述:一个机器无关的thread的执行环境抽象作用:task可以理解为一个进程,包含它的线程列表结构体:task_threadstask_threads将traget_task任务下的所有线程保存在act_list数组中,数组个数为act_listCntkern_return_t task_threads( task_t traget_task,...

2020-03-19 10:32:05 2214

转载 通过Mach-O文件结构看iOS堆栈信息

Mach-O文件Mach-O格式全称为Mach Object文件格式的缩写Mach-O文件类型分类:1.Executable:应用可执行的二进制文件,如.m/.h文件经过编译后会生成对应的Mach-O文件2.Dylib Library:动态链接库3.Static Library:静态链接库4.Bundle:不能被链接 Dylib,只能在运行使用dlopen()加载5.Reloc...

2020-03-19 10:28:59 786

原创 Runtime objc4-779.1 Runtime在实际开发中的应用之__attribute__

这是一个llvm的指令,很强大,官方文档中有很多说明,我们这里记录我们在开发中可能会遇到的场景和应用指令格式__attribute__(相关属性)常见场景1 availability 对版本、平台等情况做说明在某些时候我们需要对不同的版本和平台做特别处理,或者API支持,苹果也有很多这种场景,比如iOS10的系统通知API,UITableView中某些API的限定使用的API_DEPRE...

2020-03-12 11:48:38 292

原创 Runtime objc4-779.1 一图看懂iOS Runtime消息转发

消息发送流程图设定消息接受者为receiver图是用markdown画的,适配可能有点问题,浏览器页面放大看好一些Created with Raphaël 2.2.0开始objc_msgSend(receiver, SEL)通过receiver,获取isa指针,并获取其class在class的cache中查找SEL是否存在?匹配Method,执行IMP结束在class的method_list...

2020-03-11 16:21:36 458 3

原创 Runtime objc4-779.1 App启动过程中Runtime都干了什么?

知识准备首先我们要知道一个场景,我们点击屏幕上的应用,到我们看到应用完全展示,并可以操作,这个过程中,系统、runtime、我们自己的代码,都做了大量的工作,这个过程有很多优秀的博文已经详细的讲述过,例如深入理解iOS App的启动过程 —by 为自己丶拼个未来,这篇文章的内容其实绝大部分来自于苹果WWDC2016中的一个官方视频,如果对App启动过程不熟悉的同学可以这两个结合着看一下.Run...

2020-03-10 18:45:58 671

原创 Runtime objc4-779.1 为什么不能向一个已存在的类添加成员变量?有什么办法达到相同的效果(2)?

接上一篇博客继续第二种方法Func2 利用关联实现对已存在的类添加成员变量的效果涉及两个主要的API给某一个对象关联一个对象objc_setAssociatedObject(id _Nonnull object, const void * _Nonnull key, id _Nullable value, objc_AssociationPolicy policy)获取某一个对象的关联...

2020-03-06 17:45:19 302

原创 Runtime objc4-779.1 为什么不能向一个已存在的类添加成员变量?有什么办法达到相同的效果?

这个问题在面试中经常被问起,答案也很明显: 因为类的结构已经在编译期被固定,不能动态更改.一句话很简单,但是背后却有很多的问题,为什么方法可以?为什么不能允许实例变量和方法一样动态化?等等问题.我们先来看看怎么解决往类中添加实例变量的需求.Func 1 动态创建类既然原来的类已经在编译期被“固定”,那么我们动态创建的类总可以添加变量吧,让新创建的类继承原来的类不就可以了?操作一下!Fu...

2020-03-05 17:40:37 497

原创 Runtime objc4-779.1 OC中,为什么swizzleMethod时要先addMethod?

我们swizzleMethod的方法通常如下void swizzleMethod(Class class, SEL originalSelector, SEL swizzledSelector){ Method originalMethod = class_getInstanceMethod(class, originalSelector); Method swizzledMe...

2020-03-03 18:54:06 418

原创 如何下载全国的POI数据,如何获取全国的POI数据,poi数据搜索,高德poi获取,poi数据分析,poi免费数据,城市规划数据

最近朋友写论文,让我帮他弄poi数据,偶然间发现一个小程序,进而获取了全国的poi数据教程如下:Step1 打开微信,扫码使用小程序注意:1,它会要求填写手机号和邮箱 ps:这里最重要的是邮箱,会收到一封搜索poi数据结果的邮件, 尤为重要,不要填写错误.不然收不到了.2,它会限制搜索次数和返回结果条数(这不是重点,重点是邮件!!!)小程序码如下Step2 去邮箱查看邮件,如果收到...

2020-03-01 22:55:41 4039 3

原创 poi数据搜索,高德poi获取,poi数据分析,poi免费数据,城市规划数据(key已被封,服务停掉了)

最近做了个小程序,利用高德地图的开放api获取poi数据,感兴趣的用户可以体验一下,如果需要poi数据服务也可以直接留言给我,无论怎么样,体验一下,你会得到你想要的小程序码:...

2020-03-01 22:45:57 1731 2

XMPPFramework (旧一点版本)

老版本的XMPPFramework,没有 @import libxmlSimu; Module 'libxmlSimu' not found 的错误,在此分享给大家

2016-01-21

空空如也

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

TA关注的人

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