iOS内存管理笔记

1.用 alloc/new/copy/mutableCopy 以外的方法取得的对象,非自己生成并持有的对象。

2.引用计数:

  • __strong
1
2
3
4
{
id __string obj = [[NSObject alloc] init];
NSLog(@"retain count = %d", _objc_rootRetainCount(obj));
}

对象仅通过变量obj的强引用被持有,所以打印为1

  • __weak
1
2
3
4
5
{
id __string obj = [[NSObject alloc] init];
id __weak o = obj;
NSLog(@"retain count = %d", _objc_rootRetainCount(obj));
}

弱引用并不持有对象,所以赋值给附有__weak修饰符的变量不会改变引用计数的数值,打印为1

  • __autoreleasing
1
2
3
4
5
{
id __string obj = [[NSObject alloc] init];
id __autoreleasing o = obj;
NSLog(@"retain count = %d", _objc_rootRetainCount(obj));
}

对象被附有__strong修饰符变量的强引用所持有,并且被注册到autoreleasepool中,所以打印为2

Newer Post

iOS 10前后推送的区别

处理远程推送消息的几种情况app在前台时在 iOS9 下调用:1- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 在 iOS10 下调用:123 …

note 继续阅读
Older Post

Welcome To Lyons Land

Welcome To Lyons Land. …

introduce 继续阅读