![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Objective-c
文章平均质量分 81
GY-93
这个作者很懒,什么都没留下…
展开
-
UICollectionView获取当前item的NSIndexPath问题
UICollectionView获取当前item的NSIndexPath问题原创 2023-01-03 16:59:44 · 818 阅读 · 0 评论 -
IOS侧滑返回和滑动视图的之间的冲突
IOS侧滑返回和滑动视图的之间的冲突原创 2022-03-30 17:36:00 · 3110 阅读 · 0 评论 -
IOS-layoutSubviews方法的调用时机
IOS-layoutSubviews方法的调用时机前言layoutSubviews调用时机setNeedsLayout 和 layoutIfNeededaddSubview改变view的size大小需要注意点前言最近在开发项目的过程中,修改以前的布局代码,之前单独设置上、下、宽度、高度,的值是正常,但是我改成设置空间的frame之后,程序运行发生了死循环, 最后找到子控件的layoutSubviews方法中设置自身的高度,然后再父视图,我又设置了该控件的frame。子控件的代码:在运行之后,展示该原创 2022-02-22 13:50:16 · 4152 阅读 · 0 评论 -
Flutter学习-打包和发布
Flutter学习-打包和发布1. Android的打包和发布1.1 基本信息的配置1.1.1 版本信息1.1.2 用户权限配置1.2 应用程序签名1.2.1 创建一个密钥库1.2.2 在app中引用秘钥库1.2.3 在gradle中配置签名1.3 打包引用程序1.4 发布应用程序2 IOS程序发布1. Android的打包和发布1.1 基本信息的配置之前我们学习程序的配置信息时,我们介绍过这些信息,这里的话我们就不做过多的介绍应用的AppID应用的名称应用的icon应用的launcher原创 2021-12-31 13:51:36 · 1682 阅读 · 0 评论 -
setValue和setObject的区别
setValue和setObject的区别1.1 `setValue: forKey:`的定义1.2`setObject: forKey:`的定义1.3 区别1.4 注意大家在使用NSMutableDictionary经常会使用setValue: forKey:与setObject: forKey:,这两个方法经常是交替使用的,代码中其实两个方法都有使用1.1 setValue: forKey:的定义官方文档解释:官方文档描述:该方法增加一个value和key会调用setObject: forKe原创 2021-12-29 10:31:40 · 1626 阅读 · 0 评论 -
IOS- 时间格式转换问题(12小时和24小时的区别)
IOS时间格式区别问题:使用NSDateFormatter 进行NSString和NSDate对象转换时,格式字符串中使用“hh”,在iOS设备 日期与时间设置项中24小时制设置项处于关闭的设置下,小时 大于12的NSString对象转换成NSDate对象时会返回nil。时间格式的含义:yy表示Year, Y表示Week Year,计算方式不一样,通常使用【y】MM是为了和分钟的m区分,Month in yeardd是Day in month,D是Day in yearHH是24小时制Hou原创 2021-12-24 15:21:50 · 4770 阅读 · 0 评论 -
IOS中触摸事件学习
IOS中触摸事件学习1. 事件的声明周期2. 系统相应阶段3. APP响应阶段4. 触摸、事件、响应者4.1 UITouch(触摸)4.2 UIEvent(事件真身)4.3 UIResponder(响应者)5. 寻找事件的最佳响应者(Hit-Testing)5.1 事件自下而上的传递5.2 Hit-Testing的本质5.3 Hit-Testing过程中的事件拦截(自定义事件流向)5.4 事件的响应以及在响应链中的传递5.4.1 事件响应的前奏5.4.2 事件的响应5.4.3事件的传递(响应链)5.4.4原创 2021-10-29 16:41:43 · 1654 阅读 · 0 评论 -
IOS中数组值传递问题
1. swift中Array的值传递问题Array是个结构体,就是值类型,值类型传递传递的是值,修改传递过去的值不会改变原来的值当Array中的元素是值类型时候, 那么就是值传递当Array中的元素是引用类型时,那么传递方式就是引用传递...原创 2021-10-26 13:17:20 · 1346 阅读 · 0 评论 -
OC底层学习-性能优化、架构设计
性能优化原创 2020-11-17 15:19:57 · 392 阅读 · 0 评论 -
OC底层学习-内存管理
内存管理1. 定时器面试题使用CADisplayLink、NSTimer有什么注意点?介绍下内存的几大区域?讲一下你对IOS的内存管理的理解autorelease在什么时候回被释放方法里有局部对象,出了方法后会立即释放吗ARC都帮我们做了什么?weak指针的实现原理1. 定时器面试题使用CADisplayLink、NSTimer有什么注意点?介绍下内存的几大区域?讲一下你对IOS的内存管理的理解autorelease在什么时候回被释放方法里有局部对象,出了方法后会立即释放吗ARC都帮我们做了原创 2020-11-12 22:11:55 · 276 阅读 · 0 评论 -
OC底层学习-多线程
多线程1. GCD1.1 IOS中常见的多线程方案1.2 GCD的常用函数1.3 GCD的队列1.4 GCD内线程死锁问题1.4.1 同步队列添加同步任务1.4.2 同步队列添加异步任务1.4.3 同步队列异步任务添加同步任务1.4.4 异步任务添加同步任务(不同队列添加)1.4.5 异步任务添加同步任务(并发队列)面试题你理解多线程?IOS多线程方案有哪几种?你更倾向于哪一种?你在项目中用过GCD吗?GCD的队列类型说一下OperationQueue和GCD的区别,以及各自的优势线程安全的处理手段有哪些?原创 2020-11-04 22:14:31 · 374 阅读 · 0 评论 -
OC底层学习-RunLoop
顾名思义: 运行循环,在程序运行过程中循环做一些事情应用范畴:定时器(Time)、事件响应、手势识别、界面刷新网络请求AutoreleasePool(自动释放池)上述这些技术都是基于RunLoop实现的如果没有RunLoop,程序执行完代码就会退出程序,如://命令行程序默认没有RunLoop 执行完代码就退出");return 0;如果有了RunLoop,程序并不会马上退出,而是保持运行状态RunLoop的基本作用:保持程序持续运行。原创 2020-10-30 11:32:51 · 251 阅读 · 0 评论 -
OC底层学习-Runtime
OC底层学习-Runtime1. 概述2.Runtime之 isa指针2. 面试题1. 概述Objective-C是一门动态性比较强的编程语言,跟C、C++等语言有着很大的不同Objective-C的动态性是由Runtime API来支撑的Runtime API提供的接口基本都是C语言的,源码由C\C++\汇编语言编写2.Runtime之 isa指针要想学习Runtime,首先需要了解底层的一些常用的数据结构,比如isa指针在arm64架构之前,isa就是 一个普通的指针,储存着Cla原创 2020-10-27 15:55:45 · 323 阅读 · 1 评论 -
UITableViewCell嵌套UICollectionView,Cell自适应高度问题
UITableViewCell嵌套UICollectionView,Cell自适应高度问题有一个需求要求UITableViewCell中嵌套一个UICollectionView,然后cell的高度需要自动适应,在这个问题纠结了好久,网上找了许多资料,但是最终结果不如任意。最终找到一种方法,试用之后效果完美。网上许多人都说这两种方法是可以自动适应高度的(图片网上找,自己懒得截图):但是经过我测试之后,发现上面的两种方法, 不管我是使用masory和XIB布局 ,结果发现都是不可以的, 第一次进去原创 2020-09-11 11:00:17 · 3385 阅读 · 1 评论 -
OC底层学习-Block
OC底层学习-Block面试题block的原理是怎么样的?本质是什么?_block的作用是什么?有什么使用注意点?block的属性修饰词为什么是copy?使用block有哪些注意点?block在修改NSMutableArray.需不需要添加_blcok?block本质上也是一个OC对象,它内部也有个isa指针block是封装了函数调用以及函数调用环境的OC对象block的底层架构如图所示block的本质:面试题block的原理是怎么样的?本质是什么?_block的作用是什么?有什么使用注意原创 2020-09-08 23:06:23 · 229 阅读 · 0 评论 -
OC底层学习-Category
OC底层学习-Category1. Category1.1分类的简单引用场景面试题Category的使用场合是什么?Category的实现原理?Category和 Class Extension的区别是什么?Category中又load方法吗?load方法是在什么时候调用的?load方法能继承吗?load、initialize方法的区别是什么?它们在category中的调用顺序?以及出现继承他们之间的调用过程?Category能否添加成员变量?如果可以,如何给Category添加成员变量?1. Categ原创 2020-08-11 20:18:21 · 197 阅读 · 0 评论 -
OC底层学习-KVC
OC底层学习-KVC1 KVC的本质1.1 通过KVC赋值会不会触发KVO?1.2 setValue:forKey:的原理2. 面试题2.1 通过KVC修改属性会触发KVO么?2.2 KVC的赋值和取值过程是怎么样的?原理是什么?KVC的全称是Key-Value Coding,俗称"键值编码",可以通过一个key来访问某个属性.常见的API:- (void)setValue:(nullable id)value forKey:(NSString *)key 设置值- (void)setValue原创 2020-08-03 22:19:00 · 227 阅读 · 0 评论 -
OC底层学习-KVO的本质
OC底层学习-KVO的本质1.什么是KVO?1.1 KVO的本质分析1.2 KVO的本质验证1.2.1 class对象验证1.2.2 方法验证面试题IOS用什么方式实现一个对象的KVO?(KVO的本质是什么?)如何手动触发KVO?1.什么是KVO?KVO的全称是Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变1.1 KVO的本质分析创建一个简单的KVO监听实例:@interface GYPerson : NSObject/** <#descrpti原创 2020-08-03 19:52:38 · 215 阅读 · 0 评论 -
OC底层学习-对象的本质
OC学习-对象的本质1. OC对象的本质1.1结构的内存对齐1.2 怎么把OC类通过终端转换成C++文件1.3 查看源码1.4面试题:一个NSObject的对象占多少内存?1.5实时查看内存数据1.6 常用的LLDB指令1.7 示例-验证-结论2 .Instance对象2.1 instance对象2.2 Class对象2.3 meta_class元类对象2.4 isa指针2.5 .面试题2.5.1 对象的isa指针指向哪里2.5.1 OC的类信息存放在哪里?2.5 答疑1. OC对象的本质OC代码经过原创 2020-08-02 15:46:36 · 335 阅读 · 1 评论 -
IOS之XIB结合UIView制作自定义组件
IOS之XIB结合UIView制作自定义组件这里实现一个简单的进度条组件。用户可以自由设置进度条的进度、尺寸、文字颜色、进度条颜色、背景颜色。不同的是,我们这里创建的时候引入 xib 文件来实现布局。1.定义一个ProgressView继承自UIView,由于继承自UIview ,XIB文件无发直接勾选创建,我们需要自己创建一个XIB文件ProgressView.xib...原创 2020-07-14 11:13:15 · 928 阅读 · 0 评论 -
OC之学习问题集
OC之学习问题集系统常用方法1.Class2.URL2.1 字符串太长转URL不全问题3.TextView3.1 Textview放弃第一响应者4.XIB4.1 xib添加手势报错5.属性5.1 属性的读写系统常用方法1.Class是否是某个类或子类的实例- (BOOL)isKindOfClass:(Class)aClass;用来判断是否是某个类的实例- (BOOL)isMe...原创 2020-05-27 17:11:42 · 485 阅读 · 0 评论 -
IOS中assign、retain、copy、strong、weak以及nonatomic的含义
IOS中assign、retain、copy、strong、weak以及nonatomic的含义我们在声明@property 属性时,总是要在括号中写上assign、retain、copy、weak、strong中的一个,很多时候,我们仅仅只是按照习惯去写经常写的那一个,但有时候看代码时又会发现别人用的不尽相同,那这些之间的区别是什么呢?assign:assign一般用来修饰基本的数据类型,包括基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double,原创 2020-05-14 21:31:59 · 284 阅读 · 0 评论 -
IOS之定时器
IOS之定时器NSTimer在开发中我们经常用到定时器,IOS为我们提供了很多种定时器,NSTimer、CADisplayLink、GCD、NSThread(performSelector:afterDelay),其本质都是通过RunLoop来实现的。这里记录一下学习定时的记录。NSTimerIOS中最基本的定时,在swift中成为Timer.其通过RunLoop来实现,一般情况下比较准确,但是当前循环耗时操作较多时,会出现延迟问题。同时也受加入的RunLoopModel影响。(如果直接创建使用,原创 2020-05-14 21:14:30 · 520 阅读 · 0 评论 -
IOS之多线程基础(OC)
IOS之多线程基础基本概念理解并行和并发并发和并行是即相似又有区别(微观概念)进程和线程进程线程进程和线程的区别线程调度多线程NSThread类方法创建NSThread实例方法创建NSThread实例@synchornized(object){}NSLOCKGCD队列和任务执行同步执行串行队列任务异步执行串行队列任务同步执行并行队列任务异步执行并行队列任务全局队列 和主队列全局队列主队列GCD常用...原创 2020-05-01 11:54:14 · 348 阅读 · 0 评论 -
IOS开发之Socket简介
IOS开发之Socket同一时刻一个端口只能建立一个链接,但是一个端口可以监听多个请求。(当发送一个请求时,服务器会生成一个队列来保存这些个请求)数据传递: 应用层把数据给传输层,有时候传输的数据比较大,传输层不会立即把数据丢出去,在这个过程中,传输层会有一个缓冲区,存放数据。有时候因为网络的原因,数据不能及时的发出去,然后就会数据累计,会造成粘包现象避免这种情况,我们需要自定义数据格式...原创 2020-04-26 10:38:00 · 164 阅读 · 0 评论 -
IOS之循环引用
内存分配区静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。堆区:亦称动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,...原创 2020-04-06 11:01:16 · 327 阅读 · 0 评论 -
OC之Runtime消息的转发和交换,字典模型的互转
Runtime消息转发Method Swizzling(方法交换)字典模型互转字典转模型模型转字典自定义KVO消息转发我们在OC中调用方法的时候,其实是在给一个对象发送一个消息// OC调用方法[Person new] sendMessage:@"message"];//实质转换成底层方法执行// objc_msgSend(void /* id self, SEL op, ... */...原创 2019-10-30 09:15:53 · 185 阅读 · 0 评论