gpt4 book ai didi

objective-c - 使用选择器评估对象链

转载 作者:行者123 更新时间:2023-11-29 04:44:46 26 4
gpt4 key购买 nike

考虑一个像这样的对象链:

foo.bar.baz.bing

在这个特定的实例中,我得到了 foo 并且我希望评估方法 bing。在代码中我会执行以下操作:

[[[foo bar] baz] bing];

或者,如果 bing 是一个属性,我可以这样评估它:

id result = foo.bar.baz.bing;

现在考虑一下这样的情况:我以 NSString 对象的形式获得了 foobar.baz.bing 。我想出了以下方法来评估 bing,但我想知道是否有更简单的方法来做到这一点。

- (id)evaluator:(id)parentObject withChain:(NSString *)objectChain
{
id currentObject = parentObject;

for (NSString *component in [objectChain componentsSeparatedByString:@"."])
{

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
currentObject = [currentObject performSelector:NSSelectorFromString(component)];
#pragma clang diagnostic pop
}
return currentObject;
}

注意:上面的代码示例旨在演示这一点。我知道调用 initalloccopymutableCopynew< 的危险 使用这样的方法。代码中的实际使用经过非常仔细的管理,以避免 ARC 需要发布的任何情况。

最佳答案

使用Key-Value Coding .

[parentObject valueForKeyPath:objectChain];

关于objective-c - 使用选择器评估对象链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9813798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com