类型成员 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学习笔记(三)数据成员:属性与实例变量的更多相关文章
-
【Unity 3D】学习笔记三十五:游戏实例——摄像机切换镜头
摄像机切换镜头 在游戏中常常会切换摄像机来观察某一个游戏对象,能够说.在3D游戏开发中,摄像头的切换是不可或缺的. 这次我们学习总结下摄像机怎么切换镜头. 代码: private var Camera ...
-
python学习笔记(二十二)实例变量、实例方法、类变量、类方法、属性方法、静态方法
实例变量:在类的声明中,属性是用变量来表示的.这种变量就称为实例变量,也就是成员变量. 实例方法:在类中声明的方法,例如:my(self),必须实例化之后才可以使用,否则会报错. 类变量:公共的变量, ...
-
SpringMVC 学习笔记(三)数据的校验
34. 尚硅谷_佟刚_SpringMVC_数据绑定流程分析.avi 例如:在jsp中输入一个String字符串类型,需要转换成Date类型的流程如下 convertservice对传入的数据进行转换 ...
-
学习笔记(三)--->;《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记
回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...
-
VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
-
Windows phone 8 学习笔记(2) 数据文件操作
原文:Windows phone 8 学习笔记(2) 数据文件操作 Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方 ...
-
angular学习笔记(三十)-指令(7)-compile和link(2)
继续上一篇:angular学习笔记(三十)-指令(7)-compile和link(1) 上一篇讲了compile函数的基本概念,接下来详细讲解compile和link的执行顺序. 看一段三个指令嵌套的 ...
-
Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
-
[Firefly引擎][学习笔记三][已完结]所需模块封装
原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读: 笔记三主要就是各个模块的封装了,这里贴 ...
-
java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
随机推荐
-
软件测试之loadrunner学习笔记-02集合点
loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...
-
cocos2dx 3.x(精灵的碰撞检测,点击移动与拖动精灵)
// // MainScene.hpp // helloworld // // Created by apple on 16/9/19. // // #ifndef MainScene_hpp #de ...
-
HTML中的鼠标光标属性
在网页中默认的鼠标指针只有两种,一种是最普通的箭头,另一种是当移动到链接上时出现的“小手”.但现在越来越多的网页都使用了CSS鼠标指针技术,当将鼠标移动到链接上时,可以看到多种不同的效果.CSS可以通 ...
-
深入理解7816(2)---关于ATR
智能卡(此处主要指接触式CPU卡)本身始终处于被动的状态,所以终端设备在和智能卡进行数据交互的时候,需要首先给智能卡发指令,智能卡才会对应地给出应答.而智能卡告诉终端的第一句话就是ATR,亦即“复位应 ...
-
JAVA的类加载器,详细解释
JVM规范定义了两种类型的类装载器:启动内装载器(bootstrap)和用户自定义装载器(user-defined class loader). 一. ClassLoader基本概念 1.ClassL ...
-
virsh VMI deploy data serial xml
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'> <name> ...
-
Codeforces 455B A Lot of Games(字典树+博弈)
题目连接: Codeforces 455B A Lot of Games 题目大意:给定n.表示字符串集合. 给定k,表示进行了k次游戏,然后是n个字符串.每局開始.字符串为空串,然后两人轮流在末尾追 ...
-
sqlserver 存储过程学习笔记(二) 在项目中的应用<;多表分页>;
(1)存储过程建立 USE [NewPlat] GO /****** Object: StoredProcedure [dbo].[usp_PagingLarge] Script Date: ...
-
Linux笔记(十三) - 系统管理
(1)进程管理1.判断服务器健康状态2.查看进程a.查看系统中所有进程:ps 例:ps aux(使用BSD操作系统命令格式) a 显示所有前台进程 x 显示所有后台进程 u 显 ...
-
Nginx教程(一) Nginx入门教程
Nginx教程(一) Nginx入门教程 1 Nginx入门教程 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行.由 ...