__weak与__block区别,深层理解两者区别

发布时间:2017-3-24 0:36:39 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"__weak与__block区别,深层理解两者区别 ",主要涉及到__weak与__block区别,深层理解两者区别 方面的内容,对于__weak与__block区别,深层理解两者区别 感兴趣的同学可以参考一下。

__weak与__block区别,深层理解两者区别

准备工作

首先我定义了一个类 MyObject 继承 NSObject,并添加了一个属性 text,重写了description方法,返回 text 的值。这个主要是因为编译器本身对 NSString 是有优化的,创建的 string 对象有可能是静态存储区永不释放的,为了避免使用 NSString 引起一些问题,还是创建一个 NSObject 对象比较合适。

另外我自定义了一个 TLog 方法输出对象相关值,定义如下:

#define TLog(prefix,Obj) {NSLog(@"变量内存地址:%p, 变量值:%p, 指向对象值:%@, --> %@",&Obj,Obj,Obj,prefix);}

__weak

我们测试下面一段代码


MyObject *obj = [[MyObject alloc]init];
obj.text = @"my-object";
TLog(@"obj", obj);

__weak MyObject *weakObj = obj;
TLog(@"weakObj", weakObj);

void(^testBlock)() = ^(){
TLog(@"weakObj - block", weakObj);
};
testBlock();
obj = nil;
testBlock();

上一篇:问题-MyBatis不识别Integer值为0的数据
下一篇:代码的坏味道(19)——狎昵关系(Inappropriate Intimacy)

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款