类型成员 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. poj2039---写出c++reverse函数,且且依次输出每一行的第一个、第二个.....

    #include <stdio.h> #include <stdlib.h> #include <string.h> void reverse(char *p1,c ...

  2. 浙大PAT 7-06 题解

    #include <stdio.h> #include <iostream> #include <algorithm> #include <math.h> ...

  3. 链表-Add Two Numbers

    第一版代码(很挫很罗嗦,不过是第一次做,记录一下成长的脚步!继续努力!) /*struct ListNode { int val; struct ListNode *next; };*/ typede ...

  4. Matrix(多线程dp)

    Matrix Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  5. 什么是CTS、CLS和CLR

    CTS.CLS和CLR是.NET框架的基本概念,但往往成为程序员们忽视的部分.清楚理解三者的概念,有助于.NET程序员编写高效安全的.NET程序. 所涉及到的知识点 •   .NET的基本概念 •   ...

  6. 栈的实现 -- 数据结构与算法的javascript描述 第四章

    栈 :last-in-first-out 栈有自己特殊的规则,只能 后进入的元素 ,最先被推出来,我们只需要模拟这个规则,实现这个规则就好. peek是返回栈顶元素(最后一个进入的). /** * 栈 ...

  7. Deep Learning(深度学习)学习笔记整理系列之(三)

    Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...

  8. jquery ajax 在ie7不能正常使用

    jquery ajax结构不规范到时再ie8以下的用户不能正常使用.比如[1,2,].{1,2,},结构内部的最后不能有“,”.

  9. mysql数据库中列转行

    今天突然想到了数据库中的行专列与列转行,还不熟悉,在上网看了一下然后就自己写了个例子. 数据库表示这样滴! //全部查询出来SELECT (case type when 'MySql数据库' then ...

  10. 常用笔记: JS实现VBS当中的Replace

    <script> //JS实现VBS当中的Replace,替换全部.方法名大写,区别于原方法,与VBS相类似. String.prototype.Replace = function(ol ...