自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 iOS 了解 Runtime ,要先了解它的核心 - 消息传递 (Messaging)

iOS RuntimeRuntime 介绍Objective-C 是一个动态语言,这意味着它不仅需要一个编译器,也需要一个运行时系统来动态得创建类和对象、进行消息传递和转发。理解 Objective-C 的 Runtime 机制可以帮我们更好的了解这个语言,适当的时候还能对语言进行扩展,从系统层面解决项目中的一些设计或技术问题。了解 Runtime ,要先了解它的核心 - 消息传递 (Messaging)。Runtime objc_msgSend执行流程在OC中的方法调用,其实都是转换为objc_

2020-12-15 16:29:43 212

原创 iOS OSSpinLock 自旋锁(Spinlock)是一种忙等待锁

iOS OSSpinLock自旋锁(Spinlock)是一种忙等待锁,线程反复检查锁变量是否可用,不会挂起,避免了进程上下文的调度开销,适合阻塞很短时间的场合。当然也就不适合单CPU单线程上使用。另外需要注意的是,可能是由于安全问题(具体可以看不再安全的OSSpinlock - ibireme),自旋锁在iOS10之后弃用了,使用 os_unfair_lock 代替。如何使用我们先来看下3个关键的API。OSSpinLockLock(&spinlock) 获取锁,线程一

2020-12-15 16:28:14 2220

转载 【iOS内功】ARM汇编实战,解析iOS14 UICollectionView死循环问题 (转载)

