ARC下的assign和weak区别

2019-06-11  本文已影响0人  芮小妹儿很闲
区别

assign和weak虽然都是弱属性修饰符,但是

代码示例
#import "ViewController.h"

@interface ViewController ()

@property (nonatomic, weak) NSObject *weakObject;
@property (nonatomic, assign) NSObject *assignObject;
@property (nonatomic, strong) NSObject *strongObject;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.strongObject = [NSObject new];
    NSLog(@"strongObject: %@", self.strongObject);
    // 输出结果:strongObject: <NSObject: 0x600002c19da0>
    
    self.assignObject = self.strongObject;
    self.weakObject = self.strongObject;
    self.strongObject = nil;
    
    NSLog(@"weakObject: %@", self.weakObject);
    // 输出结果:weakObject: (null)
    
    NSLog(@"assignView: %@", self.assignObject);
    // 此处会崩溃   
}

@end
总结
上一篇 下一篇

猜你喜欢

热点阅读