gpt4 book ai didi

ios - 使用 ARC 时 NSArray 或 NSMutableArray 可能发生内存泄漏

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:09:02 26 4
gpt4 key购买 nike

<分区>

BKObject 是一个自定义对象,我想将多个 BKObject 放入一个数组中。

BKViewController:

#import <UIKit/UIKit.h>
#import "BKObject.h"

@interface BKViewController : UIViewController

@property (strong, nonatomic) NSArray *data;
@property (weak, nonatomic) BKObject *tmpObject;

@end

BKViewController.m:

#import "BKViewController.h"

@implementation BKViewController

- (void)viewDidLoad
{
[super viewDidLoad];

NSMutableArray *arr = [[NSMutableArray alloc] init];
for(NSInteger i = 0; i < 100000; i++){
[arr addObject:[[BKObject alloc] initWithName:@""]];
}

self.data = [NSArray arrayWithArray:arr];

__weak BKObject *weakMutableObject = arr[0];
[arr removeAllObjects];
NSLog(@"%@", weakMutableObject); // print out the object, why?

__weak BKObject *weakObject = self.data[0];
self.data = nil;
NSLog(@"%@", weakObject); // print out the object again, but why?


self.tmpObject = [[BKObject alloc] initWithName:@""];
NSLog(@"%@", self.tmpObject); // print null, very clear

}


@end

我很好奇为什么前 2 个 NSLog 消息显示一个对象而不是 null(就像在最后一个 NSLog 中一样)。我正在使用带有 iOS 7 SDK 的最新 Xcode 5.0.1。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com