![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS开发历程
文章平均质量分 88
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 评论 -
邮件开发的基础协议
前言邮箱对我们来说是再熟悉不过了,它与我们的生活、工作紧密联系在一起:登录、注册、往来沟通…无处不在;邮箱的使用很便捷,可是邮箱是如何传输、投递信息呢?电子邮件协议电子邮件协议主要包括IMAP、POP3、SMTP协议;这篇文章将给大家介绍一下邮件所用的协议、协议格式标准以及不同协议之间的区别与联系;SMTPSMTP的全称是Simple Mail Transfer Protocol即简单邮件传输协议,在1982年正式提出。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转.原创 2021-02-28 10:11:56 · 326 阅读 · 0 评论 -
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 评论 -
iOS中,系统相册的那些事
写在前面在手机APP日益增加的前提下,如何更好的提升用户的交互体验似乎成为衡量一个APP重要指标。上述的感悟源于实际工作的需求,就是在APP中添加一个更换用户头像的功能。也许别人会认为这样一个小功能不算什么,但从用户交互角度考虑,这样一个功能的设计有一定学问,待我慢慢道来。获取相册最直接的方式——UIImagePickerController功能介绍:可直接显示分组的相处的列表,用户选择不同相册的照片后,可在委托方法中获得该图片对象;API提供三种数据源:UIImagePick.原创 2021-02-27 23:37:39 · 395 阅读 · 2 评论 -
iOS开发中的这些权限,你搞懂了吗?
写在前面APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事;那如何提高APP获取iOS系统权限的通过率呢?有以下几种方式:1.在用户打开APP时就向用户请求权限;2.告知用户授权权限后能够获得好处之后,再向用户请求权限;3.在绝对必要的情况下才向用户请求权限,例如:用户访问照片库时请求访问系统相册权限;4.在展示系统权限的对话框前,先向用户显示自定义的对话框,若用户选择不允许,默认无操作,若.原创 2021-02-27 22:29:56 · 806 阅读 · 1 评论 -
学好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 · 407 阅读 · 0 评论 -
如何获取iOS应用网络权限?
问题描述在iOS 10下 ,首次进入应用时,会有询问是否允许网络连接权限的的弹窗,为更好进行用户交互,需要在打开应用时获取应用禁用网络权限状态(状态分为:未知、限制网络、未限制网络),客户端根据不同的权限状态定制相应的人机交互。问题调研针对请求应用网络权限可能存在的几种情形,操作与对应的状态都是笔者测试得到的,具体如下所示: 可能操作 关闭 无线局域网 无线局域网&蜂窝 不进原创 2017-03-21 21:38:21 · 14823 阅读 · 0 评论 -
iOS中,系统相册的那些事
写在前面在手机APP日益增加的前提下,如何更好的提升用户的交互体验似乎成为衡量一个APP重要指标。上述的感悟源于实际工作的需求,就是在APP中添加一个更换用户头像的功能。也许别人会认为这样一个小功能不算什么,但从用户交互角度考虑,这样一个功能的设计有一定学问,待我慢慢道来。获取相册最直接的方式——UIImagePickerController功能介绍:可直接显示分组的相处的列表,用户选择不同原创 2017-03-21 21:35:41 · 519 阅读 · 0 评论 -
iOS开发中的这些权限,你搞懂了吗?
写在前面APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事;那如何提高APP获取iOS系统权限的通过率呢? 1.在用户打开APP时就向用户请求权限; 2.告知用户授权权限后能够获得好处之后,再向用户请求权限;3.在绝对必要的情况下才向用户请求权限,例如:用户访问照片库时请求访问系统相册权限;4.在展示系统权限的对话框前,先向用原创 2017-03-21 21:24:10 · 1016 阅读 · 0 评论 -
重识iOS
我和iOS相识在2013年,那一年我在上大二。一次信息基础课上,授课老师向我们展示了他在研究生期间所做的iOS项目,那华丽丽的界面让人瞬间怦然心动,也是在那一刻,我与iOS结下了缘。 我是自学的iOS,那时候感觉特别难,找不到学习的突破口,自然学习的效率很低,再加上iOS在那几年也是刚刚兴起,有关iOS开发资源也是相对匮乏的,入门前的那段日子身心煎熬,多少次想放弃,就是不服输。2013年暑假原创 2016-03-21 14:30:53 · 369 阅读 · 0 评论 -
iOS和我,开启编程人生
其实,我本可以更早一些来记录学习iOS的这些事儿,以前都是被各种学校项目缠身,没有时间更没有太多精力来梳理自己的学习经历。现在这一段时间算是悠闲一点,上午可以多睡一会儿,下午溜达溜达,剩下的时间就可以认真地写一写我和iOS的事。首先声明一下,我不是一个技术大咖,我学iOS也不是很好,我写这些文章单纯是为了记录我学习iOS的方法和心得体会。现在是移动互联网的天下,更是分享的时代,我愿意把我所知道所理原创 2016-03-21 14:14:53 · 469 阅读 · 0 评论