黑马程序员-iOS基础-Objective-C基础(五)
来源:互联网 发布:ppp和hdlc对数据的 编辑:程序博客网 时间:2024/06/05 14:59
- Dot Syntax
- 创建对象
- 基本的内存管理
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
类的实现
我们通过实现getters来创建一个类的实现:
- #import "Photo.h"
- @implementation Photo
- - (NSString*) caption {
- return caption;
- }
- - (NSString*) photographer {
- return photographer;
- }
- @end
这部分的代码由@implementation再来加上类名开始,以@end结束。就跟类的接口定义一样,所有的方法跟接口定义里的一样。所有的对象都必要既要定义也要实现。
假如我们以前也写过代码的话,Objective-C里面的getters看上去跟别的差不多。所以我们下面就来介绍setters,它需要一点说明。
- - (void) setCaption: (NSString*)input
- {
- [caption autorelease];
- caption = [input retain];
- }
- - (void) setPhotographer: (NSString*)input
- {
- [photographer autorelease];
- photographer = [input retain];
- }
每个setter处理两个变量。第一个是当前存在对象的应用。第二个是新的输入对象。在支持垃圾回收的开发环境里,我们只要直接赋新值就可以了:
- - (void) setCaption: (NSString*)input {
- caption = input;
- }
但是假如我们不可以用垃圾回收机制的话,我们就需要先retain旧的对象,然后retain新的对象。
有两种方法可以释放一个引用对象:release 和 autorelease。标准的release会直接删除引用。autorelease方法会在将来的某个时候去release它。在它声明周期结束前,它会毫无疑问的存在。在本例中,上面setPhotographer中的photographer对象,将会在函数结束的时候被释放。
在setter里面用autorelease是安全的,因为新对象跟老的对象有可能是同一个对象有可能指向的是同一个对象。对于一个我们即将retain的对象,我们不应该立即release它。
这个也许现在看起来会困惑,但是随着我们的学习,会越来越能理解它。现在我们不需要立刻完全理解它。
0 0
- 黑马程序员-iOS基础-Objective-C基础(五)
- 黑马程序员-iOS基础-Objective-C基础(五)核心语法(下)
- 黑马程序员-iOS基础-Objective-C基础(一)
- 黑马程序员-iOS基础-Objective-C基础(一)
- 黑马程序员-iOS基础-Objective-C基础(二)
- 黑马程序员-iOS基础-Objective-C基础(三)
- 黑马程序员-iOS基础-Objective-C基础(四)
- 黑马程序员-iOS基础-Objective-C基础(六)
- 黑马程序员-iOS基础-Objective-C基础(七)
- 黑马程序员-iOS基础-Objective-C基础(八)
- 黑马程序员-iOS基础-Objective-C基础(九)
- 黑马程序员--iOS--Objective-C基础 (一)
- 黑马程序员-iOS基础-C语言基础(五)指针
- 黑马程序员——ios基础---Objective-C:基础语法
- 黑马程序员-----------Objective-C基础-----------OC基础
- 黑马程序员-iOS基础-Objective-C基础(二)面向对象思想及类
- 黑马程序员-iOS基础-Objective-C基础(四)OC开发技巧及核心语法(上)
- 黑马程序员-iOS基础-Objective-C基础(六)内存管理
- iOS 之OC内存管理(二)
- 软件工程第三次作业
- Android JNI开发一,HelloJni
- [Fixed] Whoa! Google Chrome has Crashed error in Windows®
- Linux驱动开发(2):Hello world模块
- 黑马程序员-iOS基础-Objective-C基础(五)
- Zoho Showtime: 你的演讲听众都在看手机吗?
- 二叉树的深度优先遍历和广度优先遍历
- 关于exlipse启动时jdk版本问题
- bash条件测试之空字符串的困惑
- jsp <c:set>标签的使用
- PocketCloud Computer Era
- iOS 之GCD和Block
- 使用双栈实现输出逻辑表达式的真值表