码迷,mamicode.com
首页 > 其他好文 > 详细

关于oc中expression is not assignable错误原因

时间:2016-04-06 11:25:53      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

   在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;

关于oc中expression is not assignable错误原因

标签:

原文地址:http://www.cnblogs.com/moxuexiaotong/p/5358160.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!