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

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

转载于:https://www.cnblogs.com/moxuexiaotong/p/5358160.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值