strong和weak

在iOS开发的过程中,我们一般不用retain,和assign,而是用strong和weak,这时候,我们可以把strong理解为retain,而weak理解为assign,比较容易理解。

在ARC情况下:

Strong
和weak:

如果一个对象同时被两个指针所引用,例如:

Object *b1 = [[Object alloc]initAge:23];

Object *b2 = b1;   

1.

如果你在property里面声明的是strong,那么这个就是强引用,

在进行赋值的时候,对象的空间不会被释放,因为还有一个

b2引用着这个对象,引用计数器不为0.空间不会被回收

2.

当property的属性是weak(弱引用)的时候,当进行初始化

的时候。b1拥有着对象的真正的空间,而b2没有这个对象

的所有权,当把b1置空的时候,此时的对象没有被任何指针

引用,这时候,系统就会自动的回收内存。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-15 10:21:47

strong和weak的相关文章

Objective-C中,ARC下的 strong和weak指针原理解释

Objective-C中,ARC下的 strong和weak指针原理解释 提示:本文中所说的"实例变量"即是"成员变量","局部变量"即是"本地变量" 一.简介 ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain.release.autorelease语句.你不再需要担心内存管理,因为编译器为你处理了一切 注意:ARC 是编译器特性,而不是 iOS 运行时特性(除

ARC - strong和weak指针

ARC指南1 - strong和weak指针 提示:本文中所说的"实例变量"即是"成员变量","局部变量"即是"本地变量" 一.简介 ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain.release.autorelease语句.你不再需要担心内存管理,因为编译器为你处理了一切 注意:ARC 是编译器特性,而不是 iOS 运行时特性(除了weak指针系统),它也不

iOS strong与weak的使用

strong修饰的属性是强指针类型的,weak修饰的属性是弱指针类型的 ARC对于内存中的对象管理机制,当某个对象没有被强指针指向的时候,该对象就会被销毁. 所以不适当的使用strong和weak修饰属性容易造成内存泄露. OC对象(继承NSObject的类创建的对象)用strong修饰. UI控件连线的时候都会用weak修饰,给了大家一个假象.就是UI控件属性都是用weak修饰的.这种说法是错误的 当我们连线的时候,storyboard会根据图层结构分析,判断是否使用weak修饰,验证: 任何

strong与weak

property 中的strong 与weak strong关键字与retain关似,用了它,引用计数自动+1,用实例更能说明一切 @property (nonatomic, strong) NSString *string1; @property (nonatomic, strong) NSString *string2; 有这样两个属性, @synthesize string1; @synthesize string2; 猜一下下面代码将输出什么结果? self.string1 = @"St

【转截strong和weak指针

参考文献:  iOS ARC 完全指南 提示:本文中所说的"实例变量"即是"成员变量","局部变量"即是"本地变量" 一.简介 ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain.release.autorelease语句.你不再需要担心内存管理,因为编译器为你处理了一切 注意:ARC 是编译器特性,而不是 iOS 运行时特性(除了weak指针系统),它也不是类似

iOS开发-assign、retain、copy、strong、weak的区别

对于初学的开发者,对于assign.retain.copy.strong.weak的用法及意义可能不是很明白,我对于这个问题也研究了很久,写篇博文,巧巧代码,让我们来瞧瞧吧! 先定义一个Student类: #import <Foundation/Foundation.h> @interface Student : NSObject @property (nonatomic, copy) NSString *name; @end 然后先是mrc下的assign声明 @property (nona

object-c中的assign,retain,copy,atomic,nonatomic,readonly,readwrite以及strong,weak

assign:指定setter方法用简单的赋值,这是默认操作.你可以对标量类型(如int)使用这个属性.你可以想象一个float,它不是一个对象,所以它不能retain.copy.assign指定setter方法用简单的赋值,这是默认操作.你可以对标量类型(如int)使用这个属性.你可以想象一个float,它不是一个对象,所以它不能retain.copy. retain:指定retain应该在后面的对象上调用,前一个值发送一条release消息.你可以想象一个NSString实例,它是一个对象,

IOS 开发笔记-基础 UI(8)控件连线的 strong 和 weak 设定

回忆 oc 的内存管理: objective-c 语法快速过(6)内存管理原理,objective-c 语法快速过(7)编译器特性ARC ARC是苹果为了简化程序员对内存的管理,推出的一套内存管理机制,使用ARC机制,对象的申请和释放工作会在运行时,由编译器自动在代码中添加retain和release 1> strong:强指针引用的对象,在生命周期内不会被系统释放,在OC中,对象默认都是强指针 2> weak:弱指针引用的对象,系统会立即释放,弱指针可以指向其他已经被强指针引用的对象 他们都

x264 编码器选项分析 (x264 Codec Strong and Weak Points) 1

文章文件夹: x264 编码器选项分析 (x264 Codec Strong and Weak Points) 1 x264 编码器选项分析 (x264 Codec Strong and Weak Points) 2 ====================== 本文简单翻译了MSU实验室做的X264的Option(即编码选项,后文称其英文名)分析报告<x264 Codec Strong and Weak Points>.看了之后感觉分析得十分透彻.并且其採用的方法也非常有參考价值,因此记录一

[转]strong,weak, retain, assign的区别

转自 http://lizhuang.iteye.com/blog/1989337 对Objective-C的对象变量属性不是很了解,就去找了一下这方面的文章,觉得这篇文章不错就转载了. strong与weak是由ARC新引入的对象变量属性 xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和assign,是不支持ARC的.xcode 4.3(ios5和以上版本)之后就有了ARC,并且开始使用 strong与weak assign: 用于非指针变量.用于 基础数