typeof(self) 的作用

block对于其变量都会形成strong reference,对于self也会形成strong reference
,而如果self本身对block也是 strong reference 的话,就会形成 strong reference
循环,造成内存泄露,为了防止这种情况发生,在block外部应该创建一个week(__block)
reference。

所以在block内如果有self的话,一般都会在block外面加一句_block
typeof(self)bself = self;

__block typeof(self) bself =
self;  
  
[self
methodThatTakesABlock:^
{  
  
    [bself
doSomething];  
}

typeof(self) 的作用,布布扣,bubuko.com

时间: 2024-10-09 11:09:11

typeof(self) 的作用的相关文章

typeof关键字的作用

http://blog.chinaunix.net/uid-28458801-id-4200573.html 一.typeof详解: 前言:    typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常广泛.(其实这和C++的auto关键字和可以推断decltype关键字相当类似) 二.实例: 1,把y定义成x指向的数据类型: typeof(*x) y; 2,把y定义成x指向数据类型的数组: typeof(*x) y[4]; 3,把y定义成一个字符指针数组:        

引用传递与值传递

一.ECMAScript中的数据类型 1.基本数据类型:null.undefined.number.boolean.string 2.引用数据类型:object(obj.[].{}.function.RegExp等),是由一组无序的名值对组成的 3.typeof与instanceof作用: typeof是用来检测这些基本数据类型的: 返回"underfined",表示这个值只是被声明了,却没有给其定义,也可以理解为没有赋值 返回"boolean"表示这个值是布尔值,

C语言之offset_of宏和container_of宏

通过结构体整体变量来访问其中各个元素,本质上是通过指针方式来访问的,形式上是通过.的方式来访问的(这时候其实是编译器帮我们自动计算了偏移量). 1:offset_of宏 作用:计算结构体中某个元素和结构体首地址的偏移量(其实质是通过编译器来帮我们计算). 定义: #define offsetof(TYPE, MEMBER) ((int) &((TYPE *)0)->MEMBER) 参数分析:TYPE是结构体类型,MEMBER是结构体中一个元素的元素名 返回值:member元素相对于整个结构体

C语言之offsetof宏和container_of宏

首先我们要明白一点通过结构体变量来访问结构体中的各个元素时,其本质上是 通过指针的方式来实现访问的,只不过是这个时候编译器帮自动帮我们计算了每个 元素与结构体起始地址之间的偏移量而已 一:offsetof宏: #define offsetof(TYPE, MEMBER) ((int) &((TYPE *)0)->MEMBER) 1:参数与返回值分析: (1)TYPE是结构体类型,MEMBER是结构体中一个元素的元素名 (2)这个宏返回的是member元素相对于整个结构体变量的首地址的偏移量,

Javascript中String的valueOf方法

今天看了Javascript的基础教程,其中说了一个关于typeof的问题.typeof运算符的作用就是返回一个变量的类型,如果变量是一个数字,则返回number. 如果是字符串,则返回string, 布尔类型则返回boolean, 函数则返回function, 如果变量是null或者其他Javascript对象,就返回object. 未定义就返回undefined. 如果要判断变量存在,而且是一个字符串的话:给出的判断语句是: if( (typeof unknownVariable != "u

201506081340_《JavaScript秘密花园》

1. typeof的唯一作用:检测变量是否已定义.例如: typeof foo !== 'undefined' 此外,推荐使用:Object.prototype.toString();进行检测变量类型. 2.instanceof 操作符应该仅仅用来比较来自同一个 JavaScript 上下文的自定义对象. new String('foo') instanceof String; // true new String('foo') instanceof Object; // true 'foo'

offsetof与container_of宏分析

offsetof宏:结构体成员相对结构体的偏移位置 container_of:根据结构体成员的地址来获取结构体的地址 offsetof 宏 原型: #define offsetof(TYPE, MEMBER) ((size_t)&((TYPE *)0)->MEMBER) (TYPE *)0非常巧妙,告诉编译器有一个指向结构体 TYPE 的指针,其地址是0,然后取该指针的 MEMBER 地址 &((TYPE *)0)->MEMBER,因为基址是0,所以这时获取到的 MEMBER

嵌入式开发知识点总结

offsetof和container_of宏 offsetof宏的作用:计算结构体中某个元素相对结构体首地址的偏移量 container_of宏的作用:知道结构体变量中某个成员的指针,反推这个结构体变量的指针 #include <stdio.h> #define offsetof(type,member) ((int) &((type *)0)->member) #define container_of(ptr,type,member) ({ const typeof(((typ

offsetof宏与container_of宏

offsetof宏与container_of宏1.由结构体指针进而访问各元素的原理(1)通过结构体整体变量来访问其中各个元素,本质上是通过指针方式来访问的,形式上是通过.的方式来访问的(这个时候其实是编译器帮我们自动计算了偏移量).2.offsetof宏: #define offsetof(TYPE, MEMBER) ((int)&( (TYPE *)0)->MEMBER )(1)offsetof宏的作用是:用宏来计算结构体中某个元素和结构体首地址的偏移量(其实质是通过编译器来帮助我们计算)