3

文档说它在 MacOS 1.08 中可用。

那么故事是什么?iOS5 怎么样?

这是一个非常重要的选择器,因为 self[5] 实际上会变成 [self objectAtIndexedSubscript:5] ,除非我遗漏了什么。

在 NSOrderedSet 中不起作用,但在 NSArray 中起作用。

我错过了什么?

4

4 回答 4

7

虽然objectAtIndexedSubscript:在 iOS 6 之前不可用,但可以使用NSArrayNSDictionary标。这意味着您可以使用如下语法:

myArray[2] = @"thingie";
myDictionary[@"roger"] = @"barry";

它将部署回 iOS 4 。

但是,NSOrderedSet下标在 iOS 5 及之前的版本中不起作用为此,您需要提供一个将objectAtIndexedSubscript:调用重定向到objectAtIndex:.

附录:Apple 的文档NSMutableOrderedSet也不正确。它指出索引下标是插入,而实际上是替换(正如人们所期望的那样)。

于 2012-11-16T00:41:35.137 回答
3

,不幸的是,仅从 iOS 6 开始。

Apple 为 OS X 和 iOS API 提供了单独的文档。您必须检查正确的:objectAtIndexedSubscript:

可用性
适用于 iOS 6.0 及更高版本。

于 2012-11-15T03:34:03.867 回答
1

如果你需要你的代码在 iOS 5 上运行,你需要替换

myOrderedSetOfHilariousAcronyms[2] = @"ROFL";

[myOrderedSetOfHilariousAcronyms setObject:@"ROFL" atIndex:2];
于 2013-01-17T19:32:30.670 回答
0

我查看了 NSOrderedSet.h 文件,我看到了这个:

- (id)objectAtIndexedSubscript:(NSUInteger)idx NS_AVAILABLE(10_8, 6_0);

所以它不适用于IOS5。

于 2012-11-15T03:37:17.117 回答