IOS开发中 类、对象、实例变量、成员变量、属性变量等区别和关系
来源:互联网 发布:window安装mac双系统 编辑:程序博客网 时间:2024/06/05 07:23
类(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方法的合成,可用点语法读取,可作为变量使用,可与外界接触。
//在写了@sythesize abc;的情况下,系统不会自动生成实例变量“_abc”,直接通过变量名abc
//如果没有写@sythesize abc;
//括号里面定义的都是成员变量(基本数据类型+类生成变量),里面的变量可以在.m文件中通过“变量名称”、self->“变量名称”直接访问到括号里面的变量,但是,这样的赋值访问只能是assign,原对象的引用计数器不会发生变化。
//1.@sythesize 变量名;2.@sythesize 变量名=_变量名;3.不写@sythesize (一下提到的变量名都是指的在头文件中@property 中定义的变量)
1.成员变量,实例变量通过“变量名”或者self->“变量名”直接访问到,赋值(assign)。self.变量名 实现setter,getter方法。
2.成员变量,实例变量通过“_变量名”或者self->“_变量名”直接访问到,赋值(assign)。self.变量名 实现setter,getter方法。
3.成员变量。实例变量(系统自动在原来变量名前加上“_”来生成的实例,成员变量),直接通过self->_变量名,或者变量名直接访问到(assign)。self.变量名 实现setter,getter方法。
如果在头文件中没有通过@property定义的变量,但是在{}中有定义成员变量,在实现文件中也也没有@sythesize ,那么可以直接通过self->“{}中的变量名”,或者直接使用“{}中的变量名”来访问赋值,这样的变量没有定义setter,getter函数,只能是assign的方式赋值。
//再来分析一下@sythesize中的写法,@sythesize abc 直接在.m文件中使用self.abc可以调用成员变量的setter、getter函数,直接调用成员变量名称abc就为访问该变量的指针,对成员变量直接赋值等同于ASSIGN效果。
整理及转载自
http://blog.sina.com.cn/s/blog_75830d770101g560.html
- IOS开发中 类、对象、实例变量、成员变量、属性变量等区别和关系
- iOS中成员变量和属性区别
- iOS中成员变量和属性区别
- IOS中"声明属性"和类成员变量的关系
- iOS 成员变量,实例变量,属性变量的区别,联系
- iOS 成员变量和属性的关系
- iOS 开发中成员变量与属性的区别
- 成员变量:类变量和实例变量的区别
- iOS 成员变量和属性的区别
- ios 属性(属性变量)和成员变量
- 转载,自用,iOS中成员变量和属性的区别
- 解惑——iOS中成员变量和属性区别
- iOS Category中添加属性和成员变量的区别
- Java中字段、属性、成员变量、局部变量、实例变量、静态变量、类变量、常量
- 属性,实例变量和成员变量
- OC中,成员变量和属性区别
- iOS的成员变量、实例变量、属性变量
- 成员变量,局部变量,实例变量,类变量的区别
- 几种大数据框架的对比
- 一句话木马上传常见的几种方法
- go语言(一):go 1.6安装
- Android横竖屏总结
- 二维最大类间方差(otsu)matlab实现源码
- IOS开发中 类、对象、实例变量、成员变量、属性变量等区别和关系
- linex命令大全
- Service与Android系统实现(1)-- 应用程序里的Service
- 树莓派错误“No space left on device”
- Bootstrap导航元素
- unicode WCHAR 与多字符集char相互转换
- 【黑马程序员】第八章:IO(输入输出)
- 2015’12杭电校赛1005 Bitwise Equations(二进制找规律)
- 24. Swap Nodes in Pairs