我是靠谱客的博主 安静摩托,最近开发中收集的这篇文章主要介绍OC对象里面包含的结构体类型的属性,不能对该结构体属性的成员单个进行修改...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

OC对象里面包含的结构体类型的属性,不能对该结构体属性的成员单个进行修改,需要对OC对象的结构体属性整体赋值。

 

关于网上很多博客写着“结构体类型里面的某个属性如果想要修改是不允许单个修改的” 之解释:

其实并不是说结构体的成员就一定不能单个修改,例如在某方法中单独定义一个结构体类型的临时变量,是可以对它的成员直接进行修改的。

只是结构体在作为OC对象的属性使用时,OC语法规定不能单独对OC对象的结构体属性的单个成员进行修改,要改必须通过对对象的结构体属性整体赋值,这样做也确保数据的完整性。

 

 

举例说明:


ios开发中,UI控件的frame属性是大家最熟悉不过, 例如UIView中定义的 @property(nonatomicCGRect  frame; 

可以看出CGRect类型的frame作为OC对象UIView的属性,因为OC语法规定不能单独对OC对象的结构体属性的单个成员进行修改,所以UI控件的frame属性的成员变量不能单个进行修改,只能通过对view.frame整体进行赋值。

像下面这样先定义临时结构体变量btnFrame,获取self.btnTop控件的frame属性值,然后对临时变量btnFrame的成员变量进行修改,之后再重新赋值回去,也就是大家常说的三部曲:(在方法中单独定义的结构体类型的临时变量CGRect btnFrame,虽然btnFrame也是结构体,但并没有作为任何类/对象的属性,所以是可以对它的成员直接进行修改的。)

 

以下写法是严重错误的,Xcode会直接报错,“变量不可被赋值”,因为OC语法规定不能单独修改OC对象结构体属性的成员变量的值。

 

转载于:https://www.cnblogs.com/stevenwuzheng/p/5367722.html

最后

以上就是安静摩托为你收集整理的OC对象里面包含的结构体类型的属性,不能对该结构体属性的成员单个进行修改...的全部内容,希望文章能够帮你解决OC对象里面包含的结构体类型的属性,不能对该结构体属性的成员单个进行修改...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部