- 博客(11)
- 收藏
- 关注
原创 OC中链式编程和函数编程思想
oc中的链式编程和函数编程思想下设置对象属性的小技巧最近在重拾Swift,经常会接触一些词汇,链式编程和函数编程,其实这些是一种编程思想,能让我们的代码看起来更优雅和一些其他的用处。其实oc中也可以用到用链式编程和函数式编程,下面就从一些实际例子出发,体会一下这种思想。我们有这样一个需求,为一个对象设置一些属性。拿到这个题目后,so easy,卡卡在.h文件中暴露一些属性。赋值就完了(如下图)typedef void(^finishBlock)(void);@interface A : NS
2020-08-19 17:44:28
305
原创 iOS中hitTest如何扩大一个视图的点击区域。
1.问题:之前在面试时被问到这样一个问题:如何扩大一个给定视图的点击区域,或者说如何让一个视图在当前视图外的子视图也能响应点击事件。2.场景:可能大家不太理解这种问题是什么意思,现在给定场景。我们在开发中经常会遇到这样问题,上传图片的时候,我们选中图片后要删除选中的图片,会在右上角添加一个删除按钮。这时候删除按钮就会有一半,或者全部都出现在当前图片视图的bounds外,导致不好点或者不能点的情...
2018-12-15 15:36:23
1534
原创 OC和Swift下的线程安全属性
最近看了很多关于属性线程安全的问题,即在OC中的atomic和noatomic对线程安全的理解。在property中,默认是atomic原子性的,但我们在属性的定义中一般使用noatomic,因为这种的效率是前者的20倍。但在多线程处理机的今天,我们无可避免的需要面向多线程编程,今天我们就谈谈这个atomic对属性的线程安全到底有多少影响。atomic的线程安全的目标是谁,setter和gette...
2018-04-26 21:25:56
1581
1
原创 GCD信号量的理解和简单的应用(异步等待,结合group实现多个任务的并发和依赖)(swift)
1.理解:DispatchSemaphore,就是一个信号量,这个信号量就相当于一个互斥资源,用来控制异步线程之间的互相等待,达到线程锁的功能,与一般的互斥锁不同,互斥锁是锁住某段代码或资源,保证资源的安全访问。而信号量以自身为资源,达到控制线程相互依赖关系。2.应用1:异步任务的等待。创建一个value为0的信号量,当任务执行完成后,通过signal方法增加1,在主线程或者其他地方通过wait函...
2018-04-26 16:59:06
1271
原创 Swift中闭包的循环引用及改正
循环引用的产生原因:两个对象互相之间强引用,导致互相不能释放,后果就是两个对象都不释放,导致两个对象的内存都不能释放,这就会产生所谓的内存泄露。Swift闭包循环引用产生的两个条件1.对象对闭包强引用,即闭包是对象的属性。2.闭包中对对象强引用,闭包对闭包中的成员变量都会强引用一次。Student的实例对printNum闭包强引用,闭包中又对self进行了强引用。 class Student ...
2018-04-23 20:35:02
454
原创 利用AVFoundtion库实现简单的相机
//1.捕获管理let session = AVCaptureSession()1.一个完整的相机有一个AVCaptureSession管理,它负责从输入设备端捕获输入源,并向输出端输出捕获的数据,所以我们需要初始化一个捕获管理会话AVCaptureSession2.请求权限,并添加输入源:相机需要使用的输入源是摄像头,所以我们需要找到一个AVCaptureDevice的相机实例。并且我们需要在...
2018-04-21 19:56:23
687
原创 2018年3月第二周学习笔记(MVVM代码框架,UIViewController的子类视图控制器,String和SubString
1.对MVVM设计模式的理解,/// 微博首页列表视图模型。(体会视图模型的用法,就是一个处理器,讲复杂的数据处理逻辑,放在这个处理器中处理,处理完成后通过回调通知视图控制器展示UI。一般无特殊情况,有下列几个任务。)/*4个任务 1.负责微博的数据处理(将json数据处理成Model) 2.封装上拉下拉逻辑(在内部定义数据源,page 之类的参数,实现表格的刷新数据请求,请求调用的是其他类的...
2018-03-12 14:25:41
296
原创 <objc/runtime.h>机制下的常用函数(一)
runtime:运行时,是一个c语言库。将我们编写的代码动态的转换成这个库中的函数,结构体,消息等,实现其他语言运行在object-C上。介绍几个函数。1.objc_setAssociatedObject(id object,const void *key,id value,objc_AssociationPolicy policy)id object:表示关联者。const void
2018-01-15 14:49:37
640
原创 对+(void)initialize和+(void)load方法的理解
1.initliaize了解。(系统认识,类方法,只调用一次)调用时机:在此类接受第一个消息时调用父类子类的调用关系:父类和子类中都会调用,先调用父类,在调用子类。(子类中为实现会调用父类的隐式的调用父类的方法来初始化子类)父类和本类的调用关系:调用分类中的实现,忽略本类中的实现(不会都调用)实例:@interface Person:NSObject@end@imp
2018-01-15 11:24:45
1075
1
原创 kvc的理解和应用
kvc,key-value-coding,是一种基于运行时概览的监听,当我们添加监听的时候,runtime会对我们添加的类,生成一个派生类,并重写派生类的set方法,所以,当值改变时,我们可以通过回调方法,来获取new和old值,达到监听某个值得改变的目的。用法:1.监听已知对象的@propety属性 [task addObserver:selfforKeyPa
2017-07-31 13:36:32
382
原创 对自定义类的总结(一般是自定义view)
对于自定义view,有时候一时想不起要怎么写,暴露给外部接口有哪些,要重写什么函数。这里总结一下,给自己一个简单的模板(不针对特殊类).h1.属性的定义,用@property自动实现属性的添加和set get方法的实现2.构造方法的重写(一般包含两个构造方法,一个加方法,一个减方法)减方法:带参数init函数加方法:带参数类方法,m中实现时调研带参init
2017-06-14 15:49:30
257
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