当我不知道它在 Obj-c 中是 class 时调用对象的 属性
Calling a property of object when I don't know it's class in Obj-c
我有一组对象,每个对象都在我的控制之下,class。
每个 class 都有一个 属性 id
所以调用 object.id 进行某种铸造工作。
如何在不强制转换的情况下编写这种代码
for(id obj in objects){
NSLog(@"%ld", obj.id);
}
做这样的事情:
for (id obj in objects) {
if ([obj respondsToSelector:@selector(id)])
[obj performSelector:@selector(id)];
}
请注意,如果您不检查对象是否响应选择器,您将面临因无法识别的选择器异常而导致应用崩溃的风险。
您可以使用 KVC 方法 valueForKey:@"id"
否则,如果您正在寻找选择器,我认为您可以使用 respondsToSelector:@selector(id)
检查它们的响应
尽管我想提出两点建议:
不要将不同种类的对象放在同一个数组中,那只会让你感到困惑。
如果可以的话,投射它们,它绝对更清晰、更舒适,因为它能让你使用你的属性。只要确保您正在投射正确的对象即可!
我有一组对象,每个对象都在我的控制之下,class。
每个 class 都有一个 属性 id
所以调用 object.id 进行某种铸造工作。
如何在不强制转换的情况下编写这种代码
for(id obj in objects){
NSLog(@"%ld", obj.id);
}
做这样的事情:
for (id obj in objects) {
if ([obj respondsToSelector:@selector(id)])
[obj performSelector:@selector(id)];
}
请注意,如果您不检查对象是否响应选择器,您将面临因无法识别的选择器异常而导致应用崩溃的风险。
您可以使用 KVC 方法 valueForKey:@"id"
否则,如果您正在寻找选择器,我认为您可以使用 respondsToSelector:@selector(id)
尽管我想提出两点建议:
不要将不同种类的对象放在同一个数组中,那只会让你感到困惑。
如果可以的话,投射它们,它绝对更清晰、更舒适,因为它能让你使用你的属性。只要确保您正在投射正确的对象即可!