Ale*_*ray 6 metaclass class objective-c subscript nsobject
在...的脉络中
@implementation MyClass
- (id) objectForKeyedSubscript:(id)k {
return [self something:k];
}
Run Code Online (Sandbox Code Playgroud)
是否也可以“下标”Class对象?我也即将和你一起发现......但我想我会在测试时发布这个问题,我自己......
+ (id) objectForKeyedSubscript:(id)k {
return [self.shared something:k];
}
Run Code Online (Sandbox Code Playgroud)
唉……这不是……
id x = MyClass[@"document"];
Run Code Online (Sandbox Code Playgroud)
错误:意外的接口名称“MyClass”:预期的表达式
但是为什么,爸爸? Class“肯定得短端的NSObject球棍,如果你问我。
Josh Caswell 的评论指出了这个问题:
您正在使用类型名称。尝试使用变量中的类对象。
id myClass = [MyClass class]; myClass[@"document"];或者[MyClass class][@"document"]
我发誓我试过了。 圣经。但证据就在布丁里……
@interface MyClass : NSObject
@property (readonly) id boring;
@end
@implementation MyClass
- boring { return @"typical"; }
+ document { return @"YEEHAW"; }
- objectForKeyedSubscript:key { return [self valueForKey:key]; }
+ objectForKeyedSubscript:key {
return [self performSelector:NSSelectorFromString(key)];
}
@end
Run Code Online (Sandbox Code Playgroud)
...
id a = MyClass.new;
id x = a[@"boring"]; // "typical" (via "normal" keyed subscription)
id b = MyClass.class;
x = z[@"document"]; // "YEEHAW" (via CLASS keyed-subscript!)
Run Code Online (Sandbox Code Playgroud)
或所有我的一个班轮怪异,deaky的有...
x = ((id)MyClass.class)[@"document"] // "YEEHAW"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |