ObjectiveC中的self.变量和_变量的区别
来源:互联网 发布:金山软件官网 编辑:程序博客网 时间:2024/06/06 11:05
今天因需要重写@property属性的set方法,没想到程序编译通过了,却运行不了,set方法一直报错,错误如下:
一开始真是搞不明白啊,都能改用别的方法,不重载这个东东了,烦死了!不过烦归烦,问题终归还是要解决的。我看着代码,突然觉得这个self.变量是不是不对呢?于是我把set函数里self改成了下划线,成功运行了!!太棒了!
这里就解释一下原因,我们都知道,在苹果的官方源码中,大量使用了下划线,那为什么苹果会使用下划线而不是self呢?这里有篇博客大家可以参考一下,说得比较清楚,不过可能在ARC环境下不再适用了吧。http://blog.sina.com.cn/s/blog_7b9d64af0101923n.html
还有一点需要了解的就是@property定义的属性编译器会自动编写getter和setter方法,当然,getter和setter方法也可以根据需要重写。
先给出例子:
Test.h
Test.m
测试代码
运行结果
从这个简单的例子中,很清楚可以知道,利用self改变变量值,其实是调用了setter方法,但是下划线这种方式并没有调用setter方法。所以也可以说明了我之前在写setter方法时,在setter方法里使用self肯定会有问题。
在这个简单的测试代码里,我写了四个NSString,主要是为了说明一下,公共变量和私有变量,对初学者来说,一开始很容易混淆的。这四个变量中,只有string2能被外部类访问,其他三个都不能,另外,string2和string4有默认的getter和setter方法,可以使用self和下划线获取变量。string1和string3直接使用string1=XXX或XXX=string1就可以。
这是很简单的一个说明,太本质的东西我暂时也没有弄清楚,记录一下,希望看到这个的人不要再像我一样犯错误!如果有什么不对的对方,欢迎大神们指教!!
- ObjectiveC中的self.变量和_变量的区别
- self.方法和_对变量的引用的区别
- IOS 中self. 和_访问变量的区别
- 【内存管理】:self.变量 和 变量 的区别
- 【IOS之内存管理】self.变量 和 变量 的区别
- ios 私有变量的发展历史以及self. 和 _的区别
- 面向对象_成员变量和局部变量的区别
- 面向对象_静态变量和成员变量的区别
- self 和 _的区别
- ios中有self和无self的变量的区别
- ObjectiveC的变量类型的字符代表
- self.和_的区别(self和下划线的区别)
- VB.net中的Static变量和Shared变量的区别
- C语言中的静态变量和普通变量的区别
- java中的成员变量和局部变量的区别
- java源文件中的“成员变量和局部变量的区别”
- self.***和_***的使用和区别
- Python 类中方法的内部变量,命名加'self.'变成 self.xxx 和不加直接 xxx 的区别
- hdoj 4009 Transfer water 【求无根树最小树形图】
- 改变个别字体颜色的富文本
- H264 基本概念:I B P帧概念、特点
- 信息集成中的单点登录技术
- Java上传文件
- ObjectiveC中的self.变量和_变量的区别
- [LeetCode] Minimum Window Substring
- 笨鸟先飞之Java--MySql中文数据乱码为哪般???
- 正则表达式
- AES加密模式和填充模式
- ubuntu 14.04 64 bit 安装 appium
- Android SDK开发包国内下载地址
- java初学者学习教程——02 java学习路线
- Bootrom和Boot image的区别,Boot image和VxWorks image的联系和区别