gpt4 book ai didi

objective-c - 我可以将下面的轮胎数组设置为 NSArray 吗?

转载 作者:行者123 更新时间:2023-12-03 17:33:10 25 4
gpt4 key购买 nike

我浏览过网络,但找不到任何可能有帮助的内容。我的问题是我可以将ties[x]数组写为NSArray吗?如果可以的话,声明和分配tire类实例对象的语法是什么?

@interface CarClass : NSObject {
EngineClass *engine;
TireClass *tires[4];
}

.

@implementation CarClass
- (id) init {
[super init];
NSLog(@"_init: %@", NSStringFromClass([self class]));
engine= [[EngineClass alloc] init];
tires[0]= [[TireClass alloc] init];
tires[1]= [[TireClass alloc] init];
tires[2]= [[TireClass alloc] init];
tires[3]= [[TireClass alloc] init];
return self;
}

编辑:

这是我的 CarClass 的 dealloc 方法

- (void) dealloc {
NSLog(@"_deal: %@", NSStringFromClass([self class]));
[engine release];
[tires release];
[super dealloc];
}

对于下面 NSArray 中的保留仍然有点困惑,如果我向 CarClass:init 添加额外的 [轮胎保留],那么轮胎不会被释放。然而,由于现在的代码是轮胎释放,有或没有末端保留(即)

tires = [[NSArray arrayWithObjects:
[[[TireClass alloc] init] autorelease],
[[[TireClass alloc] init] autorelease],
[[[TireClass alloc] init] autorelease],
[[[TireClass alloc] init] autorelease],
nil] retain];

tires = [NSArray arrayWithObjects:
[[[TireClass alloc] init] autorelease],
[[[TireClass alloc] init] autorelease],
[[[TireClass alloc] init] autorelease],
[[[TireClass alloc] init] autorelease],
nil];

最终编辑:我还认为,如果没有单个轮胎上的自动释放,最终在 dealloc 中释放 NSArray 将释放数组及其指向的对象,但情况似乎并非如此。

干杯-加里-

最佳答案

@interface CarClass : NSObject {
EngineClass *engine;
NSArray *tires;
}

.

@implementation CarClass
- (id) init {
self = [super init];
if (self == nil)
return nil;
NSLog(@"_init: %@", NSStringFromClass([self class]));
engine= [[EngineClass alloc] init];
tires = [[NSArray arrayWithObjects:
[[[TireClass alloc] init] autorelease],
[[[TireClass alloc] init] autorelease],
[[[TireClass alloc] init] autorelease],
[[[TireClass alloc] init] autorelease],
nil] retain];
return self;
}

关于objective-c - 我可以将下面的轮胎数组设置为 NSArray 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1454678/

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