加载中
atomic线程安全吗?

对实例变量的读写的确是同步的,也是安全的,读操作的时候不会出现写操作,但是遇到一个线程需要多次读写操作的时候,数据就有可能被其他线程干扰,刚刚赋值进去,读出来的可能不是刚刚的值,...

06/12 10:22
21
深究Block的实现

先看一下Block使用的语法 声明一个block 返回值 (^名称)(参数列表) = ^(参数列表){ };  int (^name)(int ,int) = ^(int a,int b){           return (a+b); }; ...

2017/07/07 14:22
11
NSInvocation的使用

将NSInvocation的用法封装在一个分类里面,任何对象都可以利用这个分类调用自身的方法,用在javascript调用OC代码的时候有很大的用处 #import <Foundation/Foundation.h> @interface NSObje...

2017/03/19 21:26
9
KVO的实现原理

kvo概述 kvo,全称Key-Value Observing,它提供了一种方法,当对象某个属性发生改变时,允许监听该属性值变化的对象可以接受到通知,然后通过kvo的方法响应一些操作。 kvo实现原理 kvo是如何实...

2017/03/19 13:00
6
runtime 如何实现 weak 属性

要实现 weak 属性,首先要搞清楚 weak 属性的特点: weak 此特质表明该属性定义了一种“非拥有关系” (nonowning relationship)。为这种属性设置新值时,设置方法既不保留新值,也不释放旧值...

2017/03/19 12:32
18
weak 的内部实现原理——转自唐巧

在 Friday QA 上,有一期专门介绍 weak 的实现原理。https://mikeash.com/pyblog/friday-qa-2010-07-16-zeroing-weak-references-in-objective-c.html 《Objective-C高级编程》一书中也介绍了...

2017/03/18 23:29
47
对象回收时Weak指针自动被置为nil的实现原理

前言 我们都知道Weak指针不会增加所引用对象的计数,并在引用对象被回收的时候自动被置为nil。通常用于解决循环引用问题。那么,自动被置为nil内部是如何实现的呢? 内部实现 —— Weak表 Ru...

2017/03/18 23:25
7
使用系统的某些block api(如UIView的block版本写动画时),是否也考虑引用循环问题?

系统的某些block api中,UIView的block版本写动画时不需要考虑,但也有一些api 需要考虑: 所谓“引用循环”是指双向的强引用,所以那些“单向的强引用”(block 强引用 self )没有问题,比...

2017/03/14 12:39
83
GCD定时器的使用

int count = 0; - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // 获得队列 // dispatch_queue_t queue = dispatch_get_global_queue(0, 0); dispatch_q...

2017/03/07 21:16
29
iOS开发 关于SEL的简单总结

SEL就是对方法的一种包装。包装的SEL类型数据它对应相应的方法地址,找到方法地址就可以调用方法。在内存中每个类的方法都存储在类对象中,每个方法都有一个与之对应的SEL类型的数据,根据一...

2017/02/21 21:30
6
方法调用过程

如果调用的是对象方法,对象会通过isa指针找到类对象,注册一个方法编号,在通过方法编号找到方法地址,最后通过方法地址去代码区调用方法

2017/02/21 21:27
2
各种情况下block的类型

weak+没有外部引用:__NSGlobalBlock__ weak+局部变量:__NSStackBlock__ weak+全局变量:__NSGlobalBlock__ weak+属性:__NSStackBlock__ assign的情况跟weak一样 copy+没有外部引用:__N...

2017/02/21 14:38
7
block相对于delegate有哪些优缺点?

优点: 回调的block代码块定义在委托对象函数内部,使代码更为紧凑 被委托对象不再需要实现具体某个protocol,代码更为简洁 缺点: delegate运行成本低,block成本很高。block出栈需要将使用...

2017/02/21 07:55
22
对象间的通信之delegate、notificationCenter与block

在项目开发中,常常会涉及到对象之间的通信,而为了降低对象间的耦合,会采用delegate、notificationCenter、block三种方式来进行实现,对于他们的使用,也许大家都能熟练掌握,但是对于如何...

2017/02/20 20:17
6
instancetype和id的异同

1、相同点 都可以作为方法的返回类型 2、不同点 ①instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象; ②instancetype只能作为返回值,不能像id那样作为参数 3、关...

2017/02/20 18:23
5
block对外部变量的内存管理

代码块在ios中通常用于回调,本文主要介绍block对外部变量的管理机制。我们知道如果要在block中使用block外面的变量,如果该变量是局部变量,就要先将其申明为__block类型。为什么呢?这就涉...

2017/02/18 19:44
6
关于图片的加载

//1.有缓存,图片不会被释放 UIImage *img = [UIImage imageNamed:@"1.png"]; //2.没有缓存,图片用完即释放 UIImage *img = [[UIImage alloc] initWithContentOfFile:path]; 如果图片占用内...

2017/02/13 15:47
6
NSString,NSArray,NSMutableArray分别用什么属性修饰,原因是什么?

一般声明NSString和NSArray类型的属性时候,都不希望它会被修改,最好用copy修饰,如果用strong修饰的话,一旦它指向一个可变类型的对象的时候,那么它指向的内容是可以随意被修改的 如果是N...

2017/02/04 22:11
25
autorelease pool的原理

NSAutoreleasePool内部包含一个数组(NSMutableArray),用来保存声明为autorelease的所有对象,如果一个对象被声明为autorelease,系统所做的工作就是把这个对象加入到这个数组中去。NSAutor...

2017/02/04 21:58
7
delegate用什么属性修饰,ARC下与MRC下有什么不同?

delegate为了防止循环引用一般用weak和assign修饰,但这两者是有区别的,比如说A对象的delegate就是一个viewController,并且viewController对A对象也强引用了 如果用weak修饰,那么当viewC...

2017/02/04 10:45
106

没有更多内容

加载失败,请刷新页面

返回顶部
顶部