__weak是为了解决block的循环引用问题.例如:TRBlockObject *blockObj = [TRBlockObject new];
blockObj.block = ^void(void){
NSLog(@"blockObj%@“,blockObj);
};&nb
原创
2016-06-20 10:26:50
806阅读
block下循环引用的问题 __block本身并不能避免循环引用,避免循环引用需要在block内部把__block修饰的obj置为nil __weak可以避免循环引用,但是其会导致外部对象释放了之后,block 内部也访问不到这个对象的问题,我们可以通过在 block 内部声明一个 __strong
转载
2020-02-05 10:46:00
141阅读
2评论
在MRC下,我们通常使用__block , 而在ARC下我们通常使用__weak , 或者__unsafe_unretaine __block(不安全,不建议使用) 来修饰对象防止循环引用而造成的内存泄露。 一般只用__block和__weak,知道这两个的区别就行了! 解释1: __weak不增加
转载
2017-12-25 11:11:00
94阅读
2评论
近日遇到一个非常细的知识点,关于block的循环引用问题。相比非常多人都遇到了。也能顺利攻克了,至于block方面的技术文章。那就很多其它了。这里不再赘述,可是有这样一个问题: What the difference between __weak and __block reference? 使用场
转载
2017-08-11 12:23:00
124阅读
在基本的开发中遇到 需要弱引用时候 我一般 用 weak 预防 死锁的时候 我会用 block 的确没出过大错 但是这样处理 的确有点囫囵 现在我想好好理解一下这两个修饰符"block中用到的外部变量最好使用 __weak 修饰,避免内存泄露; block容易引起引用循环的根本原因是: 1,对于(block内部用到的)外部变量,对其执行retain 的
转载
2023-07-26 22:48:23
76阅读
本篇文章的主要内容了解何谓block。了解block的使用方法。Block 是iOS在4.0版本之后新增的程序语法.
在iOS SDK 4.0之后,Block几乎出现在所有新版的API之中,换句话说,如果不了解Block这个概念就无法使用SDK 4.0版本以后的新功能,因此虽然Block本身的语法有点难度,但为了使用iOS的新功能我们还是得硬着头皮去了解这个新的程序概念。一、看一看什么是Blo
转载
2023-12-27 10:22:13
117阅读
1.风格纠错题2. 什么情况使用 weak 关键字,相比 assign 有什么不同?什么情况使用 weak 关键字?在 ARC 中,在有可能出现循环引用的时候,往往要通过让其中一端使用 weak 来解决,比如: delegate 代理属性自身已经对它进行一次强引用,没有必要再强引用一次,此时也会使用 weak,自定义 IBOutlet 控件属性一般也使用 weak;当然,也可以使用strong。在
环境:block函数内
先写结论:
在MRC下,我们通常使用__block,而在ARC下我们通常使用__weak, 或者__unsafe_unretaine __block(不安全,不建议使用) 来修饰对象防止循环引用而造成的内存泄露。
注意:
__weak 本身是可以避免循环引用的问题的,但是其会导致外部对象释放了之后,block 内部也访问不到这个对象的问题,我们可以通过在 block
转载
2023-10-16 18:56:00
6阅读
只要学过 iOS 的人,都会对 strong、weak、copy等关键字应该都会很熟悉。weak 属性关键字就是弱引用,它不会增加引用计数但却能保证指针的安全访问,在对象释放后置为 nil,从而避免错误的内存访问。主要为了解决循环引用的问题。接下来,我们会从 objc 库中的 NSObject.mm、 objc-weak.h 以及 objc-weak.mm 文件出发,去具体了解 weak 的实现过
转载
2023-08-31 23:10:13
63阅读
/*
使用了__weak修饰符的对象,作用等同于定义为weak的property。自然不会导致循环引用问题,因为苹果文档已经说的很清楚,当原对象没有任何强引用的时候,弱引用指针也会被设置为nil;
因此,__block和__weak修饰符的区别其实是挺明显的:
1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。
2.__weak只能在A
转载
2023-10-22 21:01:10
53阅读
1我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码:__weak typeof(self) weakSelf = self;
[self doSomeBlockJob:^{
__strong typeof(weakSelf) strongSelf = weakSelf;
if (strongSel
转载
2024-06-12 17:48:35
142阅读
在OC开发中使用 Block时防止循环引用,大家都知道要加 __weak 来防止循环引用,如下面的宏就是为了解决循环引用而添加的/** * 快速生成weak/strong类型的对象 */#define kWeakObject(object) __weak __typeof(object) weakObject = object;#define kWeak(caller, obj
原创
2023-05-22 17:17:34
258阅读
问题分析我看过很多文章关于在dispatch_async的block里面使用_weak self, 但是让我疑惑的是,以下代码是否需要必须使用_weak self, 因为我也看到了很多观点说,在有些情况下不需要使...
转载
2017-02-18 12:33:00
207阅读
2评论
API Reference对__block变量修饰符有如下几处解释://A powerful feature of blocks is that they can modify vari
转载
2016-04-21 14:49:23
61阅读
strong与weak是由ARC新引入的对象变量属性ARC引入了新的对象的新生命周期限定,即零弱引用。如果零弱引用指向的对象被deallocated的话,零弱引用的对象会被自动设置为nil。
转载
2012-05-04 14:49:00
126阅读
2评论
http://docwiki.embarcadero.com/RADStudio/Seattle/en/Automatic_Reference_Counting_in_Delphi_Mobile_Compilers#Weak_ReferencesWeak ReferencesAnother important concept for ARC is the role of weak referenc
转载
2016-01-16 17:02:00
167阅读
2评论
Document
原创
2021-07-28 09:15:45
105阅读
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
原创
2022-06-30 17:45:03
67阅读
iOS 5 中对属性的设置新增了strong 和weak关键字来修饰属性strong 用来修饰强引用的属性;@property (strong) ViewSample * btn; 对应原来的 @property (retain) ViewSample * btn; 和 @property (cop...
转载
2013-05-07 13:32:00
158阅读
2评论
# 实现“js new weak”
## 引言
在 JavaScript 中,我们经常会用到 `new` 关键字来创建一个对象实例。但是,在某些情况下,我们可能需要创建一个弱引用的对象,即 `WeakRef`。本文将向你介绍如何在 JavaScript 中实现 `new WeakRef`。
## 整体流程
首先,让我们通过下面的表格来了解整个流程:
| 步骤 | 描述 |
| --- | -
原创
2024-01-10 03:47:58
25阅读