2

我知道新的文字和访问器,比如

id obj = [dict objectForKey:@"keyStr"];

相当于

id obj = dict[@"keyStr"];

我注意到主要课程的一些变化,比如

+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(NSUInteger)cnt;

但什么是(const id [])?

我如何使用 [ ] 运算符创建自己的课程

这基本上是运算符重载,我认为这在 ObjectiveC 中是不可能的,是否有可能重载其他运算符,如 +、/、- 等...

运算符重载在 C++ 中是可能的,这是否意味着我可以将它用作 Objective-C++ 类?

4

2 回答 2

2

const id []

只是一个数组的类型声明const id

它相当于:

const int a[]

对于id类型。

于 2012-10-23T10:47:53.217 回答
2

const id []只是一个constObjective-C 对象的 C 数组。该方法处理NSDictionary从字典文字 - 的构造@{ @"a": @1 }。这不是你要找的。

使用is subscriptingX通过对象内部的键访问对象。somethingsomething[X]

如果您希望您的类支持下标,则实现- (id)objectAtIndexedSubscript:(NSUInteger)idx是否要采用整数和- (id)objectForKeyedSubscript:(id)key是否要采用对象。有关更多信息,请参阅此功能的 clang(“LLVM 编译器”)文档

setter 的对应方法是- (void)setObject:(id)anObject atIndexedSubscript:(NSUInteger)index- (void)setObject:(id)object forKeyedSubscript:(id<NSCopying>)aKey

于 2012-10-23T10:48:28.517 回答