weakSelf 和 strongSelf

cell下载图片的时候会崩溃:

什么时候使用weakSelf?

参考这篇博客: http://ios.jobbole.com/88708/

block避免循环循环引用

什么时候使用strongSelf?

在block中多次使用Self的属性,方法,为了避免self变成nil(因为weak修饰的变量在不用的时候会自动把这个变量设置为nil) 造成崩溃,使用完毕self还会置为nil

参考AFNetworking的写法

打破循环引用的方法:

1. 使用Weak

2. 手动置为nil

时间: 2024-11-05 02:22:30

weakSelf 和 strongSelf的相关文章

block里的self、weakSelf、strongSelf

转自  http://www.cnblogs.com/zhang-chi/p/5532272.html ARC下,关于block里面使用self.weakSelf.strongSelf,理解一直没有特别的透彻,今天花时间研究了一下,总结如下: 其实一共就涉及到两个问题: 1.是否循环引用了 2.block里面的代码,不一定执行到哪行时,VC可能就释放了,self就为nil了,那么你到底想让代码在这种情况下如何执行. 其实到底用self.weakSelf还是strongSelf,就是上面两个问题的

深入研究Block用weakSelf、strongSelf、@weakify、@strongify解决循环引用(上)

深入研究Block捕获外部变量和__block实现原理 前言 在上篇中,仔细分析了一下Block的实现原理以及__block捕获外部变量的原理.然而实际使用Block过程中,还是会遇到一些问题,比如Retain Circle的问题. 目录 1.Retain Circle的由来 2.weak.strong的实现原理 3.weakSelf.strongSelf的用途 [email protected].@strongify实现原理 一. Retain Circle的由来 循环引用的问题相信大家都很理

深入研究Block用weakSelf、strongSelf、@weakify、@strongify解决循环引用(下)

深入研究Block捕获外部变量和__block实现原理 EOCNetworkFetcher.h typedef void (^EOCNetworkFetcherCompletionHandler)(NSData *data); @interface EOCNetworkFetcher : NSObject @property (nonatomic, strong, readonly) NSURL *url; - (id)initWithURL:(NSURL *)url; - (void)star

weakSelf和strongSelf

__weak typeof(self)weakSelf=self; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ __strong typeof(weakSelf)strongSelf=weakSelf; [strongSelf doSomething]; }); weak typeof(self)weakSelf=self;

关于block中使用weakSelf和strongSelf的问题

有时候我们会碰到这种情况, __weak typeof(self) weakSelf = self; [obj block:^(){ __strong typeof(weakSelf)strongSelf = weakSelf; }]; 我们都知道第一句是为了解决block的循环引用问题,那么在block中的语句是干什么用的呢? 网上查阅资料知道: 在block中调用self会引起循环引用,但是在block中需要对weakSelf进行 strong,保证代码在执行到block中,self不会被释

weakSelf 运用 strongSelf来解决block的循环引用

SDWebImage 中有一段源码: #if SD_UIKIT Class UIApplicationClass = NSClassFromString(@"UIApplication"); BOOL hasApplication = UIApplicationClass && [UIApplicationClass respondsToSelector:@selector(sharedApplication)]; if (hasApplication &&am

到底什么时候才需要在ObjC的Block中使用weakSelf/strongSelf

到底什么时候才需要在ObjC的Block中使用weakSelf/strongSelf Objective C 的 Block 是一个很实用的语法,特别是与GCD结合使用,可以很方便地实现并发.异步任务.但是,如果使用不当,Block 也会引起一些循环引用问题(retain cycle)—— Block 会 retain ‘self’,而 ‘self‘ 又 retain 了 Block.因为在 ObjC 中,直接调用一个实例变量,会被编译器处理成 ‘self->theVar’,’self’ 是一个

_weak typeof(self) weakSelf = self;

_weak typeof(self) weakSelf = self; (一)内存管理原则 1.默认strong,可选weak.strong下不管成员变量还是property,每次使用指针指向一个对象,等于自动调用retain(), 并对旧对象调用release(),所以设为nil等于release. 2.只要某个对象被任一strong指针指向,那么它将不会被销毁,否则立即释放,不用等runloop结束.所有strong指针变量不需要在dealloc中手动设为nil,ios会自动处理,debug

iOS 面试题(三):为什么 weakSelf 需要配合 strong self 使用 --转自唐巧

问题 继续回答昨天的问题第二问. 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: __weak typeof(self) weakSelf = self; [self doSomeBackgroundJob:^{ __strong typeof(weakSelf) strongSelf = weakSelf; if (strongSelf) { ... } }]; 那么请问:为什么 block 里面还需要写