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-
数据持久化
持久化:将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据。持久化数据的方式:文件存储:NSUserDefaults文件:plistWrite写入方式:[datawriteToFile:FileNameatomically:YES];归档(NSKeyedArchiver)数据库:数据库(SQLite、CoreData、第三方类库FMDB)前3种都是覆盖存储。如果想要增加一条数
我是谁重要吗
·
2021-06-21 10:12
iOS-
底层原理10-动态方法决议&消息转发
《iOS底层原理文章汇总》上一篇文章《
iOS-
底层原理09-msgSend消息转发》中提到,如果慢速查找在父类的缓存中没有找到,则传入父类的class,进而重新进行父类的慢速查找流程...一层层递归循环
一亩三分甜
·
2021-06-21 06:17
iOS-
底层原理 11:objc_class 中 cache 原理分析
iOS底层原理文章汇总本文的主要目的是理解cache_t以及sel-imp的缓存原理整体分析在之前的
iOS-
底层原理07:isa与类关联的原理和
iOS-
底层原理08:类&类结构分析中,分析了objc_class
Style_月月
·
2021-06-21 04:28
iOS-
希尔排序
序言以下内容摘自百度百科希尔排序希尔排序(Shell'sSort)是插入排序的一种又称“缩小增量排序”(DiminishingIncrementSort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。在这之前冒泡、选择、插入排序的时间复杂度基本都是O(n²)的,希尔排序算法是突破这个时间复杂度的第一批算法之一。算法思想希尔排序是把记录按下标的一定增量分组,对每组使用直接插入
路飞_Luck
·
2021-06-21 03:47
iOS-
底层原理 18:类的加载(下)
iOS底层原理文章汇总在上一篇文章
iOS-
底层原理17:类的加载(上)中,理解了类是如何从Mach-O加载到内存中,这次我们来解释下分类是如何加载到类中的,以及分类和类搭配使用的情况分类的本质前提:在main
Style_月月
·
2021-06-21 03:11
iOS-
底层原理20-KVO(上)
《iOS底层原理文章汇总》1.观察者中的context上下文参数可以防止重名(多个对象观察的同名属性区分),性能,代码可读性,安全2.观察者在dealloc方法中要移除,若不移除,程序将会奔溃。[self.studentaddObserver:selfforKeyPath:@"name"options:NSKeyValueObservingOptionNewcontext:NULL];-(void
一亩三分甜
·
2021-06-21 03:29
iOS-
底层原理39-离屏渲染
《iOS底层原理文章汇总》1.光栅扫描显示系统组成帧缓冲区--->视频控制器--->显示器集成显卡和独立显卡,独立显卡后有帧缓冲区,CPU处理图片生成纹理后,通过系统总线传输到显示处理器,显示处理器处理数据后放到帧缓冲区,由帧缓冲区渲染到显示器2.屏幕成像和卡顿问题I.屏幕撕裂逐行逐行进行扫描,扫描到一半的时候帧缓冲区里面的数据发生了更新变化,上半部分是上一帧数据的内容,下半部分是下一帧数据的内容
一亩三分甜
·
2021-06-21 00:16
iOS-
底层原理02-isa和类的结构分析
《iOS底层原理文章汇总》[NSObjectalloc]方法为什么没有走源码???0.gif如上图发现并没有走alloc的源码,通过汇编调试(Debug->DebugWorkflow->AlwaysShowDisassembly)发现调用了objc_alloc方法
[email protected]
在objc_alloc中断点,发现[NSObjectalloc]中调用了//Calls[
一亩三分甜
·
2021-06-20 21:20
iOS-
真机调试
前言:来到这里,相信大家在网上搜了不少关于iOS真机调试配置的文章,所以从登陆开发者账号,到生成证书,配置文件,再到真机调试的流程我这里不再赘述。这里只讲实际开发中遇到的真机调试配置失败的问题。1.从小组组长那里获取由他导出的(一般开发者账号在他或者项目经理手里)调试证书,以及对应的p12文件,和mobileprovision(描述)文件。2.分别双击这三个文件进行安装。3.配置xcode:选择“
wangjianjun0730
·
2021-06-20 20:23
iOS-
底层原理08-msgSend(cache_t)
《iOS底层原理文章汇总》运行时感受,通过clang底层编译编译前的代码#import@interfaceDCPerson:NSObject-(void)sayNB;-(void)sayHello;@end@implementationDCPerson-(void)sayNB{NSLog(@"%s",__func__);}-(void)sayHello{NSLog(@"%s",__func__);
一亩三分甜
·
2021-06-20 18:59
iOS-
逆向07-密码学
《iOS底层原理文章汇总》1.RSA加密I.密码学发展A.离散对数问题image3为质数17的原根,若质数17很大,则想要破解会很难,只有不断的试错B.欧拉函数图片.png关于互质关系如果两个正整数,除了1以外,没有其他公因数,我们就称这两个数是互质关系(coprime)。注意:两个相等的数之间不构成互质关系欧拉函数特点一、当n是质数的时候,φ(n)=n-1。二、如果n可以分解成两个互质的整数之积
一亩三分甜
·
2021-06-20 17:59
iOS-
底层原理 03:objc4-781 源码编译 & 调试
iOS底层原理文章汇总本文主要是通过将objc4-781的源码编译成功,然后在源码中进行调试,便于跟踪方法的底层实现流程准备工作环境版本&最新objc源码macOS10.15Xcode11.4objc4-781依赖文件下载需要下载以下依赖文件image其中除了其中launchd-106.10需要在MacOSX10.4.4下载,其他的均可以在最新的的版本macOS10.15中检索到源码编译源码编译就
Style_月月
·
2021-06-20 17:51
iOS-
底层原理 25:多线程原理
iOS底层原理文章汇总本文的目的在于了解进程、线程、多线程、线程池等的基本概念及原理线程和进程线程和进程的定义线程线程时进程的基本执行单元,一个进程的所有任务都在线程中执行进程要想执行任务,必须的有线程,进程至少要有一条线程程序启动会默认开启一条线程,这条线程被称为主线程或者UI线程进程进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用的且受保护的内存空间内通过“活
Style_月月
·
2021-06-20 17:17
iOS-
底层原理 05:内存对齐原理
iOS底层原理文章汇总在探讨内存对齐原理之前,首先介绍下iOS中获取内存大小的三种方式获取内存大小的三种方式获取内存大小的三种方式分别是:sizeofclass_getInstanceSizemalloc_sizesizeof1、sizeof是一个操作符,不是函数2、我们一般用sizeof计算内存大小时,传入的主要对象是数据类型,这个在编译器的编译阶段(即编译时)就会确定大小而不是在运行时确定。3
Style_月月
·
2021-06-20 13:40
iOS-
底层原理 27:GCD 之 NSThread & GCD & NSOperation
iOS底层原理文章汇总本文的主要目的是介绍NSThread、GCD、NSOperation常见的使用方式NSthreadNSthread是苹果官方提供面向对象的线程操作技术,是对thread的上层封装,比较偏向于底层。简单方便,可以直接操作线程对象,使用频率较少。创建线程线程的创建方式主要以下三种方式通过init初始化方式创建通过detachNewThreadSelector构造器方式创建通过pe
Style_月月
·
2021-06-20 11:33
iOS-
底层原理 16:dyld与objc的关联
iOS底层原理文章汇总本文的主要目的是理解dyld与objc是如何关联的在上一篇文章
iOS-
底层原理15:dyld加载流程中,我们梳理了dyld的加载流程,下面来详细介绍下dyld和objc的关联_objc_init
Style_月月
·
2021-06-20 08:25
iOS-
逆向01-初识汇编
《iOS底层原理文章汇总》我们在前期的学习中,了解到在逆向开发中,非常重要的一个环节就是静态分析.首先我们是逆向iOS系统上面的APP.那么我们知道,一个APP安装在手机上面的可执行文件本质上是二进制文件.因为iPhone手机本质上执行的指令是二进制.是由手机上的CPU执行的.所以静态分析是建立在分析二进制上面.所以今天我们接下来的课程从非常基础的东西开始讲解.汇编语言的发展机器语言由0和1组成的
一亩三分甜
·
2021-06-20 07:16
iOS-
关于Xcode 11 无法正常上传包,一直卡在验证问题
事情是这样的,年后要发版,准备选用最保守的上传方式Xcode-Window-Organizer.从凌晨12点开始就一直卡死在万恶的“AuthenticatingwiththeiTunesstore”上,网上找了很多方法,都不行。但发现一个共同点,就是都会提到“iTMSTransporter”,经过了解后,知道这东西是苹果在上传包的时候,通过“iTMSTransporter”来实现上传的。“iTMS
赵熊猫
·
2021-06-20 06:35
iOS-
简单的UIButton点击区域扩大,不影响图片尺寸
简单的记录一下,其实很简单的问题,UI图片做的小点就OK,每个人都会遇到吧,那就把代码贴近来,自己写粘贴吧import@interfaceUIButton(Extensions)(void)setEnlargeEdgeWithTop:(CGFloat)topright:(CGFloat)rightbottom:(CGFloat)bottomleft:(CGFloat)left;@endimport
子小每文
·
2021-06-20 04:21
iOS-
面试题-OC基础篇 (3) - (1)
目录:
iOS-
面试题-OC基础篇(1)-(84)
iOS-
面试题-OC基础篇(2)-(83)
iOS-
面试题-OC基础篇(3)-(1)1.设计模式?
_正阳_
·
2021-06-20 02:39
最新Unity2017导出Xcode工程并集成进Xcode10.0原生工程
一,导出unity的iOS工程1.File->BuildSettings->
ios-
>Switchplatform切换为iOS平台2.playerSettings.....
smlq
·
2021-06-20 01:19
【
iOS-
设计模式】六大设计原则之单一职责原则(SRP,Single Responsibility Principle)
定义就一个类而言,应该仅有一个引起它变化的原因。定义解读这是六大原则中最简单的一种,通俗点说,就是不存在多个原因使得一个类发生变化,也就是一个类只负责一种职责的工作。优点类的复杂度降低,一个类只负责一个功能,其逻辑要比负责多项功能简单的多;类的可读性增强,阅读起来轻松;可维护性强,一个易读、简单的类自然也容易维护;变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显
GSNICE
·
2021-06-20 01:23
iOS-
底层原理17-类的扩展补充和面试题
《iOS底层原理文章汇总》上一篇文章《
iOS-
底层原理16-类扩展和关联对象底层原理》介绍了关联对象底层原理1.分析AssociationsManager不唯一和AssociationsHashMap唯一模拟新建
一亩三分甜
·
2021-06-19 22:49
iOS-
基础知识--模态和单例简单总结
**怒发冲冠,凭栏处,潇潇雨歇!**模态使用场景:1.调用系统相册2.相机3.临时展示一些内容(例如用户登录页面,通信录添加联系人)UIKit提供的一些专门用于模态显示的ViewController,比如UIImagePicekerController等主要用途:1.收集用户输入信息2.临时呈现一些内容3.临时改变工作模式4.相应设备方向变化5.显示一个新的view层级弹出风格ModalPrese
云之君兮鹏
·
2021-06-19 22:22
iOS-
底层原理 32:启动优化(一)基本概念
iOS底层原理文章汇总虚拟内存&物理内存早期的数据访问是直接通过物理地址访问的,这种方式有以下两个问题:1、内存不够用2、内存数据的安全问题内存不够用的方案:虚拟内存针对问题1,我们在进程和物理内存之间增加一个中间层,这个中间层就是所谓的虚拟内存,主要用于解决当多个进程同时存在时,对物理内存的管理。提高了CPU的利用率,使多个进程可以同时、按需加载。所以虚拟内存其本质就是一张虚拟地址和物理地址对应
Style_月月
·
2021-06-19 20:41
蓝牙芯片
蓝牙模块
音频发射器杂音噪音问题解决方案
一、概述蓝牙技术的成熟,使得蓝牙在消费类电子产品应用越来越多,比如蓝牙音箱、蓝牙耳机、蓝牙BLE。最近两年,蓝牙应用在音频发射上的产品越来越多了,而且消量也是逐年增多,竞争也多,要求也越来越高,问题也就暴露出来了。今年,就有客户反映说蓝牙发射器在电脑使用进,音箱端会有杂音、噪音的问题。针对这个问题,我测试了一下确实是有的。但它是有条件的出现,当你用电脑供电,音频输入接手机或其它的音源设备是不会的。
黄传宏123456
·
2021-06-19 18:04
iOS-
关于UIScrollView的嵌套联动
基本场景(最终效果和链接在文末,支持Swift与OC)UIScrollView嵌套多个UITableView的场景在APP里很常见,复杂点还有各种UITableView、UICollectionView各种嵌套的场景,目前通用的解决办法基本是在UIScrollView的代理方法-(void)scrollViewDidScroll:(UIScrollView*)scrollView里比较偏移量和需要
xing3523
·
2021-06-19 16:30
iOS-
底层原理 01:源码探索的三种方式
本文主要介绍下源码探索的三种方法1、符号断点直接跟流程2、通过按住control+stepinto3、汇编跟流程下面详细讲下这三种方法是如何查找到函数所在的源码库,以alloc为例1、符号断点直接跟流程通过下alloc的符号断点选择断点SymbolicBreakpoint2251862-546b1518f2904802.png符号断点中输入allocimage.pngmain中的CJLPerson
小Peter的简书
·
2021-06-19 15:53
iOS-
底层原理 01:源码探索的三种方式
iOS底层原理文章汇总本文主要介绍下源码探索的三种方法1、符号断点直接跟流程2、通过按住control+stepinto3、汇编跟流程下面详细讲下这三种方法是如何查找到函数所在的源码库,以alloc为例1、符号断点直接跟流程通过下alloc的符号断点选择断点SymbolicBreakpointimage符号断点中输入allocimagemain中的CJLPerson处加一个断点在走到这部分断点之前
Style_月月
·
2021-06-19 13:48
iOS逆向 12:Mach-O文件(下)
iOS底层原理+逆向文章汇总本文主要介绍Mach-O文件的内部结构的演示Mach-O文件结构下面更多的是Mach-O的结构演示,更多的Mach-O介绍可以查看
iOS-
底层原理32:启动优化(一)基本概念
Style_月月
·
2021-06-19 10:06
iOS-
底层原理23-内存五大区
《iOS底层原理文章汇总》1.栈区(stack):由编译器自动分配并释放,存放函数的参数值比如(idself,SEL_cmd),局部变量等。栈是系统数据结构,对应线程/进程是唯一的。栈是高地址向低地址扩展的数据结构,是一块连续的内存的区域;先进后出(FILO—First-In/Last-Out)栈的地址空间是以0x7开头,栈是在运行时开辟优点:由于是编译器自动创建和释放的,所以不会产生内存碎片;一
一亩三分甜
·
2021-06-19 10:33
iOS-
逆向06-汇编终章OC反汇编
《iOS底层原理文章汇总》1.OC反汇编图片.pngobjc_msgSend中存在两个参数(id,SEL),id类型实质上是一个结构体指针类型,SEL是一个选择器x8寄存器中存放的是一个地址0x1021295b0,将x8寄存器中存放的地址值读取8个字节内容存放到x0寄存器中再将x8寄存器中存放的一个地址0x1021295a0,读取8个字节内容存放到x1寄存器中将x0,x1的值传入objc_msgS
一亩三分甜
·
2021-06-19 07:40
iOS-
底层原理(1)-对象的本质
Objective-C的本质我们平时编写的Objective-C代码,底层实现其实都是C\C++代码image.png将OC代码翻译成C++代码,我们可以看到//NSObjectImplementationstructNSObject_IMPL{Classisa;//8个字节};//指针//typedefstructobjc_class*Class;所以Objective-C的面向对象都是基于C\
路飞_Luck
·
2021-06-19 04:21
iOS-
屏幕帧数
在看YYKit(https://github.com/ibireme/YYKit)代码时,发现项目里有一个查看当前屏幕帧数的小工具YYFPSLabel,能够实时查看当前的帧数。作者yehot的gif以下是YYFPSLabel重要代码:/**//创建一个CADisplayLink,用于获取帧数@paramtick:获取数据方法@return*/_link=[CADisplayLinkdisplayL
linbj
·
2021-06-19 04:13
ios-
对知识的复习nav+tab的设置
很久没有写文章了,也就说明这段时间没有怎么做ios这方便的工作,期间做了一阶段的跨平台开发,由于是半路出家做的效果不是很好,然后就去学了一阶段的js,不过现在我又回来了!!!利用这两天的业余时间写了一些比较基础的东西,就是app的基类,简单的登录和一些方法的扩展,争取在未来的几天写一些有用的东西!Demo直通车:https://github.com/clark-new/app-base账号密码都是
Clark_new
·
2021-06-18 23:15
iOS-
防止离屏渲染
UIBezierPath贝塞尔曲线给view绘圆角1、绘圆形-(void)pd_setRadius{[self.superviewlayoutIfNeeded];//确保获取到boundsUIBezierPath*maskPath=[UIBezierPathbezierPathWithRoundedRect:self.boundsbyRoundingCorners:UIRectCornerAllC
Arthur凌
·
2021-06-16 11:57
iOS-
(移动/复制)并合并文件夹、
【前言】开发中遇到两个需求,是NSFileManager文件操作。我有一个包含文件和子文件夹的A文件夹,我想将其复制到文件系统中的B文件夹下。在B中,可能已存在同名文件夹/文件,该文件夹也可能包含文件和文件夹。【需求一】我想用我A文件夹下所有文件移动到B文件夹下面,如果它们具有相同的名称,覆盖并替换B里面的同名文件,而B其余文件都不会受到影响。【需求二】我想用我A文件夹下所有文件复制到B文件夹下面
蜗牛快跑zz
·
2021-06-15 09:57
iOS-
面向协议编程
用工厂方法时,先定义了一个基类,在基类的声明中定义了一系列的方法,类实现里面并不需要实现,而是在子类里面实现的,需要的只是基类中的.h文件的方法声明。这个是不是和协议有点像,定义一个基协议,让各个工厂类都遵守这个基协议。我们就拿地图说事。百度地图和高德地图的视图都是继承的UIView,请看代码。1>首先我们先定义2个基协议。#import#import"ImapView.h"@protocolIM
骑毛驴的小强
·
2021-06-15 03:14
iOS-
组件化开发-路由
当越来越多的组件开发好以后,如何方便的使用组件?如何实现组件之间相互调用?如何减少组件间的耦合性?这些思考的出现,从而诞生了路由之说。1.直接import类这种是最直接原始的方式,耦合性高开发好的组件如下:1.png直接在需要用到的地方,导入此类就可使用2.png2.target-action方式CTMediator是target-action这种方式比较有代表性的开源库基于CTMediator思
三月望龙
·
2021-06-14 16:00
iOS-
手势
UIResponderUIResponder:是一个响应者(传达者)用来响应用户的触摸屏幕的某些事件手势手势分为六大手势,都继承自UIGestureRecognizer1、点击UITapGestureRecognizer可以通过手势里面的view属性找到点击的视图locationaInView:找到点击的位置numberOfTapsRequired设置点击手势的点击次数numberOfTouche
磊CC
·
2021-06-14 04:02
iOS-
底层原理 19:类扩展 与 关联对象 底层原理探索
iOS底层原理文章汇总本文的主要目的是针对类的加载的一个扩展,主要讲讲类拓展和分类的底层实现原理【面试题】类扩展与分类的区别1、category类别、分类专门用来给类添加新的方法不能给类添加成员属性,添加了成员属性,也无法取到注意:其实可以通过runtime给分类添加属性,即属性关联,重写setter、getter方法分类中用@property定义变量,只会生成变量的setter、getter方法
Style_月月
·
2021-06-13 15:29
iOS-
纵向横向双向滑动的TableView的实现
需求项目中需要用到如下的「横向」和「纵向」双向滚动的表格功能,在这里分享下实现方式。multiScroll.gifUI图层UI图层由6个控件组成,分别是:左边头部视图左边tableView右边scrollView右边容器视图右边头部视图右边tableViewUI层级.png按照上面思路进行UI布局,需要注意的是右边scrollView的布局需要保证添加在其中的tableView能够左右滚动。双向滚
李丘
·
2021-06-13 07:33
关于iOS打包测试和发布
两篇看到的挺详细的文章记录一下自动生成证书iOS打包的两种方式手动创建证书
iOS-
最全的App上架教程
天方夜譚
·
2021-06-13 06:02
蓝牙模块
BT401音频BLE串口数传的layout注意事项
一、简介BT401
蓝牙模块
,用户在画板的时候,有一些细节一定要注意好,最好不要想当然的随便。
清月电子
·
2021-06-13 05:44
iOS-
关于改插件方法
改插件思路?改插件-->如何去查找插件-->插件开发知识-->插件代码肯定有个地方指定安装到什莫地方怎么改插件?1.打开插件2.搜索plug3.就能找到安装的路径为什莫要改?原因:有时候我们自己封装的分类不适用于插件改插件图例第一步第二步第三步第四步第五步第六步效果展示:效果展示
_正阳_
·
2021-06-13 00:32
iOS-
在Xcode中打开终端
不多废话,开门见山。介绍两种常用的在指定路径打开终端的方式。使用Go2Shell插件在网上下载Go2Shell,安装之后就可以直接使用,可以通过自定义Finder的工具栏,设置Go2Shell的打开快捷方式。Go2Shell具体使用:在Finder中去到具体的项目文件夹,然后点击自己添加的Go2Shell快捷方式,即可打开定位到这个路径的终端。由于这个应用在appstore上太久没更新了,被苹果定
李丘
·
2021-06-12 20:12
iOS-
获取图片上某点的颜色
下面是具体的实现代码+(UIColor*)colorAtPixel:(CGPoint)pointwithImage:(UIImage*)imageimageWidth:(CGFloat)imageWidth{//判断给定的点是否被一个CGRect包含if(!CGRectContainsPoint(CGRectMake(0.0f,0.0f,image.size.width,image.size.he
见哥哥长高了
·
2021-06-12 18:46
iOS-
判断是否是手机号的正则表达式
//判断是否是手机号+(BOOL)isValidPhone:(NSString*)phone{if(phone.length!=11){returnNO;}else{/***移动号段正则表达式*/NSString*CM_NUM=@"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";/***联通号段正则
HanZhiZzzzz
·
2021-06-12 07:00
iOS-
环信好友头像和昵称管理类
内容只为个人学习使用。环信的头像和名称要自己来维护,下面内容只是对头像和名称所使用的一个工具类的封装。直接看代码:CJFriendsCache.h#import#import/*为好友的模型@property(nonatomic,copy)NSString*memberName;@property(nonatomic,copy)NSString*memberNum;@property(nonato
见哥哥长高了
·
2021-06-12 01:58
iOS-
段间距
//行间距/**space行间距设置*label原始label*string需要输入的内容*/+(UILabel*)setLineSpace:(CGFloat)spaceFromLabel:(UILabel*)labelwithString:(NSString*)string;{label.numberOfLines=0;NSMutableAttributedString*attributeStr
拿铁君
·
2021-06-12 01:52
上一页
20
21
22
23
24
25
26
27
下一页
按字母分类:
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
其他