最开始,DuContact是这样的:
#import <Foundation/Foundation.h>
#import <AddressBook/AddressBook.h>
@interface DuContact : NSObject
@property (nonatomic, assign) ABRecordID contactId;
@property (nonatomic, strong) NSString *name;
@property (nonatomic, strong) UIImage *thumbnailImage;
@property (nonatomic, strong) NSInteger phoneNumberCount;
@end
现在是这样:
#import <Foundation/Foundation.h>
#import <AddressBook/AddressBook.h>
@interface DuContact : NSObject
- (id)initWithContactId:(ABRecordID)contactId;
@property (nonatomic, readonly) ABRecordID contactId;
@property (nonatomic, readonly) NSString *name;
@property (nonatomic, readonly) UIImage *thumbnailImage;
@property (nonatomic, readonly) NSInteger phoneNumberCount;
@end
使用的场景满足条件:
1. 属性的获取比较耗时;
2. 通过某个标识可以获取到其他属性的值;
这样做的好处:
* 要依赖这些数据显示列表,加载速度非常快,只需要知道id就能创建一个对象,而获取id的代价非常小;
* 真正使用时才执行耗时的操作(获取某个属性的值);
* 如果数据足够多的时候,还可以防止内存溢出。类似图片的属性,会非常耗内存;