类型成员 Type Member

结构体 struct 的成员很简单,只有变量。

类的成员就很多了:

数据成员 data member 描述对象(本讲重点)

· 实例变量  instance variable

· 属性 property

函数成员 function member

· 方法 method

· 初始化器  init

· 析构器  dealloc

类的属性:

默认情况下,编译器会为属性定义propertyName自动合成:

一个getter访问器方法: propertyName

一个setter访问器方法: setPropertyName

一个实例变量 _propertyName

只读情况下,编译器只会为属性fullName自动合成:

一个getter访问器方法: fullName

属性的描述特性:

读写特性 readwrite (默认) /readonly

多线程特性 atomic (默认) /nonatomic

内存管理特性:

强引用 strong (默认)

弱引用 weak  防止循环引用时的内存溢出

拷贝引用 copy 防止引用类型拷贝时的连带赋值变化。

其他: retain、assign、unsafe_unretained

实例变量:

类外一律使用属性来访问,尤其是在类外访问类类型属性的实例对象的话,会出现内存出错。类内大多也都用self.属性来访问。除了以下情况。

·初始化器 init

·析构器 dealloc

·自定义访问器方法

生存周期:

值类型的实例变量直接内嵌在对象实例的堆中,跟随对象实例内存的释放而被释放。

引用类型的实例变量:对象自己有一个指针,实例变量中也会存储这个对象的指针,ARC会针对这个指针做计数管理,释放计数为零的对象。

也就是说,实例变量的指针和对象自己的指针(其实这两个指针指向的地址是同一个)都失效的情况下,这个对象的堆才会被释放,实例变量的堆会在指向自己的指针失效以后再释放。

其他:(以后可能会说到,先提前说一下)

一:

protocal :相当于java中的interface;

interface + implementation 才是一个完整的类声明。

interface  包括了成员变量和成员方法的声明、继承关系、protocal实现关系等。

implementation 是实现部分

二:

类声明里面的变量叫做实例变量,因为是类内部用的,所以在外部不能访问。类外只能访问类的属性。

类变量就是静态变量

类里面的方法里的变量就是一般的局部变量

三:

- 代表实例方法,类外调用的时候需要实例化。

+代表类方法,类外调用的时候不需要实例化。

objective-C学习笔记(三)数据成员:属性与实例变量的更多相关文章

  1. 【Unity 3D】学习笔记三十五:游戏实例——摄像机切换镜头

    摄像机切换镜头 在游戏中常常会切换摄像机来观察某一个游戏对象,能够说.在3D游戏开发中,摄像头的切换是不可或缺的. 这次我们学习总结下摄像机怎么切换镜头. 代码: private var Camera ...

  2. python学习笔记(二十二)实例变量、实例方法、类变量、类方法、属性方法、静态方法

    实例变量:在类的声明中,属性是用变量来表示的.这种变量就称为实例变量,也就是成员变量. 实例方法:在类中声明的方法,例如:my(self),必须实例化之后才可以使用,否则会报错. 类变量:公共的变量, ...

  3. SpringMVC 学习笔记(三)数据的校验

    34. 尚硅谷_佟刚_SpringMVC_数据绑定流程分析.avi 例如:在jsp中输入一个String字符串类型,需要转换成Date类型的流程如下 convertservice对传入的数据进行转换 ...

  4. 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记

    回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...

  5. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  6. Windows phone 8 学习笔记(2) 数据文件操作

    原文:Windows phone 8 学习笔记(2) 数据文件操作 Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方 ...

  7. angular学习笔记(三十)-指令(7)-compile和link(2)

    继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的 ...

  8. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  9. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  10. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

随机推荐

  1. sketch 跟随鼠标指针移动的特效

    演示地址:http://www.ke01.com/yanshi/sucai/20140830/2/ 下载地址:https://yunpan.cn/cqgWeIYPer8eC  访问密码 672b

  2. Enabling Process Accounting on Linux HOWTO

    http://tldp.org/HOWTO/Process-Accounting/index.html

  3. 压缩OLEVARIANT数据

    TCLIENTDATASET.DATA, TCLIENTDATASET.DELTA, TDATASETPROVIDER.DATA,它们的DATA属性的类型都是OLEVARIANT. 中间层和客户端之间 ...

  4. rsyslog start with

    startswith Checks if the value is found exactly at the beginning of the property value. For example, ...

  5. Swift语法总结(精简版)

    第一部分: 1. Swift简介 2010年的夏天,苹果公司的开发人员Chris Lattne接到了一个特别的任务,为OS X 和iOS平台开发下一代的编程语言,也就是Swift. 苹果公司于2014 ...

  6. ReactNative遇到的一些坑

    1. 如果通过一个url进行下载上传操作,这个url中包含有中文的话,一定要记得将这个url转为URLEncode编码. 如: encodeURI('http://test/有中文.doc'); 2. ...

  7. [Java 8 Lambda] java.util.stream 简单介绍

    包结构例如以下所看到的: 这个包的结构非常easy,类型也不多. BaseStream接口 全部Stream接口类型的父接口,它继承自AutoClosable接口,定义了一些全部Stream都具备的行 ...

  8. 2014年同年CFA考试中哪些CFA资料没有变化?

    从2014年起,美国CFA协会将官方教材.题库.模拟题等CFA资料捆绑在报名费用之中,而以往可以单独选购的纸质版教材也变成了额外购买.这让非常多參加12月的CFA考生产生了借阅6月考生CFA资料的想法 ...

  9. xcode UIImage图片拉伸

    图片拉伸 +(UIImage*)wlisWithImage:(NSString *)name{ //获取图片 UIImage * img=[UIImage imageNamed:name]; //获取 ...

  10. 从文档流来看内联元素和块元素的css排版

    veda原创[抄录]讲得很好存自己这里看 从文档流来看内联元素和块元素的css排版 CSS文档流与块级元素(block).内联元素(inline),之前翻阅不少书籍,看过不少文章, 看到所多的是零碎的 ...