很长的回答:是的,可以,但它依赖于使用私有行为(而不是私人的API).
在对NSArray进行了一些整洁的反省之后,我发现了一些私有的方法:
_distinctUnionOfSetsForKeyPath:_distinctUnionOfObjectsForKeyPath:_distinctUnionOfArraysForKeyPath:_unionOfSetsForKeyPath:_unionOfArraysForKeyPath:_unionOfObjectsForKeyPath:_minForKeyPath:_maxForKeyPath:_countForKeyPath:_avgForKeyPath:_sumForKeyPath:
好,整齐!这些方法似乎与您可以与集合使用的运算符相匹配:@sum,@min,@max,@distinctUnionOfObjects等.@已经被下划线替换,并且已经有ForKeyPath:追加.
所以似乎我们可以创建一个新的方法来匹配相应的签名,我们很好去.
所以:
@interface NSArray (CustomOperator)- (ID) _fooForKeyPath:(Nsstring *)keyPath;@end@implementation NSArray (CustomOperator)- (ID) _fooForKeyPath:(Nsstring *)keyPath { //keyPath will be what comes after the keyPath. In this example,it will be "self" return @"Hello World!";}@endNSArray * array = [NSArray arrayWithObjects:@"1",@"2",@"3",nil];NSLog(@"%@",[array valueForKeyPath:@"@foo.SELF"]); //logs "Hello World!"
它有效,但我不知道我会依靠这个,因为它依赖于未来可能会改变的实现细节.
总结以上是内存溢出为你收集整理的objective-c – 在可可中定义自己的关键路径 *** 作符全部内容,希望文章能够帮你解决objective-c – 在可可中定义自己的关键路径 *** 作符所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)