![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
iOS面试
文章平均质量分 91
iOS大鑫
这个作者很懒,什么都没留下…
展开
-
一篇走心的iOS代码规范!
前言关于代码规范的重要性这里不做过多解释,能看到这篇文章说明你已经开始重视代码规范了(代码规范看起来是在限制你的自由和发挥,其实它是在间接的帮助你变得更优秀。)。适当的代码规范和标准绝不是消灭代码内容的创造性、优雅性,而是限制过度个性化,以一种普遍认可的统一方式一起做事,进而提高工作效率,降低沟通成本。代码的字里行间流淌着的是软件和程序员的血液,质量的提升是尽可能少踩坑、杜绝踩重复的坑,切实提升系统稳定性,码出质量根据约束力度,暂时把规范约定为2个等级,分别是 必须 和 建议。(一)命名规范1.原创 2021-08-13 15:52:50 · 467 阅读 · 0 评论 -
由美团文章“一款可以让大型iOS工程编译速度提升50%的工具”引出的.hmap文件(下)hmap落地
前言上篇文章由美团文章“一款可以让大型iOS工程编译速度提升50%的工具”引出的.hmap文件探索介绍了什么是hmap,有什么用!文章结尾我说会进行落地,然后就比较坑了,感觉不落地,这以后都没法交代,没法继续写文章了!后面不再写这样的话了,坑!结果展示1.创建个项目工程,如下图所示,红框为自己写的组件2.Pod目录3.使用写的插件,生成我们需要的hmap4.文件变化发现pod的xcconfig的HEADER_SEARCH_PATHS添加了hmap路径此时我们.原创 2021-08-11 14:19:31 · 688 阅读 · 0 评论 -
由美团文章“一款可以让大型iOS工程编译速度提升50%的工具”引出的.hmap文件探索(上)
前言前段时间,本鑫看了一篇美团的文章:《一款可以让大型iOS工程编译速度提升50%的工具》,一看标题就觉得惊讶,为什么呢?因为它能让编译速度提示50%且不是通过组件二进制化实现,我们日常的提升编译速度就是将组件编译成二进制文件导入项目。本着不清楚的就去了解的原则,就来看看怎么实现的。探索编译耗时原因在项目中我们会引入头文件,例如下图:我们在ViewController中引入了Person的头文件在我们引入头文件的时候,引入的是头文件的名称Person,那么Xcode是怎么找到这个Person文.原创 2021-08-07 18:40:53 · 857 阅读 · 1 评论 -
Swift声明参考!
一条声明可以在你的程序里引入新的名字和构造。举例来说,你可以使用声明来引入函数和方法,变量和常量,或者来定义 新的命名好的枚举,结构,类和协议类型。你也可以使用一条声明来延长一个已经存在的命名好的类型的行为。或者在你的 程序里引入在其他地方声明的符号。在swift中,大多数声明在某种意义上讲也是执行或同事声明它们的初始化定义。这意味着,因为协议和他们的成员不匹配, 大多数协议成员需要单独的声明。为了方便起见,也因为这些区别在swift里不是很重要,声明语句同时包含了声明和定义。GRAMMAR OF原创 2021-07-14 15:47:44 · 283 阅读 · 0 评论 -
Swift语句参考!
在 Swift 中,有两种类型的语句:简单语句和控制流语句。简单语句是最常见的,用于构造表达式和声明。控制流语句则用于控制程序执行的流程,Swift 中有三种类型的控制流语句:循环语句、分支语句和控制传递语句。循环语句用于重复执行代码块;分支语句用于执行满足特定条件的代码块;控制传递语句则用于修改代码的执行顺序。在稍后的叙述中,将会详细地介绍每一种类型的控制流语句。是否将分号(;)添加到语句的结尾处是可选的。但若要在同一行内写多条独立语句,请务必使用分号。GRAMMAR OF A STATEMEN原创 2021-07-09 14:56:38 · 217 阅读 · 0 评论 -
Swift词法结构参考!
Swift 的“词法结构(lexical structure)”描述了如何在该语言中用字符序列构建合法标记,组成该语言中最底层的代码块,并在之后的章节中用于描述语言的其他部分。通常,标记在随后介绍的语法约束下,由 Swift 源文件的输入文本中提取可能的最长子串生成。这种方法称为“最长匹配项(longest match)”,或者“最大适合”(maximal munch)。空白与注释空白(whitespace)有两个用途:分隔源文件中的标记和区分运算符属于前缀还是后缀,(参见 运算符)在其他原创 2021-07-06 13:51:13 · 182 阅读 · 0 评论 -
iOS开发-Swift进阶之闭包,逃逸闭包 & 非逃逸闭包!
swift进阶总汇本文主要分析逃逸闭包 、非逃逸闭包、自动闭包逃逸闭包 & 非逃逸闭包逃逸闭包定义当闭包作为一个实际参数传递给一个函数时,并且是在函数返回之后调用,我们就说这个闭包逃逸了。当声明一个接受闭包作为形式参数的函数时,可以在形式参数前写@escaping来明确闭包是允许逃逸的如果用@escaping修饰闭包后,我们必须显示的在闭包中使用selfswift3.0之后,系统默认闭包参数就是被@nonescaping,可以通过SIL来验证1、执行时机:在函数体内.原创 2021-06-04 16:39:43 · 399 阅读 · 0 评论 -
iOS开发-Swift进阶之闭包,使用&捕获原理!
swift进阶总汇本文主要分析闭包以及闭包捕获变量的原理闭包闭包是一个捕获了全局上下文的常量或者变量的函数,通俗来讲,闭包可以是常量也可以是函数【全局函数是一种特殊的闭包】:定义一个全局函数,只是当前的全局函数并不捕获值func test(){ print("test")}【函数闭包】:下面的函数是一个闭包,函数中的incrementer是一个内嵌函数,可以从makeIncrementer中捕获变量runningTotalfunc makeIncrementer().原创 2021-06-03 16:42:49 · 549 阅读 · 1 评论 -
iOS开发-Swift进阶之枚举enum!
swift进阶总汇本文主要介绍enum的常见使用形式,以及枚举大小是如何计算的补充:添加脚本自动生成SIL通过target -> +,选择 other -> Aggregate,然后命名为CJLScript选中CJLScript,选择Build Phases -> New Run Script Phase在Run Script中输入以下命令swiftc -emit-sil ${SRCROOT}/06、EnumTest/main.swift | xcr.原创 2021-06-02 15:37:20 · 810 阅读 · 1 评论 -
iOS开发-Swift进阶之Mirror源码解析!
swift进阶总汇本文主要是分析Mirror的底层实现,以及根据Mirror底层原理仿写其结构的实现在上篇“反射Mirror & 错误处理”文章中,我们介绍了Mirror的使用,即JSON解析,对此我们有如下一些疑问:1、系统是如何通过Mirror获取对应的属性以及值的?2、Swift众所周知是一门静态语言,系统在底层到底做了什么,使swift具有了反射的特性呢?下面我们来对Mirror的底层实现进行探索Mirror底层源码分析反射的API主要是由两部分实现的一.原创 2021-06-01 16:04:54 · 655 阅读 · 0 评论 -
iOS开发-Swift进阶之反射Mirror & 错误处理!
swift进阶总汇本文主要介绍Mirror的使用以及使用Mirror进行JSON解析的错误处理反射Mirror反射:是指可以动态获取类型、成员信息,在运行时可以调用方法、属性等行为的特性,在上面的分析中,我们已经知道,对于一个纯swift类来说,并不支持直接像OC runtime那样的操作但是swift标准库依旧提供了反射机制,用来访问成员信息,即Mirror一般使用class CJLTeacher: NSObject { var age: Int = 18}le.原创 2021-05-31 15:21:33 · 438 阅读 · 0 评论 -
iOS开发-Swift进阶之内存管理 & Runtime!
本文主要介绍swift中的内存管理,涉及引用计数、弱引用、强引用、循环引用、Runtime等内存管理 - 强引用在swift中也是使用ARC来追踪和管理内存的,下面我们通过一个案例来进行分析class CJLTeacher { var age: Int = 18 var name: String = "CJL"}var t = CJLTeacher()var t1 = tvar t2 = t查看t的内存情况,为什么其中的refCounts是0x000000060000原创 2021-05-29 16:32:59 · 453 阅读 · 0 评论 -
iOS开发-Swift进阶之指针!
本文主要介绍swift中的指针swift中的指针分为两类typed pointer 指定数据类型指针,即 UnsafePointer<T>,其中T表示泛型raw pointer 未指定数据类型的指针(原生指针) ,即UnsafeRawPointerswift与OC指针对比如下:SwiftOC说明unsafePointerconst T *指针及所指向的内容都不可变unsafeMutablePointerT *指针及其所指向的内存内容均可原创 2021-05-28 14:48:04 · 431 阅读 · 0 评论 -
移动开发逆向之应用重签名(上)
本文主要介绍重签名的几种方式,以及如何对应用进行重签名,应用重签名从之前《iOS逆向应用签名》中可知,签名是指原始数据的Hash值解密。那么重签名,顾名思义,就是指将原始数据的Hash值重新加密。作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS开发交流群:130 595 548,不管你是小白还是大牛都欢迎入驻 ,让我们一起进步,共同发展!(群内会免费提供一些群主收藏的免费学习书籍资料以及整理好的几百道面试题和答案文档!)本次介绍的应用重签名方式主要有以下几种:C原创 2021-05-18 14:45:14 · 338 阅读 · 2 评论 -
iOS开发逆向之应用签名!
本文主要讲解什么是代码签名,以及iOS中的应用签名代码签名代码签名是对可执行文件或脚本进行数字签名.用来确认软件在签名后未被修改或损坏的措施。和数字签名原理一样,只不过签名的数据是代码而已.目的:防止可执行文件或脚本被篡改简单的代码签名在iOS出来之前,以前的主流操作系统(Mac/Windows)软件随便从哪里下载都能运行,系统安全存在隐患,盗版软件,病毒入侵,静默安装等等.那么苹果希望解决这样的问题,要保证每一个安装到 iOS 上的 APP 都是经过苹果官方允许的,怎样保证呢?就是通过代码原创 2021-05-17 14:42:03 · 241 阅读 · 0 评论 -
iOS逆向之对称算法(上)
本文主要介绍对称算法的基本概念对称加密对称加密加密、解密使用的是同一个key,即使用同一个密钥加密的方式对称加密过程明文通过密钥加密得到密文密文通过密钥解密得到明文对称加密优点加密计算量小速度快适合对大数据进行加密的场景对称加密的缺点密钥传输问题:因为加解密使用的是同一个密钥,所以如何安全的把密钥传输到解密者手里是一个关键。在实际应用中,一般是客户端想服务器请求对称加密的密钥,而且密钥还需要使用非对称加密后再传输密钥管理问题:因为每个用户都原创 2021-05-14 22:24:13 · 175 阅读 · 0 评论 -
iOS逆向之Hash算法!
本文主要介绍Hash算法Hash介绍Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。简单来说,hash算法(即散列函数),是一种单向密码体制,即它是一个从明文到密文的不可逆的映射,只有加密过程,没有解密过程。同时,哈希原创 2021-05-13 19:43:01 · 576 阅读 · 0 评论 -
iOS逆向之RSA加密(下)
本文主要介绍RSA的代码演示过程RSA代码演示前提:准备好公钥、私钥,需要在终端生成(属于自己签名)另外作为开发者我总结了很多iOS进阶学习用到的文件视频等等资源,可以:点击领取证书申请步骤1、申请CSR文件:keychain -> 证书助理 -> 从证书颁发机构请求证书2、生成CSR请求文件(证书颁发机构信息 + 公钥)命令:openssl req -new -key private.pem -out rsacert.csr3、生成CRT证书(自己签原创 2021-05-12 16:48:44 · 342 阅读 · 1 评论 -
iOS逆向:循环选择指针(下)
本文主要讲解Switch的汇编代码Switch1、假设switch语句的分支比较少时(例如3,少于4的时候没有意义),没有必要使用次结构,相当于if-else2、各个分支常量的差值较大时,编译器会在效率还是内存进行取舍,这时编译器还是会编译成类似于if-else的结构3、在分支比较多的时候,在编译的时候会生成一个表,不同的case通过跳转表的不同地址,每个地址占四个字节。案例分析首先作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS开发交流群:1305原创 2021-05-07 15:38:26 · 157 阅读 · 0 评论 -
iOS开发逆向之循环选择指针(上)
本文的主要目的是理解汇编中全局变量、常量的存储,以及如何将if、while等汇编代码还原成高级代码全局变量在这之前首先需要了解内存的分区,对这块不是特别清晰的,建议看看iOS-底层原理:内存五大区,下面进行一个简单的汇总说明代码区:存放代码,可读、可执行栈区:存放参数、局部变量、临时数据,可读写堆区:开发人员动态申请,大小可变,可读写全局变量:可读可写常量:只读案例分析首先作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS开发交流群:13原创 2021-05-06 14:51:44 · 186 阅读 · 0 评论 -
iOS逆向:函数本质02(下)
本文主要是讲解函数的参数、返回值、局部变量在汇编中是如何存储,以及CPSR标志寄存器函数的参数和返回值arm64下,函数的参数是存放在x0-x7(w0-w7)这8个寄存器里面的,如果超过8个参数,就会入栈如果自定义函数时,参数最好不要超过6个(因为有两个隐藏参数 self,_cmd)如果函数需要多个参数,可以传入数组、结构体、指针等类型函数的返回值放在x0寄存器中如果返回值大于8个字节,就会利用内存传递作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个原创 2021-05-05 14:32:59 · 175 阅读 · 8 评论 -
iOS逆向:函数本质(上)
本文的主要目的是理解函数栈以及涉及的相关指令在讲函数的本质之前,首先需要讲下以下几个概念栈、SP、FP常识栈栈:是一种具有特殊的访问方式的存储空间(即先进后出 Last In Out First, LIFO)高地址往低地址存数据(存:高-->低)- 栈空间开辟:往低地址开辟(`开辟:高-->低`)复制代码SP和FP寄存器SP寄存器:在任意时刻会保存栈顶的地址FP寄存器(也称为x29寄存器):属于通用寄存器,但是在某些时刻(例如函数嵌套调用时)可以利用它保.原创 2021-05-04 15:37:51 · 279 阅读 · 0 评论 -
iOS逆向 :初识汇编
在逆向开发中,非常重要的一个环节就是静态分析,众所周知,手机上安装App其本质是一个二进制文件,而静态分析是建立在分析二进制上面的。所以在学习逆向之前,需要提前了解相关的汇编知识汇编语言的发展机器语言是由0和1组成的机器指令,表示特定的功能,如下所示加:0100 0000减:0100 1000乘:1111 0111 1110 0000除:1111 0111 1111 0000汇编语言(assembly language)由于使用机器语言表示时不方便记忆,于是开始使用助记符来代替机器语言,,例原创 2021-04-30 14:40:07 · 304 阅读 · 0 评论 -
iOS高级进阶系列之-库(上)静态库探索
补充我们对符号应该有一定的认识,这里再补充点关于符号的内容。我们有时候需要知道符号的种类,我们通过命令nm -pa 文件名 来查看符号我们看到地址后面有t、d、T等关键字,这些关键字就是符号种类,下面整理了一下符号种类划分命令查找上面用到命令-pa,这里我们来说下-pa的含义,-pa其实包含两部分,-p、-a,我们可以通过查看命令符号查看1.在终端输入man nm,来到name list2.向下滚动,查找-p,-a我们可以知道-a:显示所有符号表项,包括插入的使用调试器。-原创 2021-04-29 15:10:52 · 256 阅读 · 0 评论 -
OC底层面试知识点之 —— Block底层原理
本文将介绍block的类型,循环引用的解决方法以及block底层分析Block简介Block定义:带有自动变量的匿名函数,它是C语言的拓展功能,之所以是扩展,是因为C语言不允许存在这样的匿名函数匿名函数匿名函数式指不带函数名称的函数带有自定变量Block拥有捕获外部变量的功能,在Block中访问一个外部的局部变量,Block会持有它的临时状态,自动捕获变量值,外部局部变量的变化不会影响它的状态(这个下面会讲到)。Block类型作为一个开发者,有一个学习的氛围跟一个交流圈子原创 2021-04-24 14:02:37 · 602 阅读 · 0 评论 -
OC基础知识点之-KVC(键值编码)!
KVC定义KVC的全称是Key-Value Coding,中文就是我们所熟知的键值编码,键值编码是NSKeyValueCoding非正式协议启用的一种机制。对象采用该协议来间接访问该对象属性(既:可以通过一个key值来访问)。这种间接访问机制补充了实例变量及其相关的访问器方法所提供的直接访问.KVC常用API常用方法1.通过key设值/取值2.通过keyPath来设置/取值其它相关方法KVC设值及底层原理在日常开中,我们经常用的赋值就是setter方法或者用KVC进行赋值,如原创 2021-04-23 14:48:32 · 654 阅读 · 0 评论 -
OC底层面试题-组件化通信(下)
上篇我们知道了如何创建组件化项目,这篇我们来聊聊组件化的重点:组件化通信组件化通信方法目前所了解的主流方式有一下三种:1.URL路由2.target-action3.protocol匹配协议试编程在编译层面使用协议定义规范,实现在不同地方,从而达到分布管理和维护组件的目的。这种方式也遵循了依赖反转原则,是一种很好的面向对象编程的实践。但是方案也很明显:由于协议式编程缺少统一调度层,导致难于集中管理,特别是项目规模变大、团队变多的情况下,架构管控就会显得越来越重要。协议式编程接口定原创 2021-04-22 13:57:46 · 322 阅读 · 1 评论 -
OC底层面试题-组件化的创建(上)
前言本来想着写界面优化的,但是因为前段时间项目比较忙,就一直没弄!加上最近项目里也在整理组件化的东西,所以也就决定写篇关于组件化的文章。组件化谈到组件化,首先想到的是解耦,模块化。其实组件化就是将模块化抽离,分层,并制定模块间的通讯方式,从而实现解耦的一种方式,主要运用在团队开发组件化的有点组件化主要有一下有点1.模块间解耦2.模块重用3.提高团队协作开发效率4.方便进行单元测试当项目因为各种需求,越来越大时,如果此时的各个模块之间是互相调用,即你中有我,我中有你这种情况时,会造成原创 2021-04-21 14:12:32 · 428 阅读 · 0 评论 -
iOS高级进阶系列之-项目开发基础(下)Mach-O与链接器,Symbol!
前言上篇文章多环境配置、Mach-O与链接器,但是Symbol还没又说道,这篇文章我们继续上篇文章内容讲下去.xconnfig补充上面文章在介绍多环境配置的时候讲到了.xconnfig,说到了.xconnfig可以统一管理环境配置,这里可以根据不同的条件配置不同的设置,我们那Other Linker Flags来说明 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vprpgo6G-1618818463303)(https://upload-images.jianshu原创 2021-04-19 15:49:53 · 329 阅读 · 0 评论 -
iOS高级进阶系列之项目开发基础(上)多环境配置,Mach-O与链接器。
前言最近对项目进行优化,就顺便写一些日常开发中会用到的中高级开发技巧。这篇文章聊一下下面三个内容:多环境配置,Mach-O与链接器,Symbol。多环境配置聊到多环境配置,我们先说几个概念上图就是每个项目都存在的,下面解释下红框内的内容:1.Project:包含了项目所有的代码,资源文件,所有信息。2.Target:对指定代码和资源文件的具体构建方式。3.Scheme:对指定Target的环境配置。我尝试加入各种iOS开发交流群,群里的气氛大致就是:学什么iOS,iOS完了,OC完了.原创 2021-04-18 22:32:16 · 389 阅读 · 0 评论 -
2021年程序员最佳学习方法—干货总结!
前言今天这里是大鑫,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用网络记录下自己的学习历程.本文阅读建议1.一定要辩证的看待本文.2.本文主要阐述了自己在进行编程语言学习中的各种学习方法3.本文只阐述个人观点4.觉得哪里不妥请在评论留下建议~5.觉得还行的话就点个小心心鼓励下我吧~目录1.三大要素:环境、目标、动力2.学习力3.适度学习法4.快速学习法5.输出倒逼输入学习法6.弹性时间学习法7.随机目标学习法8.原创 2021-04-17 14:46:04 · 315 阅读 · 0 评论 -
浅谈iOS进阶路线,让自己人生不迷茫!
前言这里大鑫,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用网路记录下自己的学习历程.本文阅读建议1.一定要辩证的看待本文.2.本文仅代表个人片面观点,如有不同观点,还往及时指出.3.本文只阐述学习路线和学习当中的重点问题.需要读者自己使用百度进行拓展学习.4.本文所表达观点并不是最终观点,还会更新,因为本人还在学习过程中,有什么遗漏或错误还望各位指出.5.觉得哪里不妥请在评论留下建议~6.觉得还行的话就点个小心心鼓励下我吧~.原创 2021-04-16 12:08:51 · 539 阅读 · 0 评论 -
新时代iOS开发学习路线,预测未来不被淘汰!
前言这里是大鑫,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,利用网络记录下自己的学习历程。本文阅读建议1.一定要辩证的看待本文.2.本文主要是本人对iOS开发经验中总结的知识点3.本文所有观点仅代表本人.4.本文只阐述学习路线和学习当中的重点问题.需要读者自己使用百度进行拓展学习.5.本文所表达观点并不是最终观点,还会更新,因为本人还在学习过程中,有什么遗漏或错误还望各位指出.6.觉得哪里不妥请在评论留下建议~7.觉得还行的话就点.原创 2021-04-15 14:13:15 · 532 阅读 · 0 评论 -
最新整理:iOS面试题-面试常问问题(一)
前言:最近把 iOS 面试中可能会遇到的问题整理了一番, 题目大部分是网上收录的, 方便自己巩固复习, 也分享给大家; 希望对大家有所帮助!对于答案,不一定都合适,欢迎大家积极讨论;整理不易,如果您觉得还不错,麻烦在文末 “点个赞” ,或者留下您的评论“Mark” 一下,谢谢您的支持iOS面试题-面试常问问题(一)1. #include、#import、@class的区别?在C 语言中, 我们使用 #include 来引入头文件,如果需要防止重复导入需要使用#ifndef...#defin.原创 2021-04-12 13:34:59 · 360 阅读 · 0 评论 -
iOS开发者们,请您们面向未来学习,效率学习!
这一篇文章,如果你是一名iOS开发正好也处于开发晋升瓶颈迷茫期,不妨停下你的脚步,花五分钟看看,兴许有你需要的!文章结尾有????彩蛋????一位五年iOS开发的焦虑有一个小伙伴跟我微信电话。接通,那边传来非常有礼貌的:大神好!紧接着就开始一连串的"轰炸":iOS现在到底怎么了?5年开发经验了竟然在金九银十拿不到几个面试邀请,更别提offer现在要不要转行,感觉现在是大前端时代.现在30出头了,是不是不太合适继续做程序员!全程电话里充满了这位小伙伴对iOS行情的焦虑,在原创 2021-04-10 14:18:07 · 228 阅读 · 0 评论 -
给iOS中高级求职者的一份面试题解答!
前段时间更新了一篇 给iOS中高级面试官的一份招聘要求收到很多小伙伴的点赞与关注。可能有很多小伙伴已经带着我在那篇文章给大家提供的一些面试技巧 & 其中的面试题 已经开始招聘或者应聘了!这里应大家要求,对里面的面试题提供相关答案!相信无论是面试官还是求职者都是有所收获的~~PS:篇幅有点长,大家可以关注或者点赞收藏以备不时之需!!!作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS开发交流群:130595548,不管你是小白还是大牛都欢迎入驻 ,让我们一起进步,共.原创 2021-04-09 15:08:58 · 564 阅读 · 0 评论 -
给iOS中高级面试官的一份招聘要求!
互联网招聘高潮已经来临!相信作为面试官的你,估计开始准备招聘要求或者已经在招聘了!这一篇文章主要想和各位面试官交流一下:我们应该制定一份什么样的招聘要求,才是比较合适的?(* ̄︶ ̄)iOS面试需要注意1:面试态度我们在招聘的时候,面试官经常会犯一个问题:各种碾压求职者!我不知道你招聘这一天发生了什么事情,心情好不好?但是我希望当你去面试的求职者的时候,保持愉悦,给予面试者应该的 – 善意!你面试代表你的公司,你的言行举止都直接影响外界对贵公司的感受同时作为一个管理者的你,成功和愉悦的面原创 2021-04-08 15:27:49 · 274 阅读 · 5 评论 -
SwiftUI - 百行代码变十行,Swift再创辉煌
苹果开发者大会 WWDC 2019 在北京开幕。在这场大会上除了「史上最难看 Mac 主机」、首次出现的iPadOS以外,我们还终于可以对饱受诟病的iTunes说再见了。而对于开发者来说,新发布的 SwiftUI 可能是最吸引人的特性,在 苹果公司软件工程高级副总裁Craig Federighi的演示中,我们可以轻松地把一百行的前端代码缩减到十几行。作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS开发交流群:130595548,不管你是小白还是大牛都欢迎入驻 ,让我们一起..原创 2021-04-08 13:36:37 · 169 阅读 · 0 评论 -
iOS开发你不知道的事-编译&链接!
对于平常的应用程序开发,我们很少需要关注编译和链接过程。我们平常Xcode开发就是集成的的开发环境(IDE),这样的IDE一般都将编译和链接的过程一步完成,通常将这种编译和链接合并在一起的过程称为构建,即使使用命令行来编译一个源代码文件,简单的一句gcc hello.c命令就包含了非常复杂的过程!正是因为集成开发环境的强大,很多系统软件的运行机制与机理被掩盖,其程序的很多莫名其妙的错误让我们无所适从,面对程序运行时种种性能瓶颈我们束手无策。我们看到的是这些问题的现象,但是却很难看清本质,所有这些问题的原创 2021-04-06 14:01:38 · 278 阅读 · 0 评论 -
多线程安全-iOS开发要注意咯!
多线程,作为实现软件并发执行的一个重要的方法,也开始具有越来越重要的地位!作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS开发交流群:130595548,不管你是小白还是大牛都欢迎入驻 ,让我们一起进步,共同发展!(群内会免费提供一些群主收藏的免费学习书籍资料以及整理好的几百道面试题和答案文档!)正式因为多线程能够在时间片里被CPU快速切换,造就了以下优势资源利用率更好程序设计在某些情况下更简单程序响应更快但是并不是非常完美,因为多线程常常伴有资源抢夺的问题,原创 2021-04-05 16:22:17 · 153 阅读 · 0 评论