Xcode提示“expression is not assignable”
来源:互联网 发布:access2007数据库安装 编辑:程序博客网 时间:2024/06/11 11:56
self.view.frame.size.height = 100f;这样写没法通过编译,编译器会报错"expression is not assignable"
原因是,这句话里面的几个点有两种不同的含义。self.view.frame是Objective-C语法,是读取view属性的frame属性,在Objective-C中使用点来访问属性只是一种语法糖,所以self.view.frame这句话会被转换成:[[self view] frame]也就是说,实际上这是消息传递。
而frame属性是一个CGRect结构,所以frame.size.height是C语言的语法,就是访问CGRect结构中的size字段,同样,height是CGSize结构的一个字段。所以,你这句话实际上等于:[[self view] frame].size.height = 100f;而Objective-C只是对C语言的一个扩展,所以,上面这句话会被转成C语言的函数调用形式,类似于这种形式:getframe().size.height = 100f;而在C语言里,函数的返回值是一个R-Value,是不能直接给它赋值的(所谓的R-Value,就是只能出现在等号的右边,你可以理解成是一个常量;而可以被赋值的是L-Value,可以出现在等号的左边,通常是变量)。因此,当你打算直接给函数的返回值赋值的时候,编译器告诉你"这个表达式无法被赋值"。这就是这个错误的出现原因。
所以,解决办法就是,用一个临时变量保存这个函数的返回值,修改这个临时变量,然后再赋给frame:
CGRect temp = self.view.frame;
temp.size.height = 100f;
原因是,这句话里面的几个点有两种不同的含义。self.view.frame是Objective-C语法,是读取view属性的frame属性,在Objective-C中使用点来访问属性只是一种语法糖,所以self.view.frame这句话会被转换成:[[self view] frame]也就是说,实际上这是消息传递。
而frame属性是一个CGRect结构,所以frame.size.height是C语言的语法,就是访问CGRect结构中的size字段,同样,height是CGSize结构的一个字段。所以,你这句话实际上等于:[[self view] frame].size.height = 100f;而Objective-C只是对C语言的一个扩展,所以,上面这句话会被转成C语言的函数调用形式,类似于这种形式:getframe().size.height = 100f;而在C语言里,函数的返回值是一个R-Value,是不能直接给它赋值的(所谓的R-Value,就是只能出现在等号的右边,你可以理解成是一个常量;而可以被赋值的是L-Value,可以出现在等号的左边,通常是变量)。因此,当你打算直接给函数的返回值赋值的时候,编译器告诉你"这个表达式无法被赋值"。这就是这个错误的出现原因。
所以,解决办法就是,用一个临时变量保存这个函数的返回值,修改这个临时变量,然后再赋给frame:
CGRect temp = self.view.frame;
temp.size.height = 100f;
self.view.frame = temp;
0 0
- Xcode提示“expression is not assignable”
- Xcode提示“expression is not assignable”
- Xcode提示“expression is not assignable”
- Xcode提示“expression is not assignable”
- Xcode提示“expression is not assignable”
- Xcode提示“expression is not assignable”
- Xcode提示“expression is not assignable”
- Xcode提示“expression is not assignable”
- expression is not assignable
- Expression is not assignable
- Expression is not assignable
- Xcode提示“expression is not assignable” self.view.frame.size.height = 100f无法赋值
- iOS Xcode 编译错误 “expression is not assignable”
- iOS开发初级错误 Expression is not assignable
- is not assignable to
- 关于self.view.frame.size.width赋值会出现expression is not assignable 错误
- 关于self.view.frame.size.width赋值会出现expression is not assignable 错误
- 更改frame 时报"expression is not assignable""这个表达式无法被赋值"
- trackBar用法 createTrackbar函数
- PHP菜鸟之简易聊天室
- 商业中心购买行为和习惯调查研究思路
- Windows常用命令行命令
- 最短路径算法——Dijkstra and Floyd算法
- Xcode提示“expression is not assignable”
- IntelliJ IDEA 12创建Maven管理的Java Web项目(图解)
- 关于拼接引号的问题
- android--将editText中提示文字放到右边且不消失的简单做法
- android 中从一个activity 跳转到另外一个activity
- 设计模式_抽象工厂模式
- css 书写规范
- Jquery 中 ajaxSubmit使用讲解
- APP界面设计指南|APP界面设计师必备信息图