我最近发现了像NSMapTable
and这样的类NSPointerArray
,它们的工作方式类似于传统的集合,但也可以让您存储弱引用或普通的旧 C 指针。不幸的是,您似乎无法使用该for...in
语法来迭代非NSObject
指针。例如:
typedef struct Segment {
CGPoint bottom, top;
} Segment;
...
NSPointerArray *segments = [[NSPointerArray alloc]
initWithOptions:NSPointerFunctionsOpaqueMemory];
...
Segment *s = malloc(sizeof(Segment));
[segments addPointer: s];
...
for (Segment *s in segments) { // nope...
编译器不喜欢最后一行。错误:
选择器元素类型“Segment *”(又名“struct Segment *”)不是有效对象
那么,我需要这样做吗?
for (int i=0, len=segments.count; i<len; i++) {
Segment *seg = [segments pointerAtIndex:i];
...
那不是世界末日,但我只是想确定一下。