iPhone 开发进阶——深入理解 iPhone OS/SDK 与 Objective-C 2.0
2010-02-22 06:26:00 来源:WEB开发网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
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››iPhone应用帮助残障儿童看图说话
- ››iPhone实用工具AppBox Pro使用教程大揭秘
- ››iphone4省电方法
- ››iphone 获取地址的详细信息
- ››iPhone 库的基本内存管理策略
- ››iPhone加密文字亲手做 私密信息有保障
- ››iphone 根据经纬度坐标取详细地址(包括国,省,市...
- ››iphone/ipad ios cocoa object-c 近期苹果UI部分小...
- ››iphone中如何进行多线程编程
- ››iPhone OS SDK的这些事[安装、下载、版本、实例、...
- ››iPhone ObjectC的NSAutoreleasePool
更多精彩
赞助商链接