文档说它在 MacOS 1.08 中可用。
那么故事是什么?iOS5 怎么样?
这是一个非常重要的选择器,因为 self[5] 实际上会变成 [self objectAtIndexedSubscript:5] ,除非我遗漏了什么。
在 NSOrderedSet 中不起作用,但在 NSArray 中起作用。
我错过了什么?
文档说它在 MacOS 1.08 中可用。
那么故事是什么?iOS5 怎么样?
这是一个非常重要的选择器,因为 self[5] 实际上会变成 [self objectAtIndexedSubscript:5] ,除非我遗漏了什么。
在 NSOrderedSet 中不起作用,但在 NSArray 中起作用。
我错过了什么?
虽然objectAtIndexedSubscript:
在 iOS 6 之前不可用,但可以使用NSArray
下NSDictionary
标。这意味着您可以使用如下语法:
myArray[2] = @"thingie";
myDictionary[@"roger"] = @"barry";
它将部署回 iOS 4 。
但是,NSOrderedSet
下标在 iOS 5 及之前的版本中不起作用。为此,您需要提供一个将objectAtIndexedSubscript:
调用重定向到objectAtIndex:
.
附录:Apple 的文档NSMutableOrderedSet
也不正确。它指出索引下标是插入,而实际上是替换(正如人们所期望的那样)。
不,不幸的是,仅从 iOS 6 开始。
Apple 为 OS X 和 iOS API 提供了单独的文档。您必须检查正确的:objectAtIndexedSubscript:
。
可用性
适用于 iOS 6.0 及更高版本。
如果你需要你的代码在 iOS 5 上运行,你需要替换
myOrderedSetOfHilariousAcronyms[2] = @"ROFL";
和
[myOrderedSetOfHilariousAcronyms setObject:@"ROFL" atIndex:2];
我查看了 NSOrderedSet.h 文件,我看到了这个:
- (id)objectAtIndexedSubscript:(NSUInteger)idx NS_AVAILABLE(10_8, 6_0);
所以它不适用于IOS5。