iOS __weak __strong

在block中常常会用到self,可是会造成循环引用。这时候就需要这样来解决这个问题:

#define WeakSelf __weak __typeof(self) weakSelf = self
#define StrongSelf __strong __typeof(weakSelf) self = weakSelf
- (void)aFunc:(id)sender {

    WeakSelf;//1
    [UIView animateWithDuration:1 animations:^{
        StrongSelf;//2
        [self.view doSomething];//use self
    }];
}
时间: 2024-08-11 03:31:46

iOS __weak __strong的相关文章

iOS __weak 和 __block 的使用探讨

在基本的开发中遇到 需要弱引用时候 我一般 用 weak  预防 死锁的时候 我会用 block 的确没出过大错  但是这样处理 的确有点囫囵  现在我想好好理解一下这两个修饰符 "block中用到的外部变量最好使用 __weak 修饰,避免内存泄露; block容易引起引用循环的根本原因是: 1,对于(block内部用到的)外部变量,对其执行retain 的时机 与该block的执行时机是不同步的,在block声明的时候就对外部变量进行了retain,而block何时执行甚至是否执行都是不可预

iOS __weak学习碰到的疑问

__weak弱引用并不持有对象,所以赋值给__weak修饰符的变量也不会改变计数器的值. main.m id __strong obj3 = nil; id __weak obj1= nil; /* id __weak obj1 = obj; 编译器的模拟代码如下: id obj1; objc_iniitWeak(&obj1,obj); objc_destroyWeak(&obj1); */ @autoreleasepool { id obj = [[NSObject alloc] ini

__weak、__strong这样的关键词和weak、strong有哪些区别

ios4 设备上最好就不要使用 ARC... strong,weak 用来修饰属性.strong 用来修饰强引用的属性:@property (strong) SomeClass * aObject; 对应原来的 @property (retain) SomeClass * aObject; 和 @property (copy) SomeClass * aObject; weak 用来修饰弱引用的属性:@property (weak) SomeClass * aObject; 对应原来的 @pro

iOS: ARC & MRC下string内存管理策略探究

ARC & MRC下string内存管理策略探究 前两天跟同事争论一个关于NSString执行copy操作以后是否会发生变化,两个人整了半天,最后写代码验证了一下,发现原来NSString操作没我们想的那么简单,下面就让我们一起看看NSString和NSMutableString在MRC下执行retain,copy,mutableCopy,以及ARC下不同的修饰__weak, __strong修饰赋值究竟发生了什么. 一.验证代码如下: - (void)testStringAddress { i

iOS中单例模式:MRC和ARC+GCD实现

iOS中单例模式的实现一般分为两种:MRC和ARC+GCD 1.MRC(非ARC) 非ARC的单例的实现方式: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <span style="font-family: 仿宋; font-size: 15px;">#import <Foundation/Foundation.h> @inter

iOS经典面试题 (一)

Objective-C经典面试题 1.Objective-C的类可以多重继承么?可以采用多个协议么?OC语言的基本特点是什么? 不可以多重继承,可以采用多个协议.OC语言的基本特点是: 封装,继承,多态. 2.#import和#include的区别是什么?#import<> 跟 #import""有什么区别? #import能避免头文件被重复包含的问题: (1) 一般来说,导入objective c的头文件时用#import,包含c/c++头文件时用#include. 使用

【对比Android与IOS开发系列】——Activity与UIViewController

对比开发系列 --Activity与UIViewController Activity与UIViewController Android的Activity和Fragment是最基本的界面组成,而IOS是UIViewController.几乎所有的View和空间都会放在Activity和UIViewController中. 在之上有不少扩展的: Android: FragmentActivity, AppCompatActivity IOS: UITableViewController, UICo

iOS对象属性详解

oc对象的一些属性: retain,strong, copy,weak,assign,readonly, readwrite, unsafe_unretained 下面来分别讲讲各自的作用和区别: retain,计数器加1, (增加一个指向内存的指针) 对应release(计数器-1) setter 方法对参数进行 release 旧值再 retain 新值,所有实现都是这个顺序 - (void)setBackView:(UIView *)backView { if (_backView !=

ARC 之 strong and weak---【持续整理】

在iOS开发过程中,MRC情况下,属性的定义往往与retain, assign, copy有关. 在iOS5中新的关键字strong, weak, unsafe_unretained. 可以与以前的关键字对应学习strong与retain类似,weak与unsafe_unretained功能差不多(有点区别,等下会介绍,这两个新 关键字与assign类似).在iOS5中用这些新的关键字,就可以不用手动管理内存了,从java等其它语言转过来的程序员非常受用. __weak, __strong 用来