我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]];
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行我的代码时,我收到此错误:
在'const _strong id'类型的对象上找不到属性'tag'
我错过了什么?谢谢......
更改
for (id subview in [[self view] subviews]) {
Run Code Online (Sandbox Code Playgroud)
成
for (UIView *subview in [[self view] subviews]) {
Run Code Online (Sandbox Code Playgroud)
问题是编译器不知道id实际上是什么,所以你不能使用.关于它的符号.如果你想跟上id,可以使用((UIView*)id).tag将其转换为UIView
虽然改变的类型subview,从id到UIView *在这种情况下最好的选择,另一种可行的解决办法是改变:
if (subview.tag == 1)
Run Code Online (Sandbox Code Playgroud)
至:
if ([subview tag] == 1)
Run Code Online (Sandbox Code Playgroud)
对类型对象进行方法调用id使编译器比尝试访问属性更快乐(尽管它们本质上是相同的).
| 归档时间: |
|
| 查看次数: |
1660 次 |
| 最近记录: |