【iOS内功】ARM汇编实战,解析iOS14 UICollectionView死循环问题背景9月初iOS14正式发布,线上版本新冒出许多Crash。有一个Crash,UICollectionView刷新逻辑死循环,卡死了主线程。阳差阳错,中美两个程序员的“误会”造成了这个Crash。App有一个页面,自定义了一个XXCollectionView。XXCollectionView嵌套在Cell里,写代码的人偷懒,把delegate设置成自己。Apple工程师也不讲武德,把协议(UICollectio.

2020-12-15 15:45:18 460

原创 为什么说 iOS开发,失业就等于成为废人?看看下面这个例子吧

文章开头这天下午,公司以资金困难,亏损较大为理由将我们整个技术部裁掉,我失业了。之后一个礼拜,我每天复习面试题,并且重新做了简历。作为一个iOS程序猿,工作4年,我毫不犹豫的在期望薪资上写了17~22K(广州)。两个礼拜之后,我面试了6家公司。面试公司:第一家实业公司,智能停车场项目,要价18k,渺无音讯第二家互联网公司,社交项目,要价20K,等待通知。第三家创业公司,类似货拉拉项目,要价17K,最高给20K,不去。第四家互联网公司,国外社交项目,初试,因底层和架构开发经验太少.

2020-12-15 15:38:19 690

原创 知识篇,iOS线程同步!!!

线程同步:即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作。所以这里同步应该不是一起、共同完成的意思,可理解为协调就是按预定的先后次序进行工作,好比:‘不要和我抢了,你先等会我做完了你在做’。线程同步目的为了多个线程都能很好的工作,合理的访问系统资源不争不抢、和谐共处。iOS开发中常用的保持线程同步有以下几种:通过线程加锁串行队列GCD### 线程加锁常用的几种形式的锁1、 @synchroniz..

2020-12-15 14:23:11 325

原创 Objective-C中NSArray和NSMutableArray是如何使用的?

Objective-C的数组比C++,Java的数组强大在于,NSArray保存的对象可以是不同的对象。但只能保存对象,int ,char,double等基本数据类型不能直接保存,需要通过转换成对象才能加入数组。#基本概念1、NSArray 不可变数组[array count] : 数组的长度。 [array objectAtIndex 0]: 传入数组脚标的id 得到数据对象。 [arrayWithObjects; …] :向数组对象初始化赋值。这里可以写任意对象的指针,结尾必

2020-12-15 14:16:27 200

原创 RxSwift常用框架、MVVM

函数响应式编程 清晰简洁、易读、易维护的代码,下面我们看下 RxSwift 的最佳搭档:MVVMMVVM原先常用的架构:MVCModel:数据层。负责读写数据,保存 App 状态等Controller:业务逻辑层。负责业务逻辑、事件响应、数据加工等工作缺点:ViewController 既扮演了 View 的角色,又扮演了 ViewController 的角色而 Model 在 VIewController 中又可以直接与 View 进行交互当 App 交互复杂的时候,就会发

2020-12-15 14:11:24 654 1

原创 软件架构设计的七大原则你知道嘛!!

软件架构设计有七大原则,分别是:1.开闭原则2.依赖倒置原则3.单一职责原则4.接口隔离原则5.迪米特法则(最小知道原则)6.里氏替换原则7.合成/聚合复用原则下面分别具体说明:1.开闭原则 :对扩展开放,对修改关闭说的是,再设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展.换言之,应当可以在不必修改源代码的情况下改变这个模块的行为,在保持系统一定稳定性的基础上,对系统进行扩展。例如:一般软件功能的升级就需要符合开闭原则,即不去修改

2020-12-15 14:09:15 1427 4

原创 iOS软件开发框架,你或许不知道的内容!

一、原件架构的原则软件架构的七大原则如下:开闭原则依赖倒置原则单一职责原则接口隔离原则迪米特法则(最小知道原则)里氏替换原则合成/聚合复用原则1.开闭原则对扩展开放,对修改关闭。说的是,在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展.换言之,应当可以在不必修改源代码的情况下改变这个模块的行为,在保持系统一定稳定性的基础上,对系统进行扩展。例如:一般软件功能的升级就需要符合开闭原则,即不去修改原来的代码,而是去增加新功能。2. 依赖倒置原则实现尽量依赖

2020-12-15 14:08:17 124

原创 iOS-MethodSwizzling 方法交换和调用

iOS-MethodSwizzlingMethod Swizzling相关概念Method Swizzling是Objective-C的黑魔法,利用runtime实现。用作方法交换,顾名思义,就是将两个方法的实现交换。比如,methodA的实现是impA,methodB的实现是impB,交换之后就是调用methodA响应的是impB,调用methodB响应的是impA。Method Swi...

2020-12-14 22:55:11 127

原创 关于iOS系统你知道多少???

首先来说下ios的历史吧!!!iOS系统诞生于2007年1月1日的Macworld上,当天公布了IOS的初代系统,当时它的名字是iPhone OS X,同时颠覆手机行业的iPhone也横空出世了,它创新的多点触控操作以及极简的用户体验都让全球消费者为之疯狂,3.5英寸的480X320分辨率的大屏幕也远远超过当时手机行业的平均配置,单Home键让 当时标配的数字按键变得日渐多余,直接导致了今天大屏触摸手机横行而传统造型手机日渐消失的现状。不过初代的手机系统还是存在着各种各样的问题:无法发彩信、无法复制粘

2020-12-12 16:46:58 432

原创 iOS多线程的锁,你知道多少?

前言iOS开发中由于各种第三方库的高度封装,对锁的使用很少,刚好之前面试中被问到的关于并发编程锁的问题,都是一知半解,于是决定整理一下关于iOS中锁的知识,为大家查缺补漏。目录第一部分: 什么是锁第二部分: 锁的分类第三部分: 性能对比第四部分: 常见的死锁第五部分: 总结(附Demo)正文一、什么是锁在过去几十年并发研究领域的出版物中,锁总是扮演着坏人的角色,锁背负的指控包括引起死锁、锁封护(luyang注:lock convoying,多个同优先级的线程重复竞争同一把锁,此时大量虽然

2020-12-12 16:33:51 1272 4

原创 开发也可以改变下,RxSwift-让你的开发变得简洁高效。

RxSwift到底是什么?RxSwift是一种函数式响应式编程。那什么是函数式编程呢,函数式编程最重要的概念就是“无状态(immutable)”,看到这有些小伙伴可能会很开心,无状态(知名LOL职业选手)嘛,我是他的粉丝!言归正传,到底什么是“无状态(immutable)”呢?我看了很多文章,但是都被他们专业的描述整的一头雾水,我来说说我的看法:有丰富debug经验的小伙伴们都知道一个事实,程序中80%的BUG都可以由追踪变量的值来发现,为什么呢?反过来想,引起BUG的最大元凶正是值的改变。说道这里大家肯

2020-12-12 16:12:17 328

原创 iOS开发 KVC 成员变量、实例变量、属性的区别

成员变量、实例变量、属性的区别@interface Person : NSObject{ @public//默认为私有属性,为了让外部可以访问,需要设置为公有 int age;//成员变量 UIButton *btn;//实例变量 NSString *string; // id 是OC特有的类,本质上讲id等同于(void *)。所以id data属于实例变量。 id className;}//属性变量@property(strong,nonatom

2020-12-12 16:09:21 152

原创 常见多线程实现,iOS开发程序猿进阶

一 常见多线程实现(一)pthread(1)特点1)一套通用的多线程API2)适用于Unix/Linux/Windows等系统3)跨平台可移植4)使用难度大(2)使用语言C语言(3)使用频率几乎不用(4)线程生命周期由程序员进行管理(5)概念、属性与方法略(二)NSThread(1)特点1)使用更加面向对象2)简单易用,可直接操作线程对象(2)使用语言OC(3)使用频率偶尔使用(4)线程生命周期由程序员进行管理(5)概念、属性与方法1)创建线程:

