有没有办法做类似于 KVC 的事情,但使用消息名称作为密钥本身?例如,valueForKey:
有没有办法让对象响应所有消息?
例如,假设您有一个 XML 文档:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ...>
<employees>
<employee>
<name>Bill</name>
<department>Accounting</department>
</employee>
<employee>
<name>John</name>
<department>Human Resources</department>
</employee>
</employees>
除了使用已经可用的 NSXMLDocument 和 co. 之外,是否还有一种方法可以实现某种抽象,以便您可以这样做:
MyXML *xmlDoc = [[MyXML alloc] initWithContentsOfFile:@"test.xml"];
NSLog (@"%@", [[[xmlDoc employees] first] department]);
[[[xmlDoc employees] first] setDepartment:@"Management"];
我选择 XML 只是作为示例,但我想知道这是否可能,以及它是否涉及过于接近 Objective-C 运行时或者它是否被运行时本身支持,以及我将如何进行关于实施这样的事情。这纯粹是出于实验目的,我知道可能会有很大的性能成本。
编辑:
如果可能的话,我想避免使用现有的框架,如 Cocoa 并使用基本的 Objective-C object Object
。