strong weak
strong与weak是由ARC新引入的对象变量属性
ARC引入了新的对象的新生命周期限定,即零弱引用。如果零弱引用指向的对象被deallocated的话,零弱引用的对象会被自动设置为nil。
@property(strong) MyClass *myObject;
相当于@property(retain) MyClass *myObject;
@property(weak) MyOtherClass *delegate;
相当于@property(assign) MyOtherClass *delegate;
强引用与弱引用的广义区别:
强引用也就是我们通常所讲的引用,其存亡直接决定了所指对象的存亡。如果不存在指向一个对象的引用,并且此对象不再显示列表中,则此对象会被从内存中释放。 弱引用除了不决定对象的存亡外,其他与强引用相同。即使一个对象被持有无数个若引用,只要没有强引用指向他,那麽其还是会被清除。没办法,还是 “强哥” 有面子。 简单讲strong等同retain
weak比assign多了一个功能,当对象消失后自动把指针变成nil,好处不言而喻。 __weak, __strong 用来修饰变量,此外还有 __unsafe_unretained, __autoreleasing 都是用来修饰变量的。
__strong 是缺省的关键词。 __weak 声明了一个可以自动 nil 化的弱引用。 __unsafe_unretained 声明一个弱应用,但是不会自动nil化,也就是说,如果所指向的内存区域被释放了,这个指针就是一个野指针了。 __autoreleasing 用来修饰一个函数的参数,这个参数会在函数返回的时候被自动释放。 |
- 浏览: 15463 次
- 性别:
- 来自: 成都
最新评论
-
quickle:
先抢个沙发
jboss jms 配置
相关推荐
- **强引用(strong)**:默认的引用计数策略,保持对象的引用,直到没有强引用指向该对象。 - **弱引用(weak)**:不会增加对象的引用计数,常用于防止循环引用。 - **无主引用(unowned**):类似弱引用,但...
弱引用与强引用 在ARC环境下,`strong`和`weak`关键字分别表示强引用和弱引用。强引用可能导致循环引用,而弱引用则避免了这种情况。 ### 四、Foundation框架 Objective-C的Foundation框架提供了大量基础类,如...
3. 无主引用:无主引用(unowned reference)与弱引用类似,不增加对象的引用计数,但无主引用假设对象在其生命周期内始终存在。无主引用通常用于表示两个对象生命周期紧密关联的情况。 三、内存管理的规则 1. 谁...
- 强引用(Strong Reference)与弱引用(Weak Reference):在ARC中,可以使用`strong`和`weak`关键字来声明变量。`strong`是默认的,表示强引用;`weak`表示弱引用,不增加对象的引用计数,当对象被其他强引用全部...
在Objective-C中,每个对象都有一个引用计数,表示指向该对象的强引用数量。当对象被创建时,它的引用计数为1。每当有新的强引用指向该对象,引用计数加1;相反,当一个强引用失效,引用计数减1。当对象的引用计数...
1. **强引用(Strong)**: 默认的引用类型,增加对象的引用计数。 2. **弱引用(Weak)**: 不增加对象的引用计数,当对象被释放时,弱引用会自动设为nil。 3. **自动释放池(Autorelease Pool)**: 在...
2. 强引用与弱引用: - 强引用:默认情况下,对象间的引用是强引用,会增加对象的引用计数。 - 弱引用:不会增加对象的引用计数,当没有其他强引用指向对象时,即使有弱引用,对象也会被释放。 三、类别...
3. **强引用(Strong)、弱引用(Weak)和无主引用(Unowned)**:ARC中提供了不同类型的引用,以避免循环引用问题。 ### 四、Objective-C与Cocoa Touch 在iOS开发中,Objective-C常常与Cocoa Touch框架结合使用,...
- `strong`:表示对属性对象的强引用,意味着只要有一个`strong`引用指向某个对象,该对象就不会被释放。 - `readonly`:表示该属性是只读的,只能通过初始化或在类内部设置值。 - `assign`:通常用于基本类型或C...
- 弱引用与强引用的区别 - 循环引用问题及其解决方案 - 手动内存管理的基本原则(适用于旧版本的Objective-C) 5. **高级主题** - KVC(Key-Value Coding)与KVO(Key-Value Observing) - GCD(Grand Central ...
2. **强引用(strong)**:默认的引用类型,增加对象的引用计数。 3. **弱引用(weak)**:不增加对象的引用计数,用于打破循环引用。 4. **无主引用(unowned)**:适用于生命周期与持有者相同的场景,不会导致内存...
另外,`unregiexample`则是注销组件的工具,它会从注册表中删除与组件相关的条目,确保当组件不再需要时,系统可以正确清理资源。 在C语言实现COM组件时,我们还需要关注线程安全和进程间通信(IPC)。COM支持多...
属性的类型通常使用`assign`,除非对象需要保留对代理的强引用,这时使用`strong`。如果代理遵循协议并需要在协议方法中修改自身,可能会使用`weak`来防止循环引用。`copy`通常用于需要保持原始数据不变的情况,不...
1. **内存管理**:Objective-C使用引用计数(ARC)自动管理内存,但开发者仍需理解内存管理的基本原则,如强引用、弱引用和autoreleasepool。 2. ** Blocks**:Blocks是Objective-C的一个强大特性,允许在代码中...
与C++相比,Objective-C具有更强的动态特性。Objective-C的消息传递机制使得对象可以在运行时动态地接收消息,这意味着对象的行为可以在程序执行过程中改变。这种动态性是Objective-C的一个重要特点,但也可能带来...
### Objective-C 学习介绍与理解 #### 一、Objective-C 概述 Objective-C 是一种结合了 C 语言和面向对象编程特性的混合型编程语言。它最早由 Brad Cox 和 Tom Love 在 1980 年代初开发完成,并在 NeXT 公司的 ...
内容概要:本教程全面介绍了Object-C编程语言,涵盖其定义特点、开发环境、基础语法、面向对象编程核心概念、内存管理和引用计数机制、Foundation框架、动态特性与运行时环境等关键技术。并通过实践项目加强学习效果...
Object Pascal 是一种高级编译语言,具备强类型特性,支持结构化和面向对象编程。其优势在于代码的可读性、快速编译和模块化编程,通过使用多个单元文件实现。 **使用 Object Pascal** 主要是通过 Borland 公司的...
### iOS企业培训视频Object-C基础等教程就业班全套课程知识点概览 #### 一、基础知识篇 ##### 1.1 iOS开发概述 - **iOS系统介绍**:了解iOS操作系统的特性和版本发展历史。 - **iOS开发环境搭建**:安装Xcode集成...