自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

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