E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
iOS-
iOS-
事件的传递和响应机制-原理详解
前言当我们在手机屏幕上进行了一次点击,滑动,轻扫手机屏幕,手机如何捕获这个事件并且做出对应的反应,这里就涉及到了两个概念,事件链和响应链。一iOS中的事件iOS中的事件可以分为3大类型:触摸事件加速计事件远程控制事件以下一副图生动的形容了三种事件image.png加速事件-(void)motionBegan:(UIEventSubtype)motionwithEvent:(UIEvent*)eve
路飞_Luck
·
2022-02-22 08:40
iOS-
底层原理 14:消息流程分析之 动态方法决议 & 消息转发
iOS底层原理文章汇总引子在前面两篇文章
iOS-
底层原理12:objc_msgSend流程分析之快速查找和
iOS-
底层原理13:objc_msgSend流程分析之慢速查找中,分别分析了objc_msgSend
Style_月月
·
2022-02-22 02:04
iOS-
组件化开发- 自动化
在上一篇制作私有库(组件)的过程中,使用的命令有很多,以下我们就使用自动化的方式提交推送私有组件。FastlanefastlaneistheeasiestwaytoautomatebetadeploymentsandreleasesforyouriOSandAndroidapps.Ithandlesalltedioustasks,likegeneratingscreenshots,dealingw
三月望龙
·
2022-02-22 01:15
iOS-
底层原理 02:alloc & init & new 源码分析
iOS底层原理文章汇总在分析alloc源码之前,先来看看一下3个变量内存地址和指针地址区别:分别输出3个对象的内容、内存地址、指针地址,下图是打印结果结论:通过上图可以看出,3个对象指向的是同一个内存空间,所以其内容和内存地址是相同的,但是对象的指针地址是不同的%p->&p1:是对象的指针地址,%p->p1:是对象指针指向的的内存地址这就是本文需要探索的内容,alloc做了什么?init做了什么?
Style_月月
·
2022-02-21 20:59
iOS-
归档
归档:数据从内存存储到闪存上NSKeyedArchiver、NSKeyedUnarchiver归档后的文件是加密的,所以归档文件的扩展名可以随意取对Foundation框架中对象进行归档NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法。前一个方法告诉系统怎么
我是谁重要吗
·
2022-02-21 20:30
iOS-
底层探索12:dyld和objc的关联分析(类的加载上)
iOS底层探索文章汇总目录一、前言二、_objc_init方法分析三、_dyld_objc_notify_register方法分析四、map_images方法分析五、_read_images方法分析六、readClass方法分析一、前言上一篇文章iOSdyld流程分析中我们分析了dyld流程,知道了dyld会将库和代码编译加载到内存中。然后通过读取macho文件中的data获取到类信息,其中dat
differ_iOSER
·
2022-02-21 20:13
ios-
object-c(oc)内存管理机制--属性关键字
assign赋值方式不复制不保留,直接赋值基本数据类型和本类不直接拥有的对象对象应用strong却用assign就会很容易崩retain赋值方式将新值保留一份赋覆盖原值引用计数加1大部分对象可使用相当于浅拷贝,指针复制copy赋值方式将新值复制一份赋覆盖原值字符串选择性使用.(另外附上copy和strong的区别文章:简单来说,copy就是当属性变量名为不可变时,被赋值是进行了浅拷贝,作用相当于r
无悔zero
·
2022-02-21 14:36
二、
iOS-
内存对齐
一、什么是内存对齐内存对齐是一种在计算机内存中排列数据(表现为变量的地址)、访问数据(表现为CPU读取数据)的一种方式。它包含了两种相互独立又相互关联的部分:基本数据对齐和结构体数据对齐。二、为什么要进行内存对齐?1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2、性能原因:数据结构(尤其是栈)应该尽可
Fred丶Lee
·
2022-02-21 00:24
iOS-
底层原理26-GCD补充和锁
《iOS底层原理文章汇总》上一篇文章《
iOS-
底层原理25-GCD(下)》介绍了GCD单例,栅栏函数,同步函数,信号量底层原理,本文接着介绍GCD调度组合dispatch_source以及锁1.调度组:
一亩三分甜
·
2022-02-20 21:46
iOS-
屏幕适配实现(VFL)
VFL简介VFL全称是VisualFormatLanguage(可视化格式语言),它简化了Autolayout,通过一行字符串,你可以在水平或者垂直方向上指定多个约束,这跟一次只能创建一个约束相比会节省大量的代码量编译代码写的布局时,相关的View都需要将translatesAutoresizingMaskIntoConstraints设置为NOblueView.translatesAutores
皆为序幕_so
·
2022-02-20 17:01
iOS-
屏幕适配实现(AutoLayout)
AutoLayout简介AutoLayout旨在替代Autoresizing,所以在同一个项目中,AutoLayout和Autoresizing是不能共存的,二者只能选其一,如果你选择了AutoLayout,那么Autoresizing自动被屏蔽掉;如果你选择了Autoresizing,那么AutoLayout自动被屏蔽掉。XCode5及其之后的版本,默认新建的项目就是使用AutoLayout关于
皆为序幕_so
·
2022-02-20 11:04
iOS - 消息流程之动态方法决议 & 消息转发
在前面两篇文章
iOS-
消息流程之快速查找和
iOS-
消息流程之慢速查找中,分别分析了objc_msgSend的快速查找和慢速查找在这两种都没找到方法实现的情况下,苹果给了两个建议动态方法决议:慢速查找流程未找到后
Gumball_a45f
·
2022-02-20 10:03
iOS-
系统版UITabbarController和NavigationController的交互
效果图如下:16E992D0-FDF8-4E2A-A08A-1BE54655F63A.png一.创建一个UITabbarController,并在AppDelegate中的didFinishLaunchingWithOptions:(NSDictionary*)launchOptions方法设置self.window=[[UIWindowalloc]initWithFrame:[UIScreenm
Mn_Su
·
2022-02-20 08:27
iOS-
底层探索09:方法的慢速查找流程分析
iOS底层探索文章汇总目录一、前言二、一个方法查找流程的问题三、方法慢速查找流程分析四、动态方法决议(动态解析)五、总结一、前言上一篇文章iOSobjc_msgSend流程分析中我们分析了objc_msgSend的底层代码以及方法的查找流程,objc_msgSend也叫做方法的快速查找流程,那么这篇文章我们就一起分析方法的慢速查找流程是怎样的。二、一个方法查找流程的问题首先定义一个类NAPerso
differ_iOSER
·
2022-02-20 08:06
iOS制作Framework的流程
下面我详细介绍一下制作framework的流程.首先创建工程,选择
iOS-
>CocoaTouchFramework,如下图所示:image.pngimage.png进入项目后,删除系统自带的文件,导入需要制作
xiaofu666
·
2022-02-20 06:05
iOS-
底层探索28:LLVM入门
iOS底层探索文章汇总目录一、LLVM概述二、编译流程一、LLVM概述LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(ink-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。LLVM计划启动于2000年,最初由美国UIUC大学的Chr
differ_iOSER
·
2022-02-20 06:21
iOS-
底层原理29-LLVM
《iOS底层原理文章汇总》LLVM是架构编译器(compiler)的框架系统,以C++缩写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。什么是编译器.c文件和.py文件的编译差别解释器语言:一边去读去解释一边让CPU去执行编译器语言:让编
一亩三分甜
·
2022-02-20 05:57
iOS-
底层原理30-clang插件开发
《iOS底层原理文章汇总》clang插件开发1.在下载的llvm/tools/clang/tools/CmakeLists.txt中增加要添加的插件名称CMakeLists增加插件名
[email protected]
.在此目录下新建插件BCPlugin文件夹并新建CMakeLists.txt文件和BCPlugin.cpp文件BCPlugin文件夹下
[email protected]
可以参考下LLVM
一亩三分甜
·
2022-02-20 04:05
iOS-
面试题整理(一)
请解释以下代码是什么意思:typedef__attribute__((NSObject))CGGradientRefGradientObject;@property(nonatomic,strong)GradientObjectstoredGradient;资料1资料2资料32.NSNtification和KVO的区别和用法是什么?什么时候该使用通知,什么时候应该使用KVO,它们的实现上有什么区别
zhf_Zachariah
·
2022-02-20 03:36
iOS-
底层探索10:消息转发机制
iOS底层探索文章汇总目录一、前言二、分析消息转发调用了哪些方法三、实现消息转发方法四、扩展--反汇编一、前言上一篇文章iOS方法的慢速查找流程分析中我们分析了方法的慢速查找流程,以及动态方法决议,那么这篇文章我们就一起分析消息的转发机制。二、分析消息转发调用了哪些方法@interfaceLGPerson:NSObject//这里定义方法的声明主要是为了main中调用不报错;//也可以这样调用[p
differ_iOSER
·
2022-02-20 02:02
iOS - 内存管理(二)之Copy
1.前言阅读本文前请先阅读第一篇《
iOS-
内存管理(一)之MRR》,因为部分内容有涉及之前的知识点。
FKSky
·
2022-02-20 00:33
[转]
iOS-
三方库-MJExtension源码分析
原文链接:https://www.jianshu.com/p/cc75458c5e6f我们经常需要从网络上拉取json数据,然后将json数据转化为自己的模型数据,将json数据转化为我们自己的模型数据经常使用的框架有YYModel和MJExtension,所以现在也是打算花一些时间看一下MJExtension的源码,并且写一篇博客记录一下,因为不记录下来的话感觉很容易忘,学习效果不佳。一.MJE
棒棒德
·
2022-02-19 12:39
iOS-
底层原理 22:KVC 底层原理
iOS底层原理文章汇总KVC的全称是Key-ValueCoding,翻译成中文是键值编码,键值编码是由NSKeyValueCoding非正式协议启用的一种机制,对象采用该协议来间接访问其属性。既可以通过一个字符串key来访问某个属性。这种间接访问机制补充了实例变量及其相关的访问器方法所提供的直接访问。KVC相关API常用方法主要有以下四个常用的方法通过key设值/取值//直接通过Key来取值-(n
Style_月月
·
2022-02-19 04:18
iOS-
底层原理04-类原理&方法&属性
《iOS底层原理文章汇总》类分析1.获取对象的isa,得到类信息(lldb)x/4gxperson0x1007041a0:0x001d8001000021a90x00000000000000000x1007041b0:0x00007fff8a1bc8600x000000010063ec10(lldb)p/x0x001d8001000021a9&0x00007ffffffffff8ULL(unsig
一亩三分甜
·
2022-02-19 03:09
iOS-
底层原理25-GCD(下)
《iOS底层原理文章汇总》上一篇文章《
iOS-
底层原理24-GCD(上)》介绍了异步函数disasync的包装和调用流程,本文介绍线程是怎么被GCD封装创建的1.队列的创建以模板进行处理:基础模板的基础上进行修改
一亩三分甜
·
2022-02-18 22:59
消息推送收集的
1.可以用的Demo无法收到点击消息
iOS-
收到远程推送后的页面跳转http://blog.csdn.net/LL845876425/article/details/51745123分分钟搞定IOS远程消息推送
不要虚度美好的时光
·
2022-02-18 19:12
iOS-
底层原理(4)-KVO原理详解
面试题1.iOS用什么方式实现对一个对象的KVO?(KVO的本质是什么?)利用Runtime动态生成一个子类,并且让instance对象的isa指向这个全新的子类(即这个子类的superclass指向原来的那个类)当修改instance对象的属性时,会调用Foundation的_NSSetXXXValueAndNotify函数willChangeValueForKey:父类原来的setterdid
路飞_Luck
·
2022-02-18 14:34
iOS-
利用贝塞尔曲线设置圆角
/**裁剪图片@paramradius半径@paramcorners角@paramborderWidth线宽值大于矩形的一半宽度或高度夹适当宽度的一半或高度。@paramborderColor线颜色@paramborderLineJoin线转交类型@returniamge*/-(UIImage*)imageByRoundCornerRadius:(CGFloat)radiuscorners:(UI
linbj
·
2022-02-18 09:35
iOS-
逆向09-对称加密&应用签名原理
《iOS底层原理文章汇总》1.对称加密DES数据加密标准(用得少,因为强度不够)3DES使用3个密钥,对相同的数据执行3次加密,强度增强AES高级密码标准。对称加密:加解密用同样一个Key非对称加密:RSA,公钥,私钥HASH:不是加密算法2.对称加密应用模式ECB(ElectronicCodeBook):电子密码本模式。每一块数据,独立加密。最基本的加密模式,也就是通常理解的加密,相同的明文将永
一亩三分甜
·
2022-02-18 08:44
Ios-
运行黑屏现象
ios运行后一直出现黑屏现象,可能有两种情况,一是卡顿,二是没有勾选isInitialviewController屏幕快照2019-03-15下午3.49.45.png对于小白的我很无奈,记录一下
To_HG
·
2022-02-18 00:38
iOS-
底层原理:经典面试题案例分析
面试题一:类在内存中存储了几份?答案是:一份解析:可以通过不同的方式来获取同一个类Classclass1=[LBHPersonclass];Classclass2=[LBHPersonalloc].class;Classclass3=object_getClass([LBHPersonalloc]);NSLog(@"\n%p-\n%p-\n%p",class1,class2,class3);//输
AcmenL
·
2022-02-17 23:49
iOS-
底层原理 33:内存管理(二)强引用分析
iOS底层原理文章汇总本文主要是通过定时器来梳理强引用的几种解决方案强应用(强持有)假设此时有两个界面A、B,从Apush到B界面,在B界面中有如下定时器代码。当从Bpop回到A界面[图片上传中...(E70D3F5D-8815-4138-BFDD-017B1BFCE0E7.png-6861f8-1609331145410-0)]时,发现定时器没有停止,其方法仍然在执行,为什么?self.time
Style_月月
·
2022-02-17 23:49
iOS-
图片批量上传-挖坑
背景注:这个方法有坑。。【戳--填坑版】最近一个半路接手的项目需要修改一个功能。图片上传。项目中有很多地方用到了图片上传这个功能,有的是单张的,有的是批量上传的。现在需要全部改为批量上传。还有新增图片上传的状态:未上传、上传中、上传失败、上传成功。上传失败需要有一个点击重传的功能。没有将代码抽离出来,就不放代码了。涉及具体业务的部分为了保密性也不放了。。主要就是介绍一下思想,捋一下思路E003AD
不明Xia落
·
2022-02-16 21:02
iOS-
(修改导航栏的颜色)-----色值转化为图片
+(UIImage*)buttonImageFromColor:(UIColor*)color{CGRectrect=CGRectMake(0,0,2,2);UIGraphicsBeginImageContext(rect.size);CGContextRefcontext=UIGraphicsGetCurrentContext();CGContextSetFillColorWithColor(c
亦晴工作室
·
2022-02-16 20:12
iOS-
计算数组数值总和,平均值,最大值,最小值
NSArray*tempArray=[NSArrayarrayWithObjects:@"2",@"3",@"4",@"5",@"10",nil];NSNumber*sum=[tempArrayvalueForKeyPath:@"@sum.floatValue"];NSNumber*avg=[tempArrayvalueForKeyPath:@"@avg.floatValue"];NSNumber
malgee
·
2022-02-16 16:36
iOS-
逆向03-函数本质(下)
《iOS底层原理文章汇总》1.带8个参数以上的函数的汇编实现原理test函数拥有9个参数,栈中如何存储第9个参数inttest(inta,intb,intc,intd,inte,intf,intg,inth,inti){returna+b+c+d+e+f+g+h+i;}imageimageimage将sp寄存器储存的栈内存地址赋值给x8将参数9赋值给w10寄存器将w10中存储的值9传给x8地址指向
一亩三分甜
·
2022-02-16 15:33
iOS-
自己实现个NSNotificationCenter
iOS-
自己实现个NSNotificationCenter代码地址实现原理类似多播委托image1.指定objc的实现NSNotification,addObserver的时候可以指定objc,post
Corbin___
·
2022-02-16 12:11
iOS-
屏幕适配实现
常见布局方式固定间距:不同尺寸下,间距总是固定的流式布局:文字、图片等在不同屏幕下流式排布,比如大屏下一行显示四张图片,小屏一行三张,图片尺寸固定比例放大:间距、文字大小,图片大小等比例放大保持比值:俩个UI元素或者图片的长宽等属性保持一定的比值对齐:元素间按某个方向对齐屏幕适配的方法AutoresizingAutoLayouVFLMasonrySnapKit
皆为序幕_so
·
2022-02-16 09:28
iOS-
百度地图点聚合与自定义针头
示例图关于怎么导入百度地图SDK与创建应用就不多说了,百度的文档应该比我说的更详细,下面直接正文吧1.首先地图的初始化-(void)viewWillAppear:(BOOL)animated{[superviewWillAppear:animated];}///地图-(void)setupView{_mapView=[[BMKMapViewalloc]init];[_mapViewsetMapTy
无沣
·
2022-02-16 09:42
iOS-
逆向02-函数本质
《iOS底层原理文章汇总》关于CPU的补充寄存器CPU除了有控制器、运算器还有寄存器。其中寄存器的作用就是进行数据的临时存储。CPU的运算速度是非常快的,为了性能CPU在内部开辟一小块临时存储区域,并在进行运算时先将数据从内存复制到这一小块临时存储区域中,运算时就在这一小快临时存储区域内进行。我们称这一小块临时存储区域为寄存器。对于arm64系的CPU来说,如果寄存器以x开头则表明的是一个64位的
一亩三分甜
·
2022-02-16 08:45
iOS-
底层探索05:类的结构分析
iOS底层探索文章汇总目录一、前言二、类的结构分析三、【百度面试题】objc_object与对象的关系总结一、前言上一篇文章iOS对象的本质我们分析了对象的底层结构,并在iOSisa底层结构分析中提到了对象,类,元类,根元类等概念,这篇文章我们就一起来分析类的底层结构到底是什么。在开始探究之前,先补充一下内存偏移的概念,主要是为了更好理解后面的类的结构体。intc[4]={1,2,3};//这里先
differ_iOSER
·
2022-02-16 08:03
iOS-
底层原理12-应用程序加载
《iOS底层原理文章汇总》前面所学内容回顾1.对象底层-结构体-alloc2.对象的本质-isa3.类的结构isasuperclasscachebit-data()methodList?rw4.cache:方法bucketmaskinsert5.objc_msgSend消息的发送,快速查找6.慢速查找,二分查找7.动态方法决议8.消息转发:快速+慢速应用程序的加载过程先了解App的编译过程,可参考
一亩三分甜
·
2022-02-16 06:00
iOS-
底层原理 01:源码探索的三种方式
本文主要介绍下源码探索的三种方法1、符号断点直接跟流程2、通过按住control+stepinto3、汇编跟流程下面详细讲下这三种方法是如何查找到函数所在的源码库,以alloc为例一、符号断点直接跟流程通过下alloc的符号断点1.选择断点SymbolicBreakpoint截屏2020-09-07下午5.17.10.png2.符号断点中输入alloc截屏2020-09-07下午5.20.03.p
致青春_bf42
·
2022-02-15 23:45
ios-
新闻类app基础框架搭建
scrollerView和tableView组合使用(网易新闻demo)搭建界面1.界面sb内部拖拽两个scrollerView(1.titleScrollerView2.contentScrollerView)2.对titleScrollerView做布局利用for循环添加labe(为什么不使用button是因为button对于label来说功能多,但是这里我们只需要点击,所以不用button)
Dayu大鱼
·
2022-02-15 11:32
iOS-
底层原理19-KVC
《iOS底层原理文章汇总》1.KVC的一般使用LGPerson*person=[[LGPersonalloc]init];//一般setter方法person.name=@"LG_Cooci";//setter--llvmperson.age=18;person->myName=@"cooci";NSLog(@"%@-%d-%@",person.name,person.age,person->my
一亩三分甜
·
2022-02-15 10:56
iOS-
底层原理16-类扩展和关联对象底层原理
《iOS底层原理文章汇总》上一篇文章《
iOS-
底层原理15-类的加载下》详细介绍了类和分类的懒加载和非懒加载搭配情况下,方法的加载流程,本文介绍类的扩展和关联对象底层原理LLVM源码下载地址1.方法排序中类中的方法的
一亩三分甜
·
2022-02-14 19:20
iOS-
底层原理7:isa与类关联的原理
问题OC对象的本质到底是什么?里面到底是什么结构呢?探索在探索oc对象本质前,先了解一个编译器:clangclangclang是一个由Apple主导编写,基于LLVM的C/C++/OC的编译器主要是用于底层编译,将一些文件输出成c++文件,例如main.m输出成main.cpp,其目的是为了更好的观察底层的一些结构及实现的逻辑,方便理解底层原理。操作指令//1、将main.m编译成main.cpp
AcmenL
·
2022-02-14 18:45
iOS-
多线程3-加锁方案2
一.NSConditionLockNSConditionLock是对NSCondition的进一步封装,可以设置具体的条件值。NSConditionLock相关API:@interfaceNSConditionLock:NSObject{-(instancetype)initWithCondition:(NSInteger)condition;@property(readonly)NSIntege
Imkata
·
2022-02-14 08:30
iOS-
开发小贴士
持续更新...1.单击手势和双击手势冲突的解决-(void)requireGestureRecognizerToFail:(UIGestureRecognizer*)otherGestureRecognizer;//exampleusage:[singleTaprequireGestureRecognizerToFail:doubleTap];2.AutoLayout中的baseline对齐通常是
yue博客
·
2022-02-14 06:45
iOS-
屏幕适配实现(Masonry)
Masonry简介Masonry是一个轻量级的布局框架,拥有自己的描述语法,采用更优雅的链式语法封装AutoLayout,简洁明了并具有高可读性,而且同时支持iOS和MaxOSX下载链接MasonryMasonry配置使用pods方式引入类库,pod'Masonry'引入头文件#import"Masonry.h"Masonry使用示例:[testViewmas_makeConstraints:^(
皆为序幕_so
·
2022-02-14 02:49
上一页
7
8
9
10
11
12
13
14
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他