原文链接:http://www.cnblogs.com/VinceYuan/archive/2010/03/08/1680492.html
二 口诀与范式
1 口诀。
1.1 谁创建,谁释放(类似于“谁污染,谁治理”)。如果你通过alloc、new或copy来创建一个对象,那么你必须调用release或autorelease。换句话说,不是你创建的,就不用你去释放。
例如,你在一个函数中alloc生成了一个对象,且这个对象只在这个函数中被使用,那么你必须在这个函数中调用release或autorelease。
如果你在一个class的某个方法中alloc一个成员对象,且没有调用autorelease,那么你需要在这个类的dealloc方法中调用
release;如果调用了autorelease,那么在dealloc方法中什么都不需要做。
1.2 除了alloc、new或copy之外的方法创建的对象都被声明了autorelease。
1.3
谁retain,谁release。只要你调用了retain,无论这个对象是如何生成的,你都要调用release。有时候你的代码中明明没有
retain,可是系统会在默认实现中加入retain。不知道为什么苹果公司的文档没有强调这个非常重要的一点,请参考范式2.7和第三章。
2 范式。
范式就是模板,就是依葫芦画瓢。由于不同人有不同的理解和习惯,我总结的范式不一定适合所有人,但我能保证照着这样做不会出问题。
2.1 创建一个对象。
2.2 创建一个autorelease的对象。
2.3 Release一个对象后,立即把指针清空。(顺便说一句,release一个空指针是合法的,但不会发生任何事情)
2.4 指针赋值给另一个指针。
2.5 在一个函数中创建并返回对象,需要把这个对象设置为autorelease
2.6 在子类的dealloc方法中调用基类的dealloc方法
2.7 在一个class中创建和使用property。
2.7.1 声明一个成员变量。
2.7.2 声明property,加上retain参数。
2.7.3 定义property。
2.7.4 除了dealloc方法以外,始终用.操作符的方式来调用property。
self.objB 或者objA.objB
2.7.5 在dealloc方法中release这个成员变量。
示例代码如下(详细代码请参考附件中的memman-property.m,你需要特别留意对象是在何时被销毁的。):
2.7.6 给这个property赋值时,有手动release和autorelease两种方式。
分享到:
相关推荐
《Effective Objective-C 2.0》是一本由Matt Galloway所...《Effective Objective-C 2.0》通过解释Objective-C的关键概念、内存管理、编程范式、框架使用和设计模式等内容,旨在帮助开发者编写出更加高效和健壮的代码。
- **内存管理**:Swift提供了自动化的内存管理机制,大大减轻了开发者对于内存管理的负担。 - **Cocoa兼容性**:Swift设计之初就考虑到了与Cocoa API的良好兼容性,这意味着Swift可以直接调用C和Objective-C编写的...
C语言的关键特性包括指针操作、内存管理、结构化编程结构(if-else、循环、函数)以及系统级编程能力。 Objective-C: Objective-C是苹果公司用于开发iOS和Mac应用程序的主要编程语言,它是一种面向对象的语言,...
3. **引用计数**:在某些语言或库中,如Python和Objective-C,内存管理依赖于引用计数。每个对象都有一个引用计数,当引用计数变为零时,对象将被自动删除。然而,循环引用可能导致引用计数无法正确降低,从而引发...
- **内存管理**:有效管理JS运行过程中产生的资源。 - **异常处理**:提供稳定可靠的错误处理机制。 - **4.3.6 性能优化** - **编译优化**:采用提前编译技术,减少执行时间。 - **多线程执行**:利用多核CPU...
7. ** Reactive Programming**:Objective-C可以通过RAC(ReactiveCocoa)或者RxSwift实现反应式编程,这种编程范式让开发者能够以声明式的方式来处理异步数据流,简化复杂的事件处理。 8. **SwiftUI**:尽管不是...
在POP Handapp中,Objective-C被用来创建和管理应用程序的结构、视图控制器、模型对象以及与用户交互的界面元素。 POP(Protocol Oriented Programming)是一种编程范式,强调利用协议(Protocol)来实现多态性,而...
1. **Objective-C 或 Swift**: Kickstarter 的 iOS 应用程序可能使用了 Objective-C 或 Swift 作为主要编程语言。Objective-C 是苹果的老牌编程语言,而 Swift 是后来推出的新一代语言,更现代且易于阅读和编写。...
了解Objective-C的内存管理(MRC)、Category、Protocol等特性对iOS开发很重要。 5. **TensorFlow**: TensorFlow是Google开发的深度学习框架,广泛应用于机器学习和人工智能领域。它支持定义、训练和部署各种模型,...
在iOS开发领域,源码分析是一项至关重要的技能,它有助于开发者深入理解应用程序的工作原理,提升编程技巧,以及解决潜在问题。本文将探讨名为"rmorlok-GetOffMyLawn-148492d"的iOS应用源码,通过分析其结构、功能和...
C语言进行iOS应用开发的各种知识点,例如App Store、Apple、Bonjour、Cocoa、Cocoa Touch、Finder、Instruments、Interface Builder、iPad、iPhone、iPod、iPod touch、iTunes、iTunes Store、Keychain、Leopard、...
学习C语言可以帮助理解计算机底层工作原理,为学习其他语言如C++或Objective-C打下基础。 这三门语言各有优势,Python适合快速开发和原型设计,Java适合大型项目和企业应用,C语言则适用于性能敏感的场景。掌握这些...
Objective-C是iOS开发中使用的主要编程语言,它支持面向对象和过程式编程范式,理解这些基础知识点对于编写高质量的iOS应用至关重要。 此外,书名中提及的iOS6是指该书专注于介绍与iOS6版本相关的开发知识。iOS6是...
它的核心特性包括C语言的简洁性、JSON的易读性、解释器执行的灵活性以及与Objective-C的紧密集成。Gravity支持虚拟机运行字节码,使其具有跨平台兼容性。它还引入了纤维(fibers)概念,增强了并发处理能力,而Pratt...
- SQL:数据库查询与管理。 - R:大数据分析。 - VB:简单程序构建。 - Ruby:简洁易学,安全相关应用。 选择编程语言应根据项目需求、开发效率和个人兴趣,不断学习和适应新的语言和技术是程序员的持续任务。随着...