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

关于NSMutableArray/NSArray类集群,可以安全地假设什么?

  •  0
  • andyvn22  · 技术社区  · 14 年前

    if ([possiblyMutable isKindOfClass:[NSMutableArray class]])
    

    NSMutableArray 或者一个 NSArray ,取决于 possiblyMutable . 使用我的方法的类已经知道是否可以接受更改返回的数组。更改返回的数组是否可接受与更改是否可接受直接相关 可能可变

    在这种情况下,这个代码安全吗?在我看来,如果 更改数组是可以接受的,但是我们意外地得到了一个可变数组,这没关系,因为使用我的方法的类不会尝试更改它。如果是的话 总是 得到 NSMUTABLEARRY可变数组 (尽管这是我不太清楚的部分)。

    所以。。。安全与否?选择?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Dave DeLong    14 年前

    不,一点都不安全。

    NSMutableArray * ma = [NSMutableArray arrayWithObject:@"foo"];
    NSArray * aa = [NSArray arrayWithObject:@"foo"];
    
    NSLog(@"Mutable: %@", [ma className]);
    NSLog(@"Normal: %@", [aa className]);
    

    然后你会得到:


    2010-04-05 13:17:26.956清空基础[55496:a0f]正常:NSCFArray

    NSLog(@"Mutable add: %d", [ma respondsToSelector:@selector(addObject:)]);
    NSLog(@"Normal add: %d", [aa respondsToSelector:@selector(addObject:)]);
    

    因为它记录了:


    2010-04-05 13:18:35.351清空基础[55525:a0f]正常添加:1

    -mutableCopy