我将tag
放在我的UILabel的StoryBoard属性检查器上,我在ViewController.m上有这个代码:
for (id subview in [[self view] subviews])
{
if (subview.tag==1)
{
[subview setFont:[UIFont fontWithName:@"Raleway-ExtraLight" size:12]];
} else if (subview.tag==2) {
[subview setFont:[UIFont fontWithName:@"Raleway-ExtraLight" size:28]];
}
}
当我运行我的代码时出现了这个错误:
在'const _strong id'
类型的对象上找不到属性'tag'
我在这里错过了什么?谢谢你......
答案 0 :(得分:8)
更改
for (id subview in [[self view] subviews]) {
到
for (UIView *subview in [[self view] subviews]) {
问题是编译器不知道id实际上是什么,所以你不能使用。关于它的符号。如果你想跟上id,可以使用((UIView *)id).tag
将其转换为UIView答案 1 :(得分:6)
在这种情况下,将subview
的类型从id
更改为UIView *
是最佳选择,另一个可行的解决方案是更改:
if (subview.tag == 1)
为:
if ([subview tag] == 1)
对id
类型的对象进行方法调用会使编译器比尝试访问属性更快乐(尽管它们基本上是相同的东西)。
答案 2 :(得分:4)
“id
”与编译器的“void *
”类似。它没有看到声明的方法或属性,因此您看到了“not found on object
”错误。
如果您将“id
”循环中的“for
”更改为“UIView *
”,则可能会有更好的结果。