Expression is not assignable 问题分析及解决方案
在写代码的过程中,报“Expression is not assignable”,意思是表达式不可赋值,但是感觉自己的想法明明是没问题的,上代码看一下:
self.button.frame.size.height = frame.size.height;
把frame的height赋值给我的button的height,看上去逻辑是没有问题的,但是为什么会报错呢?
那就要提到用的点语法了,点语法一般有两个,get方法或者是set方法,就看是在赋值的左边还是右边(简单的情况可以这么看,复杂的不可以这么简单粗暴),显然粗略的看,self.button.frame.size.height是set方法,frame.size.height是get方法。
但是仔细思考,self.button.frame.size.height全部都是set方法吗?
显然不是,其中用到的set方法只有一个,那就是对于frame的set方法。
在这里查阅了一些资料,对于这个语句的点语法的判断大概是这样的:
self.button.frame中的frame可以看作是 [self.button setFrame],frame是一个结构体,之后的size.height则相当于调用C语言的方法。
self.button.frame.size.height = frame.size.height;
相当于给一个无返回值函数直接赋值,并且你还没有给这个函数进行传参,这是一种错误的语法。所以编译器告诉你"这个表达式无法被赋值"。
所以,解决办法就是,用OC中的点语法也就是get方法取这个结构体属性,用C的结构体点语法对这个属性中的字段进行修改,然后用OC中的点语法也就是set方法设置这个结构体属性。结构体是值传递,不是地址传递。需要将值计算完成之后,再赋值到对象frame中。
CGRect tempFrame = frame;
tempFrame.size.height = frame.size.height * 1.6;
self.button.frame = tempFrame;
over!
Expression is not assignable 问题分析及解决方案相关推荐
- Expression is not assignable
不知道有没有跟我遇到同样的错误,今天研究一下为什么. self.view.frame.size.width = 20; 当我们这样去写上面的语句的时候会报错Expression is not assi ...
- Android Bitmap转换WebP图片导致损坏的分析及解决方案
Android Bitmap转换WebP图片导致损坏的分析及解决方案 参考文章: (1)Android Bitmap转换WebP图片导致损坏的分析及解决方案 (2)https://www.cnblog ...
- C#/.NET基于Topshelf创建Windows服务的守护程序作为服务启动的客户端桌面程序不显示UI界面的问题分析和解决方案
C#/.NET基于Topshelf创建Windows服务的守护程序作为服务启动的客户端桌面程序不显示UI界面的问题分析和解决方案 参考文章: (1)C#/.NET基于Topshelf创建Windows ...
- AppStore IPv6-only审核被拒原因分析及解决方案-b
AppStore IPv6-only审核被拒原因分析及解决方案-b 参考文章: (1)AppStore IPv6-only审核被拒原因分析及解决方案-b (2)https://www.cnblogs. ...
- linux系统脚本安装失败,ubuntu16.04下vim安装失败的原因分析及解决方案
先给大家说下问题描述? 重装了ubuntu系统,安装vim出现了以下问题: sudo apt-get install vim 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信 ...
- android系统性能优化(63)---Android APP 卡顿问题分析及解决方案
Android APP 卡顿问题分析及解决方案 用户对卡顿的感知, 主要来源于界面的刷新. 而界面的性能主要是依赖于设备的UI渲染性能. 如果我们的UI设计过于复杂, 或是实现不够友好,计算绘制算法不 ...
- MYSQL主从不同步延迟原理分析及解决方案
MYSQL主从不同步延迟原理分析及解决方案 参考文章: (1)MYSQL主从不同步延迟原理分析及解决方案 (2)https://www.cnblogs.com/shishanyu/p/7977835. ...
- spring多数据源分布式事务的分析与解决方案
spring多数据源分布式事务的分析与解决方案 参考文章: (1)spring多数据源分布式事务的分析与解决方案 (2)https://www.cnblogs.com/qianjun2017/p/83 ...
- Selenium常见异常分析及解决方案
Selenium常见异常分析及解决方案 参考文章: (1)Selenium常见异常分析及解决方案 (2)https://www.cnblogs.com/superhin/p/11454861.html ...
最新文章
- Python中logging.config配置文件解读
- LigerUI——天外飞仙
- Windows10+GPU版 pytorch 安装
- [最全操作指南] 在线六个项目全部迁移Linux
- 进程间的通信——无名管道
- java表格怎么添加按钮_1.6.2 在表格中添加按钮
- 7-8 猜数字 (20 分)
- 配置nginx负载均衡
- 木马的隐藏及其启动方式 (转)
- 扩展欧几里得算法(简单易懂,详细分析)
- js实现抽饭系统(类似抽检系统)双按钮控制系统
- 互联网最值得加入的 173 家国企汇总!!
- Mysql服务器安装步骤
- Wireshark----wmem 内存池、内存管理的学习--README.wmem 翻译
- python opencv imshow可以显示,但是imwrite却黑乎乎
- 详谈气象站的功能区别
- 由圆上三点确定圆心和半径(附PythonMatlab程序)
- 漏洞修复需要升级打补丁,打补丁准备工作
- 笔记本安装内存条、重装系统教程
- SpringBoot整合redis缓存(一)