关于oc中expression is not assignable错误原因
2016-04-06 10:20
465 查看
在oc中当我们直接对self.view.frame.size.height = 100;进行赋值时,便会出现这个错误,这个错误的原因是在于:
self.view.frame是Objective-C语法的点语法,而frame属性是一个cgrect结构,frame.size.height是c语言的语法,由于oc只是c语言的扩展,因此上面这句话转化为c语言的形式调转就会变为: getframe().size.height = 100f; 在c语言中,函数的返回值是一个R-Value,是不能给他直接赋值的(所谓的R-Value,就是只能出现在等号的右边,你可以理解成是一个常量;而可以被赋值的是L-Value,可以出现在等号的左边,通常是变量)。因此你直接给它赋值时,便会出现这个错误。解决办法是给这个函数加一个零时变量,修改零时变量,然后再赋值给frame。就可以实现修改frame内height和width的值。 例子:
// 1. 用一个临时变量保存返回值。 CGRect temp = self.view.frame; // 2. 给这个变量赋值。因为变量都是L-Value,可以被赋值 temp.size.height = 100f; // 3. 修改frame的值 self.view.frame = temp;
相关文章推荐
- 多线程文件下载
- 轮播图片 高效图片轮播,两个imageView实现
- 纯CSS实现图片抖动
- Linux C实现简单的网络聊天室
- RSA加密解密
- 关于阿里面试的一个小题(推荐)
- highchart插件的属性说明
- 仿支付宝手势密码头部小九宫格绘制
- java实现屏幕截图
- Win7设置局域网FTP服务器步骤
- 前端基础
- 通过反编译深入理解Java String及intern
- 抽象类与接口
- eclipse使用----如何在Eclipse中查看JDK类库的源代码
- Redis三种启动方式
- Excel 打开执行某方法,定时关闭
- 用java开发编译器之:Thompson构造,将正则表达式转换为有限状态自动机
- 用户界面框架jQuery EasyUI发布v1.4.5|附下载
- servlet文件上传(1)---》form表单的enctype属性以及上传文件请求内容
- 选择不相交区间 小结