2020-12-12 13:49:29 108

原创 学习编程需要什么基础?从基础到高级?

程序员薪酬高、工作环境好,是很多同学向往的职业,让很多非计算机专业的同学羡慕不已。非计算机专业难道就不能成为程序员了吗?一、学编程需要什么基础?1、数学基础从计算机发展和应用的历史来看计算机的数学模型和体系结构等都是有数学家提出的,最早的计算机也是为数值计算而设计的。因此,要学好计算机就要有一定的数学基础,初学者有高中水平就差不多了。[图片上传失败…(image-fe5e26-1607515954625)]2、逻辑思维能力的培养学程序设计要有一定的逻辑思维能力,逻辑思维能力的培养要长时间的实.

2020-12-12 13:43:48 1162

原创 iOS 音视频开发,AVAudioRecorder实现录音功能!!

AVAudioRecorder、AVAudioPlayer 属于AVFoundation框架,使用时需要先导入**<AVFoundation/AVFoundation.h>**框架头文件。AVFoundation是苹果的现代媒体框架,它包含了一些不同用途的 API 和不同层级的抽象。其中有一些是Objective-C 对于底层 C 语言接口的封装。除了少数的例外情况,AVFoundation 可以同时在 iOS 和 mac OS 中使用。AVAudioRecorder录音机,...

2020-12-12 13:42:15 2853

原创 iOS中的OC和Swift进行互相调用

有时候 ,我们会涉及到双向混合编程,特别是OC和swift的互相引用。swift调用oc的方法:1、桥接文件,一般是swift工程,在创建一个oc文件时,系统自动添加(不用改名,直接默认即可)2、将需要引用的oc文件 .h头文件 添加到桥接类中。如下:然后在swift调用处,直接就可以使用了。oc调用swift的方法:1、首先设置一下Packing进入TARGETS ->Build Settings -> Packaging 中设置Defines Module为YES设置

2020-12-12 13:32:43 1172

转载 iOS 静态库详解与开发的详解

一:介绍1. 什么是库?库是共享程序代码的方式,一般分为静态库和动态库。静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。2. 两种形式中.framework的区别如上图所示,静态库的形式包含.a和.framework两种形式。动态库的形式包含.dylib和.framework,其中.framework包括私有的.framework和系统的.framework。静态.

2020-12-12 12:51:01 421

原创 Swift 访问权限fileprivate和 open

