- 博客(27)
- 资源 (8)
- 收藏
- 关注
原创 「类与对象」说一说isa指针
概要在讲isa指针前,我们先来看一道经典的面试题:对象的isa指针指向哪里?看到这道题,心中可能朦朦胧胧有些答案,也可能不太确定,抑或说不明白。那咱就带着这个问题,揭开isa指针的神秘面纱。这篇文章主要就isa的作用、数据结构以及如何优化等方面进行讲解。isa的作用在文章NSObject对象的分类中,详细讲解了isa指针的指向、如何寻找实例方法和类方法以及如何通过isa指针找到类对象和元类对象的。基本总结一下,instance对象的isa指向instance对象所对应的Class对象,Cla
2021-03-01 11:53:28 331 1
原创 「类与对象」NSObject对象的分类
概要刚开始接触Objective-C语言的时候,看到说到的最多的概念就是「类和对象」。最初的认识停留在把类实例化就变成对象了,天真认为只存在类与对象两种。其实,存在三种类型(高富美)的对象,分别是实例对象、类对象、元类对象。经常挂在嘴边的「类与对象」在本质上只是指类对象与实例对象。说了这么多对象,可就没有一个属于单身狗的( ̄▽ ̄)*。实例对象(Instance)实例对象的产生实例对象是通过类alloc出来的对象,一个实例对象占用一块内存。在上篇文章中,讲解了一个NSObject对象的内存布局,得知
2021-02-28 10:55:57 350
原创 「类与对象」关于NSObject对象的内存布局
概述在上篇文章「类与对象」揭秘本质的第一步讲解Objective-C代码的转换过程,本文在此基础上继续探究一下NSObject对象的内存布局。如何获取NSObject对象的内存大小?获取NSObject对象的内存大小,需要用到以下几个函数:class_getInstanceSizemalloc_sizesizeOf其中,sizeof确切来说并不算做函数,它是一种操作符。要想回答这个问题,还先得认识几个常用的获取内存大小的工具:class_getInstanceSize、malloc_s.
2021-02-28 10:54:46 169
原创 「类与对象」揭秘本质的第一步
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 148
原创 重新回味·Block·
说起Block,我想大家再熟悉不过了。每天的开发过程中都在与他打着交道,简洁高效的使用给我们的工作带来了便利。正是因为Block对于我们而言不可或缺,我更觉得应该抽出时间好好认识一下Block,了解一些他的优缺点、过往经历,让我们对它的理解更深一层,进而开发出更加高效的程序。对Block的认识Block与C函数的区别和联系Block是C语言的扩充,常被称为带有局部变量的匿名函数;看一下正规的C语言函数定义:int test(int count);int result = test(10);.
2021-02-28 10:32:30 146
原创 Objective-C Runtime:深入理解成员变量与属性
概述在上篇文章Objective-C Runtime:深入理解类与对象中,讲解了类与对象的相关内容。在本文中,着重讲解一下类实现细节的先关内容,主要包括类中的成员变量、属性、方法以及协议与分类的实现。在讲解成员变量与属性之前,需要了解一下类型编码相关知识。类型编码在Runtime中,编译器将每个方法的返回值和参数类型编码为一个字符串,并将其与方法的selector关联在一起。由于该编码方案具有一定的通用性,系统提供了编译器指令@encode来获取特定编码后的字符串。当给定一个类型时,@enc.
2021-02-28 10:26:13 121
原创 Objective-C Runtime:深入理解类与对象
概述常说Objective-C是一门动态语言,那么问题来了,这个动态表现在那些方面呢?其实最主要的表现就是Objective-C将很多静态语言在编译和链接时做的事情放到了运行时去做,它在运行时实现了对类、方法、成员变量、属性等信息的管理机制。同时,运行时机制为我们开发过程提供很多便利之处,比如:在运行时创建或者修改一个类;在运行时修改成员变量、属性等;在运行时进行消息分发和分发绑定;…与之对应实现的就是Objective-C的Runtime机制。Objective-C的Runtime.
2021-02-28 10:22:51 265
原创 慎用公共变量
前言在开发过程中,避免不了会使用公共变量,记录共享对象状态、数据最简单的方式就是创建创建公共变量;当业务逻辑变多,还采用这种思想就会变得危险,代码逻辑变得不清晰,慢慢就有一种代码坏味道。具体总结如下:1、过多逻辑分支,不够清晰,公共变量不利于系统维护和项目拓展;2、安全性收到威胁,过多地方共享变量,变量的写入和读取在多线程下是危险的;3、业务逻辑交叉过多时,很难保证数据-逻辑的一致性;如何解决呢?出现问题,解决问题,Objective-C针对上述问题,提供了一个解决方案:即使用关联.
2021-02-28 10:15:02 244 1
原创 邮件开发的基础协议
前言邮箱对我们来说是再熟悉不过了,它与我们的生活、工作紧密联系在一起:登录、注册、往来沟通…无处不在;邮箱的使用很便捷,可是邮箱是如何传输、投递信息呢?电子邮件协议电子邮件协议主要包括IMAP、POP3、SMTP协议;这篇文章将给大家介绍一下邮件所用的协议、协议格式标准以及不同协议之间的区别与联系;SMTPSMTP的全称是Simple Mail Transfer Protocol即简单邮件传输协议,在1982年正式提出。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转.
2021-02-28 10:11:56 338
原创 iOS开发中权限再度梳理
前言开源库JLAuthorizationManager :Objective-C版本Swift版本上篇文章iOS开发中的这些权限,你搞懂了吗?介绍了一些常用权限的获取和请求方法,知道这些方法的使用基本上可以搞定大部分应用的权限访问的需求。但是,这些方法并不全面,不能涵盖住所有权限访问的方法。So,笔者在介绍一下剩下的几种权限的访问方法和一些使用上的注意事项,希望能给大家的开发过程带来一丝便利。最后,笔者将经常使用的权限请求方法封装开源库JLAuthorizationManager送.
2021-02-28 10:08:46 891
原创 iOS权限完整解决
前言iOS开发中,权限问题不可避免;写了文章iOS开发中的这些权限,你搞懂了吗?和[续]iOS开发中的这些权限,你搞懂了吗?,介绍了系统涵盖的16种权限访问的原理和方法;开源库JLAuthorizationManager,整理并提供常用权限访问的便捷方法;Objective-C版本Swift版本开源库基本使用针对相册、蜂窝网络、相机、麦克风、通讯录、日历、提醒事项、定位、媒体资料库、语音识别、Siri等,可统一使用一下的方法入口:/** 请求权限统一入口 @param aut.
2021-02-28 10:03:46 1298
原创 iOS中,系统相册的那些事
写在前面在手机APP日益增加的前提下,如何更好的提升用户的交互体验似乎成为衡量一个APP重要指标。上述的感悟源于实际工作的需求,就是在APP中添加一个更换用户头像的功能。也许别人会认为这样一个小功能不算什么,但从用户交互角度考虑,这样一个功能的设计有一定学问,待我慢慢道来。获取相册最直接的方式——UIImagePickerController功能介绍:可直接显示分组的相处的列表,用户选择不同相册的照片后,可在委托方法中获得该图片对象;API提供三种数据源:UIImagePick.
2021-02-27 23:37:39 426 2
原创 iOS开发中的这些权限,你搞懂了吗?
写在前面APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事;那如何提高APP获取iOS系统权限的通过率呢?有以下几种方式:1.在用户打开APP时就向用户请求权限;2.告知用户授权权限后能够获得好处之后,再向用户请求权限;3.在绝对必要的情况下才向用户请求权限,例如:用户访问照片库时请求访问系统相册权限;4.在展示系统权限的对话框前,先向用户显示自定义的对话框,若用户选择不允许,默认无操作,若.
2021-02-27 22:29:56 830 1
原创 翻译_iOS视图编程指南(View Programming Guide for iOS)之视图和窗口体系
官方最新:View Programming Guide for iOS前言前些日子,我发布一个苹果官方文档的翻译,之后就有不少同学朋友问我:翻译苹果官方文档能做什么,开发过程用到的时候很少,浪费时间,还又没什么用。今天,刚好有时间,就在此申明一下翻译苹果官方文档的实质作用:首先,翻译官方文档可以提高自身英语阅读能力和理解能力,增大自己的词汇量,良好的英语基础会让工作效率更上一层楼的;其次,对于iOS开发而言,官方文档可以让你更好地理解每一个技术点实现的基本原理,知其然更要知其所以然,这样对iOS
2021-02-27 22:06:37 187
原创 让Git不再难学
写在前面在团队做过软件开发的,版本控制必是不可或缺的一项。目前,版本控制主要分为集中式版本控制系统和分布式版本控制系统 ,即大家熟知的SVN和Git。Git是当下最流行的分布式版本控制系统,故,今天,我们就来研究一下Git的神奇之处。浅析SVN与Git的不同最基本:SVN是集中式,Git是分布式的。集中式,版本库集中存放在中央服务器,工作时,每个人需要先从中央服务器获取最新的版本,然后在属于自己的
2017-03-21 22:09:12 384
原创 学好Mac常用命令,助力iOS开发
序言在iOS开发的过程中,更多地注重iOS开发的效率,熟练使用Mac终端操作的常用命令,可以让你更好的游刃于iOS繁重的开发中。本文着重介绍常用的Mac终端基本指令和快捷键,更加适合一些IOS新手学习和了解。Mac OS X的文件系统Mac OS X本身是Unix内核的,采用Unix的多用户系统,采用Unix文件系统,所有文件都放在根目录/Users下面,不存在Windows下的盘符概念,用户登录
2017-03-21 21:42:10 411
原创 如何获取iOS应用网络权限?
问题描述在iOS 10下 ,首次进入应用时,会有询问是否允许网络连接权限的的弹窗,为更好进行用户交互,需要在打开应用时获取应用禁用网络权限状态(状态分为:未知、限制网络、未限制网络),客户端根据不同的权限状态定制相应的人机交互。问题调研针对请求应用网络权限可能存在的几种情形,操作与对应的状态都是笔者测试得到的,具体如下所示: 可能操作 关闭 无线局域网 无线局域网&蜂窝 不进
2017-03-21 21:38:21 14863
原创 iOS中,系统相册的那些事
写在前面在手机APP日益增加的前提下,如何更好的提升用户的交互体验似乎成为衡量一个APP重要指标。上述的感悟源于实际工作的需求,就是在APP中添加一个更换用户头像的功能。也许别人会认为这样一个小功能不算什么,但从用户交互角度考虑,这样一个功能的设计有一定学问,待我慢慢道来。获取相册最直接的方式——UIImagePickerController功能介绍:可直接显示分组的相处的列表,用户选择不同
2017-03-21 21:35:41 532
原创 iOS开发中的这些权限,你搞懂了吗?
写在前面APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事;那如何提高APP获取iOS系统权限的通过率呢? 1.在用户打开APP时就向用户请求权限; 2.告知用户授权权限后能够获得好处之后,再向用户请求权限;3.在绝对必要的情况下才向用户请求权限,例如:用户访问照片库时请求访问系统相册权限;4.在展示系统权限的对话框前,先向用
2017-03-21 21:24:10 1026
原创 为Next主题添加多说评论系统
前言几个月前,在好奇心的鼓动下,利用Github Pages和Hexo以及Next主题搭建一个属于自己的个人主站,由于时间伧俗,搭建成功后就没有好好完善一下,可以参照文章徒手教你建自己的博客,文章里有搭建免费博客的详细步骤。这周末没有加班,静下心写了篇文章,发布成功后,却又遇到Github Pages更新的原因导致博客的页面出现空白,又顺手写了一篇解决页面空白问题的博客,文章为关于hexo主题nex
2017-03-21 21:10:29 530
原创 你该有一个属于自己的个人博客了
前言周末用了不到一天时间搭建了属于自己的博客,欣喜之余,就想着提笔将个人博客搭建的详细过程记录下来,以便分享给众读者使用;搭建之前,笔者看过其他博客的搭建教程,上面都提到可以在短短几分钟搭建好自己的博客。从搭建到博客访问确实只需要几分钟的时间,但几分钟的工作并未达到我们的预期,需要优化的时间可不止几分钟。遗憾的是,那些教程并没有将博客优化过程可能遇到的坑提及出来。因此,本文有必要补充一下。个
2017-03-21 20:37:56 4696 1
原创 简谈常用算法
写在前面算法,对于iOS开发者来说,既熟悉又陌生。首先,在iOS开发过程中,对算法要求不高,用到算法时候也是少之甚少,除非是一些接近底层开发需要用到一些算法。但是,算法作为基础,又是开发者的必备技能,尤其是求职面试中一项重要考察指标。遂,笔者在此整理一下常用的算法,以供后用。算法中的概念排序算法稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保
2017-03-21 20:19:15 323
原创 [译]iOS视图编程指南(View-Programming-Guide-for-iOS)之介绍
官方最新:View Programming Guide for iOS介绍关于窗口和视图在iOS中,你可以使用窗口和视图将你应用的内容呈现在屏幕上。窗口本身是不具备呈现可视化内容的功能的,但它可以用作装有应用视图的容器。视图可以规定在窗口的某一部分显示特定的内容。例如,你可能需要显示图片、文本、图形或者一些组合的视图。同时,你也可以使用视图去组织和管理其他的视图。概览每一个应用都至少有一个窗口和视图
2017-03-21 20:16:25 324
原创 iOS,面试必看,最全梳理
序言目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了。今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,加之,培训机构一火车地向用人单位输送iOS开发人员,打破了生态圈的动态平衡。矫情一下,言归正传,我奉献一下,为iOS应聘者梳理一下面试题,希望能助一臂之力!OC的理解与特性OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装、继承、多态。它既具有静态语言的特性(如
2016-03-21 15:12:02 1156
原创 翻译_iOS视图编程指南(View Programming Guide for iOS)之介绍
官方最新:View Programming Guide for iOS介绍关于窗口和视图在iOS中,你可以使用窗口和视图将你应用的内容呈现在屏幕上。窗口本身是不具备呈现可视化内容的功能的,但它可以用作装有应用视图的容器。视图可以规定在窗口的某一部分显示特定的内容。例如,你可能需要显示图片、文本、图形或者一些组合的视图。同时,你也可以使用视图去组织和管理其他的视图。概览每一个应用都至少有一个窗口和视图
2016-03-21 14:38:11 812
原创 重识iOS
我和iOS相识在2013年,那一年我在上大二。一次信息基础课上,授课老师向我们展示了他在研究生期间所做的iOS项目,那华丽丽的界面让人瞬间怦然心动,也是在那一刻,我与iOS结下了缘。 我是自学的iOS,那时候感觉特别难,找不到学习的突破口,自然学习的效率很低,再加上iOS在那几年也是刚刚兴起,有关iOS开发资源也是相对匮乏的,入门前的那段日子身心煎熬,多少次想放弃,就是不服输。2013年暑假
2016-03-21 14:30:53 382
原创 iOS和我,开启编程人生
其实,我本可以更早一些来记录学习iOS的这些事儿,以前都是被各种学校项目缠身,没有时间更没有太多精力来梳理自己的学习经历。现在这一段时间算是悠闲一点,上午可以多睡一会儿,下午溜达溜达,剩下的时间就可以认真地写一写我和iOS的事。首先声明一下,我不是一个技术大咖,我学iOS也不是很好,我写这些文章单纯是为了记录我学习iOS的方法和心得体会。现在是移动互联网的天下,更是分享的时代,我愿意把我所知道所理
2016-03-21 14:14:53 476
Easy APNs Provider -iOS:Mac 推送测试工具.zip
2020-05-08
SWIFTER-100个Swift必备Tips(第四版)(epub+pdf+playground)
2018-12-03
sourceTree_license免注册
2017-10-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人