当前位置:网站首页>OC中成员变量,实例变量和属性之间的区别和联系
OC中成员变量,实例变量和属性之间的区别和联系
2022-08-02 02:23:00 【~废弃回忆 �༄】
1.成员变量和实例变量
@interface ViewController : UIViewController
{
UIButton*yourButton;
int count;
id data ;
}
@property(nonatomic,strong)UIButton*myButton;
@end
成员变量
在{}中所声明的的变量都是成员变量.所以yourButton,count,data都是成员变量.
实例变量
实例变量本质上就是成员变量,只是实例是针对类而言的,实例是指类的声明.{}中的yourButton就是实例变量.
id是OC特有的类,本质上将id等同于(void*).所以id data属于实例变量
总结:
1.在文件中@interface括号里面的统称为"成员变量",实例变量是成员变量中的一种!
2.实例变量应该是类定义的变量;
3.除去基本数据类型int,float…等,其他类型的变量都叫做实例变量;
4.实例变量+基本数据类型变量=成员变量.
2.属性
属性四种性质
- 原子性:nonatomic,atomic
- 读写权限:readwrite(读写),readonly(只读)
- 内存管理:assign,strong,weak,unsafe_unretioned,copy
- 方法名:getter=,setter=
可选值:nullable,nonnull,null_resettable,null_unspecified.其中nonatomic,atomic,copy在setter/getter中实现.而weak和strong等则是直接作用于成员变量上.
2.1.原子性关键字
默认情况下原子性是atomic,由编译器所合成的方法使用锁机制保证其原子性.如果属性具备nonatomic特性,则不使用同步锁.
2.2.内存管理
1.assign:setter只会执行针对简单变量,例如int,float,NSInteger,CGFloat等;
2.strong:此特性表明该属性定义了一种"拥有关系".为这种属性设置新值,设置方法先保留新值,并释放旧值,然后再将新值赋值上去;
3.weak::此特性表明该属性定义了一种"非拥有关系".为这种属性设置新值时,设置方法既不保留新值,也不释放旧值.此特性同assign类似,然而在属性所指的对象遭到摧毁时,属性值也会清空.
4.unsafe_unretained:此特性同assign相同,但它适用于"对象类型",该特性表达一种"非拥有关系",当目标对象遭到摧毁时,属性不会自动清空,这与weak有区别;
5.copy:此特性表达的所属关系与strong类似.然而设置方法并不保留新值,而是将其拷贝.
边栏推荐
- Speed up your programs with bitwise operations
- Simple example of libcurl accessing url saved as file
- Oracle数据类型介绍
- 周鸿祎称微软抄袭,窃取360安全模式
- Unable to log in to the Westward Journey
- 【LeetCode每日一题】——103.二叉树的锯齿形层序遍历
- Nanoprobes Polyhistidine (His-) Tag: Recombinant Protein Detection Protocol
- nacos startup error, the database has been configured, stand-alone startup
- 罗德里格斯公式(Rodrigues‘ Rotation Formula)推导
- 列表常用方法
猜你喜欢

BioVendor Human Club Cellular Protein (CC16) Elisa Kit Research Fields

Speed up your programs with bitwise operations
![[LeetCode Daily Question]——654. The largest binary tree](/img/05/0af1c6dc0085e253c0758c8da63e52.png)
[LeetCode Daily Question]——654. The largest binary tree

The underlying data structure of Redis

"NetEase Internship" Weekly Diary (3)

Analysis of the status quo of digital transformation of manufacturing enterprises

Talking about the "horizontal, vertical and vertical" development trend of domestic ERP

【LeetCode每日一题】——654.最大二叉树

BioVendor人俱乐部细胞蛋白(CC16)Elisa试剂盒研究领域

永磁同步电机36问(三)——SVPWM代码实现
随机推荐
[LeetCode Daily Question] - 103. Zigzag Level Order Traversal of Binary Tree
IMU预积分的简单理解
项目场景 with ERRTYPE = cudaError CUDA failure 999 unknown error
Use DBeaver for mysql data backup and recovery
TKU remembers a single-point QPS optimization (I wish ITEYE is finally back)
【LeetCode每日一题】——704.二分查找
2022-07-30 mysql8 executes slow SQL-Q17 analysis
yaml
51. 数字排列
线程的不同状态
FOFAHUB使用测试
AI目标分割能力,无需绿幕即可实现快速视频抠图
Check if IP or port is blocked
BioVendor Human Club Cellular Protein (CC16) Elisa Kit Research Fields
Handwriting a blogging platform ~ Day 3
【Unity入门计划】2D Game Kit:初步了解2D游戏组成
ros多客户端请求服务
Nanoprobes Polyhistidine (His-) Tag: Recombinant Protein Detection Protocol
[LeetCode Daily Question]——654. The largest binary tree
Ringtone 1161. Maximum In-Layer Elements and