IOS开发中类、对象、实例变量、成员变量、属性变量等区别
和关系
类(class):具有相同属性和⾏为等同⼀类元素等总称,类是⼀个抽象的概念。
区分是类还是对象,看它能否继续被细分。
在OC中,类是表⽰对象类型的结构体,对象通过类来获取⾃⾝的各种信息。类由两个部分组成:*.h和*.m⽂件组成。
*.m⽂件中 implemention部分是类的实现部分,内部包含类中的各种信息,包括各种实例⽅法或类⽅法。
类别( category):是为现有的类添加新⽅法的⽅式,通常以“类名称+类别名称”来命名。
类别中不能添加新的实例变量。但是可以在类别中添加属性。
类别在业务开发中的主要⽤途是:在不改变源代码原类内容的情况下,为类添加新的⽅法。
实例化类和实例化对象类扩展(class extension):类扩展是分类的⼀种特殊形式,扩展是没有名字的分类。⽂件吗通常是:“主
类类名_扩展标识.h”
扩展通常定义的⽂件的.m中,不能分开。扩展中可以声明实例变量、属性、⽅法,但是全部都是私有⽅法。
对象(object):是不可细分,代表着某⼀个具体的东西的。
在OC中,对象是⼀种包含值和指向其类的隐藏指针的结构体。
通过将类实例化变为对象。
实例化的⽅法有alloc,new,copy,⼯⼚⽅法,单例⽅法等
实例变量(instance variable):由类定义的实例话的变量(不包括基本数据类型,如int,double,float)。
成员变量(Member variable):代码中的变量,包含实例变量和基本变量类型,⽆需与外界接触。
成员变量默认是protected,⼀般情况下,⾮⼦类对象⽆法访问.
属性(property):编译器⾃动将变量的set和get⽅法的合成,可⽤点语法读取,可作为变量使⽤,可与
外界接触。
来区别⼀下实例变量、成员变量的区别:
可以看到在接⼝ @interface 括号⾥⾯的统称为”成员变量”,实例变量是成员变量中的⼀种!
实例变量的英⽂翻译是 Instance Variable (object-specificstorage)
实例的英⽂翻译为Instance(manifestation of a class) 说的是“类的表现”,说明实例变量应该是由类定义的变量!
除去基本数据类型int float ....等,其他类型的变量都叫做实例变量。
接下来说说
在 ⾥⾯,有3个描述词需要填写(也可以不填写取默认值)
1. nonatomic<-->atomic
2. readwrite<-->readonly
3. retain/copy/assign
⾸先来介绍⼀下:
retain:他指的是将某个内存区域的指针赋值给变量,同时把该内存区域的引⽤计数器加1.每执⾏⼀次,该内存区域的引⽤计数器就要加1,当该区域的引⽤计数器变为0的时候内存区域被释放!
copy:它指的是将⽬标内存区域的值复制⼀份,然后开辟新的内存区域(新的指针)粘贴这个值。同时变量被赋值为新内存区域的指针!
assign:它指的是,仅只把⽬标内存区域的指针赋值给变量,该内存区域的引⽤计数器不发⽣变化!
1、2两点不做解释,3中的retain、copy、assign都是指的,在⾃动⽣成setter函数的时候,编译器需要识别个描述词来⽣成对应的setter函数!需要注意的是,如果没有加上该类的描述词,系统默认该变量的setter⽅法采取assign的⽅式。
在头⽂件中.h⼀般在{}⾥⾯会有定义的实例变量
⽰例:
.h
@property (automic,retain) NSString * abc;
.m
@sythesize abc;
整理及转载⾃

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。