![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
个人总结
文章平均质量分 91
JackLinBoy
微信公众号:猿视角(iOSDevSkills)
觉得为时已晚的时候恰恰是最早的时候!
欢迎加入iOS经验交流群,QQ群:709148214
展开
-
「类与对象」说一说isa指针
概要在讲isa指针前,我们先来看一道经典的面试题:对象的isa指针指向哪里?看到这道题,心中可能朦朦胧胧有些答案,也可能不太确定,抑或说不明白。那咱就带着这个问题,揭开isa指针的神秘面纱。这篇文章主要就isa的作用、数据结构以及如何优化等方面进行讲解。isa的作用在文章NSObject对象的分类中,详细讲解了isa指针的指向、如何寻找实例方法和类方法以及如何通过isa指针找到类对象和元类对象的。基本总结一下,instance对象的isa指向instance对象所对应的Class对象,Cla原创 2021-03-01 11:53:28 · 309 阅读 · 1 评论 -
「类与对象」NSObject对象的分类
概要刚开始接触Objective-C语言的时候,看到说到的最多的概念就是「类和对象」。最初的认识停留在把类实例化就变成对象了,天真认为只存在类与对象两种。其实,存在三种类型(高富美)的对象,分别是实例对象、类对象、元类对象。经常挂在嘴边的「类与对象」在本质上只是指类对象与实例对象。说了这么多对象,可就没有一个属于单身狗的( ̄▽ ̄)*。实例对象(Instance)实例对象的产生实例对象是通过类alloc出来的对象,一个实例对象占用一块内存。在上篇文章中,讲解了一个NSObject对象的内存布局,得知原创 2021-02-28 10:55:57 · 336 阅读 · 0 评论 -
「类与对象」关于NSObject对象的内存布局
概述在上篇文章「类与对象」揭秘本质的第一步讲解Objective-C代码的转换过程,本文在此基础上继续探究一下NSObject对象的内存布局。如何获取NSObject对象的内存大小?获取NSObject对象的内存大小,需要用到以下几个函数:class_getInstanceSizemalloc_sizesizeOf其中,sizeof确切来说并不算做函数,它是一种操作符。要想回答这个问题,还先得认识几个常用的获取内存大小的工具:class_getInstanceSize、malloc_s.原创 2021-02-28 10:54:46 · 167 阅读 · 0 评论 -
「类与对象」揭秘本质的第一步
Objective-C本身是一种高级语言,底层都是由C/C++实现。若想了解Objective-C一些API具体实现以及一些对象真实的数据结构等,就需要将Objective-C语言转化成C/C++语言。OC语言转化成C/C++的相关命令需要使用的命令:xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o main.cpp使用Xcode自带的命令:xcrun选择指定编译平台(SDK):iphoneos,查看所有.原创 2021-02-28 10:51:31 · 131 阅读 · 0 评论 -
重新回味·Block·
说起Block,我想大家再熟悉不过了。每天的开发过程中都在与他打着交道,简洁高效的使用给我们的工作带来了便利。正是因为Block对于我们而言不可或缺,我更觉得应该抽出时间好好认识一下Block,了解一些他的优缺点、过往经历,让我们对它的理解更深一层,进而开发出更加高效的程序。对Block的认识Block与C函数的区别和联系Block是C语言的扩充,常被称为带有局部变量的匿名函数;看一下正规的C语言函数定义:int test(int count);int result = test(10);.原创 2021-02-28 10:32:30 · 143 阅读 · 0 评论 -
Objective-C Runtime:深入理解成员变量与属性
概述在上篇文章Objective-C Runtime:深入理解类与对象中,讲解了类与对象的相关内容。在本文中,着重讲解一下类实现细节的先关内容,主要包括类中的成员变量、属性、方法以及协议与分类的实现。在讲解成员变量与属性之前,需要了解一下类型编码相关知识。类型编码在Runtime中,编译器将每个方法的返回值和参数类型编码为一个字符串,并将其与方法的selector关联在一起。由于该编码方案具有一定的通用性,系统提供了编译器指令@encode来获取特定编码后的字符串。当给定一个类型时,@enc.原创 2021-02-28 10:26:13 · 115 阅读 · 0 评论 -
Objective-C Runtime:深入理解类与对象
概述常说Objective-C是一门动态语言,那么问题来了,这个动态表现在那些方面呢?其实最主要的表现就是Objective-C将很多静态语言在编译和链接时做的事情放到了运行时去做,它在运行时实现了对类、方法、成员变量、属性等信息的管理机制。同时,运行时机制为我们开发过程提供很多便利之处,比如:在运行时创建或者修改一个类;在运行时修改成员变量、属性等;在运行时进行消息分发和分发绑定;…与之对应实现的就是Objective-C的Runtime机制。Objective-C的Runtime.原创 2021-02-28 10:22:51 · 262 阅读 · 0 评论 -
慎用公共变量
前言在开发过程中,避免不了会使用公共变量,记录共享对象状态、数据最简单的方式就是创建创建公共变量;当业务逻辑变多,还采用这种思想就会变得危险,代码逻辑变得不清晰,慢慢就有一种代码坏味道。具体总结如下:1、过多逻辑分支,不够清晰,公共变量不利于系统维护和项目拓展;2、安全性收到威胁,过多地方共享变量,变量的写入和读取在多线程下是危险的;3、业务逻辑交叉过多时,很难保证数据-逻辑的一致性;如何解决呢?出现问题,解决问题,Objective-C针对上述问题,提供了一个解决方案:即使用关联.原创 2021-02-28 10:15:02 · 239 阅读 · 1 评论 -
iOS开发中权限再度梳理
前言开源库JLAuthorizationManager :Objective-C版本Swift版本上篇文章iOS开发中的这些权限,你搞懂了吗?介绍了一些常用权限的获取和请求方法,知道这些方法的使用基本上可以搞定大部分应用的权限访问的需求。但是,这些方法并不全面,不能涵盖住所有权限访问的方法。So,笔者在介绍一下剩下的几种权限的访问方法和一些使用上的注意事项,希望能给大家的开发过程带来一丝便利。最后,笔者将经常使用的权限请求方法封装开源库JLAuthorizationManager送.原创 2021-02-28 10:08:46 · 874 阅读 · 0 评论 -
iOS权限完整解决
前言iOS开发中,权限问题不可避免;写了文章iOS开发中的这些权限,你搞懂了吗?和[续]iOS开发中的这些权限,你搞懂了吗?,介绍了系统涵盖的16种权限访问的原理和方法;开源库JLAuthorizationManager,整理并提供常用权限访问的便捷方法;Objective-C版本Swift版本开源库基本使用针对相册、蜂窝网络、相机、麦克风、通讯录、日历、提醒事项、定位、媒体资料库、语音识别、Siri等,可统一使用一下的方法入口:/** 请求权限统一入口 @param aut.原创 2021-02-28 10:03:46 · 1284 阅读 · 0 评论 -
为Next主题添加多说评论系统
前言几个月前,在好奇心的鼓动下,利用Github Pages和Hexo以及Next主题搭建一个属于自己的个人主站,由于时间伧俗,搭建成功后就没有好好完善一下,可以参照文章徒手教你建自己的博客,文章里有搭建免费博客的详细步骤。这周末没有加班,静下心写了篇文章,发布成功后,却又遇到Github Pages更新的原因导致博客的页面出现空白,又顺手写了一篇解决页面空白问题的博客,文章为关于hexo主题nex原创 2017-03-21 21:10:29 · 526 阅读 · 0 评论 -
你该有一个属于自己的个人博客了
前言周末用了不到一天时间搭建了属于自己的博客,欣喜之余,就想着提笔将个人博客搭建的详细过程记录下来,以便分享给众读者使用;搭建之前,笔者看过其他博客的搭建教程,上面都提到可以在短短几分钟搭建好自己的博客。从搭建到博客访问确实只需要几分钟的时间,但几分钟的工作并未达到我们的预期,需要优化的时间可不止几分钟。遗憾的是,那些教程并没有将博客优化过程可能遇到的坑提及出来。因此,本文有必要补充一下。个原创 2017-03-21 20:37:56 · 4690 阅读 · 1 评论