代码之家  ›  专栏  ›  技术社区  ›  fuzzygoat

NSArray initWithObjects:保留对象吗?

  •  3
  • fuzzygoat  · 技术社区  · 14 年前

    // CREATE DRINKS
    Coffee *drink1 = [[Coffee alloc] initWithName:@"Flat White"];
    Coffee *drink2 = [[Coffee alloc] initWithName:@"Cappucino"];
    Coffee *drink3 = [[Coffee alloc] initWithName:@"Latte"];
    Coffee *drink4 = [[Coffee alloc] initWithName:@"Mocha"];
    Coffee *drink5 = [[Coffee alloc] initWithName:@"Hot Chocolate"];
    
    // SET ARRAY
    NSArray *tempArray = [[NSArray alloc] initWithObjects:drink_1, drink_2, drink_3, drink_4, drink_5, nil];
    [self setCoffeeList:tempArray];
    
    // CLEAN UP
    [drink_1 release];
    [drink_2 release];
    [drink_3 release];
    [drink_4 release];
    [drink_5 release];
    [tempArray release];
    [super viewDidLoad];
    

    加里干杯

    2 回复  |  直到 14 年前
        1
  •  5
  •   Brandon Frohbieter    14 年前

    initWithObjects保留数组中的所有项。

    initWithObjects:计数:

    • 可用性:OpenStep

    子类必须重写此方法。 这应该使用count(可能为零)对象初始化数组。 保留放置在阵列中的每个对象。 Calls-init(除了保持MacOS-X兼容性之外什么都不做),需要在子类中重新实现,以便让所有其他初始化程序都能工作。

        2
  •  4
  •   Chuck    14 年前

    预期对象将拥有它们需要保留的东西。数组负责其项,因此它保留这些项。见 memory management guide 完整的细节。(不,说真的,读一下。当你不必问这个关于你所使用的每门课的问题,而且你的程序不是每五秒钟就崩溃一次时,你会感谢你自己的。)