OC 属性修饰符篇

一、MRC 与 ARC 各自的属性修饰符

1 // 属性修饰符按代码规范的顺序
2 // 是否原子操作、是否可读写、内存管理
3 @property (nonatomic, readwrite, copy) NSString *str;
4 // PS:属性修饰符顺序并没有硬性规定。

二、内存管理修饰符

  • MRC 模式下属性修饰符

    retain: 引用计数加1。

    assign: 分配内存,类似于copy。常用于基本数据类型,比如:int,long,NSInteger等。

  • ARC 模式下属性修饰符

    weak: 当引用计数为零时,将其置为nil。

    strong: 与retain等同。

    copy: 在内存中申请一块内存,将数据拷贝到新的内存中,即,新创建一个对象,并且引用计数置为1。原来对象引用计数不变。

三、原子操作

原子操作 nonatomic / atomic 主要应用于多线程

四、读写权限

readwrite / readonly

时间: 2024-10-30 06:38:50

OC 属性修饰符篇的相关文章

iOS 属性修饰符记录 --不定时更新

重新审视了一下OC在属性修饰符,特意记录一下来.以后不定时更新 > retain:只有在非ARC下才会有效,所有如果在ARC下使用了retain修饰也白搭 如以下的data属性用retain修饰: #import <UIKit/UIKit.h> @interface MyView : UIView @property(nonatomic, retain) NSMUtableArray* data; @end 在对应的setter方法中,会以如下代码实现: if (_data != new

iOS 属性修饰符的区别

前言iOS5 之前 所有的 开发都需要开发者自己控制自己的对象的引用和释放.使用的修饰符是 assign.copy.retain iOS5 之后,Apple 推出了ARC(自动引用计数)机制,推出了新的修饰符替代之前的修饰符 strong.weak 简单说明1:ARC环境下,strong代替retain.weak代替assign2:weak的作用:在ARC环境下,,所有指向这个对象的weak指针都将被置为nil.这个T特性很有用,相信很多开发者都被指针指向已释放的对象所造成的EXC_BAD_AC

IOS 类的属性修饰符atomic

在声明一个类的属性时,默认这个属性会被修饰atomic,意思是原子性访问的. nonatomic和atomic修饰的属性,在自己没有重写setter和getter的时候才会发生作用,其主要的作用可以理解为,atomic修饰的setter和getter在多线程下面是互斥的,相当于setter和getter中开始和结束的地方加锁了. stackoverflow上面对atomic解释赞同最多的答案: atomic不等于线程安全,对于常见的引用.指针.4字节(位宽字节)的变量,其赋值操作本身就是原子的

ios学习路线—Objective-C(属性修饰符)

readonly: 此标记说明属性是只读的,默认的标记是读写,如果你指定了只读,在@implementation中只需要一个读取器.或者如果你使用@synthesize关键字,也是有读取器方法被解析.而且如果你试图使用点操作符为属性赋值,你将得到一个编译错误. readwrite: 此标记说明属性会被当成读写的,这也是默认属性.设置器和读取器都需要在@implementation中实现.如果使用@synthesize关键字,读取器和设置器都会被解析. nonatomic: 非原子性访问,对属性赋

ES6深入浅出-5 新版对象-2.属性修饰符

对象语法增强 已经有了个对象的新增语法 还需要一个api来做呢?. 因为有的时候,你需要在旧的对象上添加get.set. 读的时候就走get 写的时候就走set 假设很早之前在项目里写了一个old对象,它的属性都是写好的,现在想给oldObject加get.set.没有办法再去重新定义它 这个api是给已经定好的对象,来不及再去重新定义的对象修改属性, 这样就可以设置oldObject的值为1. 但是set方法里面什么也没做.所以输出oldObject.x的值为undefined 这个api还有

张超超OC基础回顾_05 property修饰符,id类型,instancetype。。。

一.property 如果给一个属性同时提供了getter/setter方法, 那么我们称这个属性为可读可写属性 如果只提供了getter方法, 那么我们称这个属性为只读属性 如果只提供了setter方法, 那么我们称这个属性为只写属性 如果既没有提供getter也没有提供setter方法, 那么我们称这个属性为私有属性 格式: @property(属性修饰符) 数据类型 变量名称; @property(readwrite) int age; // 可读可写的 ,不用写的 默认就是这 /* -

@property的4类修饰符

1.读写性修饰符:readwrite | readonly readwrite:表明这个属性是可读可写的,系统为我们创建这个属性的setter和getter方法. readonly:表明这个属性只能读不能写,系统只为我们创建一个getter方法,不会创建setter方法 2.setter相关修饰符:assign | retain | copy setter相关的修饰符表明setter方法应该如何实现 assign:表示直接赋值,用于基本数据类型(NSInteger和CGFloat)和C数据类型(

C#继承机制 继承与访问修饰符

继承与访问修饰符 访问修饰符是一些关键字,用于指定声明的成员或类型的可访问性.类的继承中有四个访问修饰符: public protected internal private.使用这些访问修饰符可指定下列五个可访问性级别: public protected internal internal protected private. 1.继承中关于可访问域的一些问题 基类的所有成员(实例构造函数.析构函数和静态构造函数除外)都由派生类型继承.这甚至包括基类的私有成员.但是,私有成员的可访问域只包括声

四.OC基础--1.文档安装和方法重载,2.self和super&amp;static,3.继承和派生,4.实例变量修饰符 ,5.私有变量&amp;私有方法,6.description方法

四.OC基础--1.文档安装和方法重载, 1. 在线安装 xcode-> 系统偏好设置->DownLoads->Doucument->下载 2. 离线安装 百度xcode文档 3. 方法重载: 是指在一个类中定义多个同名的方法 在OC中没有重载 2.self和super&static, self和super: 1. self理解: 谁调用当前方法, self就代表谁. 比如: 在对象方法中,self代表的是对象, 因为只有对象才可以调用对象方法 在类方法中, self代表的