在写代码的过程中,报“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 问题分析及解决方案相关推荐

  1. Expression is not assignable

    不知道有没有跟我遇到同样的错误,今天研究一下为什么. self.view.frame.size.width = 20; 当我们这样去写上面的语句的时候会报错Expression is not assi ...

  2. Android Bitmap转换WebP图片导致损坏的分析及解决方案

    Android Bitmap转换WebP图片导致损坏的分析及解决方案 参考文章: (1)Android Bitmap转换WebP图片导致损坏的分析及解决方案 (2)https://www.cnblog ...

  3. C#/.NET基于Topshelf创建Windows服务的守护程序作为服务启动的客户端桌面程序不显示UI界面的问题分析和解决方案

    C#/.NET基于Topshelf创建Windows服务的守护程序作为服务启动的客户端桌面程序不显示UI界面的问题分析和解决方案 参考文章: (1)C#/.NET基于Topshelf创建Windows ...

  4. AppStore IPv6-only审核被拒原因分析及解决方案-b

    AppStore IPv6-only审核被拒原因分析及解决方案-b 参考文章: (1)AppStore IPv6-only审核被拒原因分析及解决方案-b (2)https://www.cnblogs. ...

  5. linux系统脚本安装失败,ubuntu16.04下vim安装失败的原因分析及解决方案

    先给大家说下问题描述? 重装了ubuntu系统,安装vim出现了以下问题: sudo apt-get install vim 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信 ...

  6. android系统性能优化(63)---Android APP 卡顿问题分析及解决方案

    Android APP 卡顿问题分析及解决方案 用户对卡顿的感知, 主要来源于界面的刷新. 而界面的性能主要是依赖于设备的UI渲染性能. 如果我们的UI设计过于复杂, 或是实现不够友好,计算绘制算法不 ...

  7. MYSQL主从不同步延迟原理分析及解决方案

    MYSQL主从不同步延迟原理分析及解决方案 参考文章: (1)MYSQL主从不同步延迟原理分析及解决方案 (2)https://www.cnblogs.com/shishanyu/p/7977835. ...

  8. spring多数据源分布式事务的分析与解决方案

    spring多数据源分布式事务的分析与解决方案 参考文章: (1)spring多数据源分布式事务的分析与解决方案 (2)https://www.cnblogs.com/qianjun2017/p/83 ...

  9. Selenium常见异常分析及解决方案

    Selenium常见异常分析及解决方案 参考文章: (1)Selenium常见异常分析及解决方案 (2)https://www.cnblogs.com/superhin/p/11454861.html ...

最新文章

  1. Python中logging.config配置文件解读
  2. LigerUI——天外飞仙
  3. Windows10+GPU版 pytorch 安装
  4. [最全操作指南] 在线六个项目全部迁移Linux
  5. 进程间的通信——无名管道
  6. java表格怎么添加按钮_1.6.2 在表格中添加按钮
  7. 7-8 猜数字 (20 分)
  8. 配置nginx负载均衡
  9. 木马的隐藏及其启动方式 (转)
  10. 扩展欧几里得算法(简单易懂,详细分析)
  11. js实现抽饭系统(类似抽检系统)双按钮控制系统
  12. 互联网最值得加入的 173 家国企汇总!!
  13. Mysql服务器安装步骤
  14. Wireshark----wmem 内存池、内存管理的学习--README.wmem 翻译
  15. python opencv imshow可以显示,但是imwrite却黑乎乎
  16. 详谈气象站的功能区别
  17. 由圆上三点确定圆心和半径(附PythonMatlab程序)
  18. 漏洞修复需要升级打补丁,打补丁准备工作
  19. 笔记本安装内存条、重装系统教程
  20. SpringBoot整合redis缓存(一)

热门文章

  1. 局域网会议直播方案适用于局域网内部的直播
  2. win10安装LLVM
  3. js中json转excel
  4. Docker最有趣入门教程----来自外国小哥(翻译更新中~)
  5. Top 10 questions about InfoPath attachments
  6. Vijos-p1143三取方格数(动态规划 多进程dp)
  7. 在linux中其他组没有权限怎么写,Linux 权限 用户 组 命令
  8. OpenCV—Python 图像指定区域裁剪
  9. vue如何高效开发表单
  10. 入门 labelImg 数据标注