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

标签 objective-c cocoa

我浏览过网络,但找不到任何可能有帮助的内容。我的问题是我可以将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/

相关文章:

iphone - 多级 nsmutabledictionary 的设置值

cocoa - 防止沙盒应用程序中出现 Cmd+Shift+Q 警报

cocoa - 检测同一 NSView 中两个对象的接近度

ios - 如何通过排除括号来连接NSArray值?

swift - 将文件从应用程序包复制并保存到桌面/其他位置

ios - 使用 objective c ios 在谷歌地图中打开具有多个停靠点的获取方向

ios - 我们如何禁用 future 日期并在 swift 中在日期标签下方传递副标题以及如何使用桥头

objective-c - 向已释放的对象发送消息正在工作

ios - 自定义 TableView 单元格重用代码审查问题

objective-c - 发布正向地理编码多个地址