在swift 3中新增加了两种访问控制权限fileprivate和open。下面结合网上资料和个人理解整理一下两个属性的原理与介绍。fileprivate在原有的swift中的private其实并不是真正的私有,如果一个变量定义为private,在同一个文件中的其他类依然是可以访问到的。这个场景在使用extension的时候很明显。class User { private var name = "private"}extension User{ var accessPrivat

2020-12-11 16:48:15 264

原创 基本知识篇:iOS开发·runtime原理与实践

摘要:这篇文章首先介绍runtime原理,包括类,超类,>元类,super_class,isa,对象,方法,SEL,IMP等概念,同时分别介绍与这些概念有关的API。接着介绍方法调用流程,以及寻找IMP的过程。然后,介绍一下这些API的常见用法,并介绍runtime的冷门知识。最后介绍一下runtime的实战指南。Tips :苹果公开的源代码在这里可以查,https://opensource.app.com/tarballs/例如,其中,有两个比较常见需要学习源码的地址:连接runti.

2020-12-11 16:37:02 159

原创 学习编程需要什么基础?你举得呢?

程序员薪酬高、工作环境好,是很多同学向往的职业,让很多非计算机专业的同学羡慕不已。非计算机专业难道就不能成为程序员了吗?一、学编程需要什么基础?1、数学基础从计算机发展和应用的历史来看计算机的数学模型和体系结构等都是有数学家提出的,最早的计算机也是为数值计算而设计的。因此,要学好计算机就要有一定的数学基础,初学者有高中水平就差不多了。2、逻辑思维能力的培养学程序设计要有一定的逻辑思维能力,逻辑思维能力的培养要长时间的实践锻炼。要想成为一名优秀的程序员,最重要的是掌握编程思想。要做到这一点.

2020-12-11 16:26:35 1475

原创 iOS开发Objective-C基础之──多态性

Objective-C语言是面向对象的高级编程语言,因此,它具有面向对象编程所具有的一些特性,即:封装性、继承性和多态性。今天介绍一下Objective-C中的多态性。多态的3个条件:继承:各种cell继承自BaseCell重写:子类cell重写BaseCell的setModel:方法指向:父类cell指针指向子类cell 一、什么是多态 **多态:不同对象以自己的方式响应相同的消息的能力叫做多态。** 由于每个类都属于该类的名字空间,这使得多态称为可能。类定义中的名字和类定义

2020-12-11 16:21:05 87

原创 Objective-C中NSArray和NSMutableArray是如何使用的?

Objective-C的数组比C++,Java的数组强大在于,NSArray保存的对象可以是不同的对象。但只能保存对象,int ,char,double等基本数据类型不能直接保存,需要通过转换成对象才能加入数组。#基本概念1、NSArray 不可变数组[array count] : 数组的长度。 [array objectAtIndex 0]: 传入数组脚标的id 得到数据对象。 [arrayWithObjects; …] :向数组对象初始化赋值。这里可以写任意对象的指针,结尾必

2020-12-11 16:17:10 188

转载 iOS马甲包上架招式

一、什么是马甲包马甲包是利用App store 规则漏洞,通过技术手段,多次上架同一款产品的方法。马甲包和主产品包拥有同样的内容和功能,除了icon和应用名称不能完全一致,其他基本一致。二、为什么做马甲包,做马甲包有什么好处?1、导量、刷榜、增加关键字覆盖一个App的关键字是有限的,马甲包能增加我们的搜索关键词,增加我们的App被用户搜索和下载的几率。一个本身质量过硬的App,马甲包能够帮助我们迅速提升排名。2、抗风险一些不确定效果的新功能,我们可以在马甲包上先做测试,效果OK之后,我们再迭代

2020-12-11 16:06:42 505

转载 iOS内存相关的知识点整理

一、原起iOS的内存相关知识是我们开发iOS APP的基石之一,也是面试中必然会问的问题。内存知识的融会贯通,与及内存相关问题的解决,是iOS开发者必须要掌握的。作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是我的iOS交流圈: 不管你是小白还是大牛欢迎入驻!!分享内容包括逆向安防、算法、架构设计、多线程,网络进阶,还有底层、音视频、Flutter等等…自己根据梳理网络来的的开发经验总结的学习方法,无偿分享给大家。需要的话都可以自行来获取下载。+裙:196800191、 或者是+ W

2020-12-11 16:00:46 108

原创 深夜里,程序员最喜欢去的网站竟然是......

程序员的工作和日常生活非常的枯燥,这里给大家推荐一些程序员经常使用的网站,也是我经常上的一些网站,我将会从多个角度、多个层面分别为你整理归纳这些网站和论坛项目类项目是一个面试官非常看重的点,也是拓展视野、挖掘轮子一个的地方,下面就为你推荐几个程序员都应该 mark 的项目类网站1、Github代码托管 https://github.com作为开源代码库以及版本控制系统,Github 拥有140多万开发者用户。随着越来越多的应用程序转移到了云上,Github 已经成为了管理软件开发以及发现已有代码的.

2020-12-11 13:11:57 692 1

原创 快过年了,为年后iOS跳槽面试的各位打工人奉上面试大纲一份!!

快过年了,为年后iOS跳槽面试的各位打工人奉上面试大纲一份!!'写给读者的话????' 这些是我对iOS面试时会碰到的问题的解决方法,梳理和整合了各大中大型企业面试题,出来分享给大家,题目下的回答有点错误那也是正常的了,希望对大家有所帮助。大家有更好的解决办法也欢迎沟通交流。对于技术不足之处,还望谅解和大佬的指导!!????最后欢迎加入我的iOS交流圈资料获取: +裙:196800191 或者是...

2020-12-11 13:04:33 71

原创 什么是cocoa和cocoa Touch?iOS面试攻克篇(一)

‘写在前面的话’这些是我对iOS面试时会碰到的问题的解决方法,整理出来分享给大家,有些错误不要笑了,希望对大家有所帮助。大家有更好的解决办法也欢迎沟通交流。一直以来都有写点儿东西的想法,就从笔记、从阅读开始吧,加油!’1.先从概念方面来理解1、框架层Cocoa 是一种为 Mac OS X 应用程序提供丰富用户体验的框架,实际上是由3个框架组成:已知数值的Foundation框架,便于使用数据库存储和管理数据的 Core Data 框架,以及 Application Kit(AppKit..

2020-12-08 19:35:00 658

原创 链式队列的定义,ios基础知识篇!

###数据结构与算法-链式队列#####链式队列的定义链式队列是用链表来实现的队列,不存在队满的情况。链式队列也包里队列的特点。所以我们实现链式队列的 尾部进,头部出。#####链式队列的结构我们实现链式队列,首先要定一个链式队列的结构。我们要:1.定义结点。2.定义结构。#define OK 1#define ERROR 0#define TURE 1#define FLASE 0typedef int Status;typedef int ElemType;//结点typedef

2020-12-08 18:58:17 619

原创 ios知识篇,什么是应用瘦身?

iOS9 推出之后,大受欢迎。仅仅数周,已经有超过半数的 iOS 设备安装了这一新系统。这是 iOS 历代版本中采纳速度最快的—甚至打破了 2013 年 iOS7 创下的记录。#什么是应用瘦身?“应用瘦身”(App thinning) 是美国苹果公司自iOS 9发布的新特性,它能对Apple Store和操作系统进行优化,它根据用户的具体设备型号,在保证应用特性完整的前提下,尽可能地压缩和减少应用程序安装包的体积,也就是尽可能减少应用程序对用户设备内存的占用,从而减小用户下载应用程序的负担。App t

2020-12-08 18:55:54 7193

原创 从基础到进阶、底层的188道iOS面试题,下篇(87-188)!

'写给读者的话????'这些是我对iOS面试时会碰到的问题的解决方法,梳理和整合百度、阿里等100家企业面试题,想要更加详细的查看题目的回答,已链接出比较完全的答案,出来分享给大家,题目下的回答有点错误那也是正常的了,希望对大家有所帮助。大家有更好的解决办法也欢迎沟通交流。对于技术不足之处,还望谅解和大佬的指导!!????最后欢迎加入我的iOS交流圈资料获取:+裙:196800191 或者是+ W...

2020-12-08 16:27:16 120

原创 从基础到进阶、底层的188道iOS面试题,上篇(1-87)

'写给读者的话????'这些是我对iOS面试时会碰到的问题的解决方法,梳理和整合百度、阿里等100家企业面试题,想要更加详细的查看题目的回答,已链接出比较完全的答案,出来分享给大家,题目下的回答有点错误那也是正常的了,希望对大家有所帮助。大家有更好的解决办法也欢迎沟通交流。对于技术不足之处,还望谅解和大佬的指导!!????最后欢迎加入我的iOS交流圈资料获取:+裙:196800191 或者是+ W...

2020-12-07 20:57:10 384

空空如也

空空如也

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

TA关注的人

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