WEB开发网
开发学院手机开发iPhone 开发 iPhone 开发进阶——深入理解 iPhone OS/SDK 与 O... 阅读

iPhone 开发进阶——深入理解 iPhone OS/SDK 与 Objective-C 2.0

 2010-02-22 06:26:00 来源:WEB开发网   
核心提示:retain - 计数器 +1release - 计数器 -1另外如果不使用 retain,release,可以使用(autorelease)来自动释放对象,iPhone 开发进阶——深入理解 iPhone OS/SDK 与 Objective-C 2.0(2),容器Objective-C 中的容器主要有以下3种:数组

retain - 计数器 +1

release - 计数器 -1

另外如果不使用 retain,release,可以使用(autorelease)来自动释放对象。

容器

Objective-C 中的容器主要有以下3种:

数组

字典

Set

向容器中添加的内容不能直接用 int 或 float,需要通过 NSNumber 等封装类来实现。Objective-C 2.0 开始可以使用迭代子(Enumerator),来顺序访问容器中的元素。

Notification

Notification是消息通知的功能。具体使用 NSNotificationCenter 类。将需要接受通知的对象,方法,事件注册到该类上。

归档(Archive)

归档是指将对象的内存布局原样地保存到文件系统上。同样对应的由文件中的数据生成对象叫做UnAchive。在 iPhone SDK 中使用 NSKeyedArchiver 和 NSKeyedUnarchiver 类来实现。

一般在程序结束的时候,保存当前的状态,再次启动的时候UnAchive一下,就又回到了刚才退出时的状态。下面是一个例子:

// MyKeyedArchiver.h

#import

@interface NSKeyedArchiver (MyKeyedArchiver)

- (void)encodeValueOfObjCType:(const char *)valueType at:(const void *)address;

@end

#import "MyKeyedArchiver.h"

@implementation NSKeyedArchiver (MyKeyedArchiver)

- (void)encodeValueOfObjCType:(const char *)valueType at:(const void *)address

{

NSMutableData *datas = [NSMutableData data];

NSArchiver *arch = [[NSArchiver alloc] initForWritingWithMutableData:datas];

[arch encodeValueOfObjCType:valueType

at:address];

[self encodeObject:[NSData dataWithData:datas]];

[arch release];

}

@end

// MyKeyedUnarchiver.h

#import

@interface NSKeyedUnarchiver (MyKeyedUnarchiver)

- (void)decodeValueOfObjCType:(const char *)valueType at:(void *)data;

@end

#import "MyKeyedUnarchiver.h"

@implementation NSKeyedUnarchiver (MyKeyedUnarchiver)

- (void)decodeValueOfObjCType:(const char *)valueType at:(void *)data

{

NSData *datas = [self decodeObject];

NSUnarchiver *unarch = [[NSUnarchiver alloc] initForReadingWithData:datas];

[unarch decodeValueOfObjCType:valueType

at:data];

[unarch release];

}

@end

上一页  1 2 

Tags:iPhone 开发 进阶

编辑录入:coldstar [复制链接] [打 印]
赞助商链接