1、创建block用copy修饰,拷贝到堆上 2、之前一直用这种写法,但会碰到提前释放的状态 __weak typeof(self)wakeself = self; 3、就用弱指针指向self,在block内部对weakSelf产生一个强引用,就解决了提前释放的问题 @weakify(self); ...
分类:
其他好文 时间:
2017-04-24 17:19:59
阅读次数:
134
iOS判断是push还是present下面这种方法判断成功了
if(self.presentingViewController)
{
[weakSelfdismissViewControllerAnimated:YEScompletion:nil];
}
else{
[weakSelf.navigationControllerpopViewControllerAnimated:YES];}
分类:
移动开发 时间:
2017-01-20 21:00:49
阅读次数:
249
1. 在block外面这样:__weak MyController *weakSelf = self 或者 __weak __typeof(self) weakSelf = self;是为了防止强引用导致循环引用2.执行block方法体的时候也可以转换为强引用之后再使用MyController* s ...
分类:
移动开发 时间:
2016-12-21 09:36:30
阅读次数:
250
问题 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: 那么请问:什么时候在 block 里面用 self,不需要使用 weak self? 答案 当 block 本身不被 self 持有,而被别的对象持有,同时 ...
分类:
移动开发 时间:
2016-12-08 09:45:07
阅读次数:
425
问题 继续回答昨天的问题第二问。 我们知道,在使用 block 的时候,为了避免产生循环引用,通常需要使用 weakSelf 与 strongSelf,写下面这样的代码: 那么请问:为什么 block 里面还需要写一个 strong self,如果不写会怎么样? 答案 在 block 中先写一个 s ...
分类:
移动开发 时间:
2016-12-08 09:35:07
阅读次数:
275
循环引用,看我就对了 我是一头来自北方的羊,咩-咩-咩-!谈到循环引用,不知道你能想到什么?可能是delegate为啥非得用weak修饰,可能是block为啥总是需要特殊对待,你也可能仅仅想到了一个weakSelf,因为它能帮你解决99%的关于循环引用的事情。本文中,我将谈一谈我对循环引用的看法。 ...
分类:
其他好文 时间:
2016-12-06 20:06:59
阅读次数:
287
在实际开发中,很多时候都在 block 中使用 weakSelf。那么什么时候需要使用 weakSelf,什么时候又不需要使用呢? 答案:当 block 不再被 self 持有,被其他对象所持有的时候,就不需要使用 weakSelf,举个例子,我们使用 UIView 的动画的时候,也就是 anima ...
分类:
其他好文 时间:
2016-12-02 02:20:28
阅读次数:
128
首先说几点:我一般将数值类型的约束用mas_equalTo,而相对于某个控件,或者某个控件的某个约束,我会使用equalTo,如:make.size.mas_equalTo(CGSizeMake(100, 100));make.center.equalTo(weakSelf.view);setNee ...
分类:
其他好文 时间:
2016-09-13 13:30:57
阅读次数:
811
深入研究Block捕获外部变量和__block实现原理 前言 在上篇中,仔细分析了一下Block的实现原理以及__block捕获外部变量的原理。然而实际使用Block过程中,还是会遇到一些问题,比如Retain Circle的问题。 目录 1.Retain Circle的由来 2.weak、stro ...
分类:
其他好文 时间:
2016-09-09 08:49:42
阅读次数:
410
深入研究Block捕获外部变量和__block实现原理 EOCNetworkFetcher.h typedef void (^EOCNetworkFetcherCompletionHandler)(NSData *data); @interface EOCNetworkFetcher : NSObj ...
分类:
其他好文 时间:
2016-09-09 08:47:38
阅读次数:
721