首页 > 代码库 > ARC中的strong 与 weak
ARC中的strong 与 weak
1.> __strong 和 __weak
Person.h
#import <Foundation/Foundation.h>@class Dog;@interface Person : NSObject{ __strong Dog *_dog; //__weak Dog *_dog;}- (Dog *)dog;- (void)setDog:(Dog *)dog;@end
Dog.h
#import <Foundation/Foundation.h>@interface Dog : NSObject@end
main.m
#import <Foundation/Foundation.h>#import "Dog.h"#import "Person.h"int main(int argc, const char * argv[]) { Person *p = [[Person alloc] init]; Dog *dog = [[Dog alloc] init]; p.dog = dog; dog = nil; NSLog(@"%@",p.dog); return 0;}
如果是__weak 修饰的 打印结果为nil
如果是__strong 修饰的 打印结果正常
因为 __weak 是弱指针,在OC中没有强指针引用的对象会自动释放,当手动清空dog指针时候,__weak指针指向的dog对象就是去了唯一的强指针引用,会被释放。
__weak 相当于 @property(weak) __strong 相当于@property(strong)
ARC中的strong 与 weak
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。