我正在使用ScriptingBridge.framework与Mail.app交互。以下代码大约需要 30 秒来加载 100 条消息。我在配备 4GB (1333 MHz DDR3) 内存的 2.8GHz Core i7 MacBook Pro 上运行它。我的操作系统是 10.7.4。
MailApplication *mailApp = [SBApplication applicationWithBundleIdentifier:@"com.apple.mail"];
MailMailbox *inbox = [mailApp inbox];
SBElementArray *messages = [inbox messages];
NSMutableArray *tmp = [NSMutableArray arrayWithCapacity:[messages count]];
for (MailMessage *message in messages) {
RRMailItem *mailitem = [RRMailItem new];
[mailitem setSender:[message sender]];
[mailitem setSubject:[message subject]];
[mailitem setDate:[message dateSent]];
if (message.mailAttachments.count > 0) {
[mailitem setHasAttachment:YES];
}
[tmp addObject:mailitem];
}
RRMailItem 是一个简单的对象,如下所示。它只是一个保存值的对象。它没有任何方法:
@interface RRMailItem : NSObject
@property NSString *sender;
@property NSString *subject;
@property NSDate *date;
@property BOOL hasAttachment;
@end
如果我删除if (message.mailAttachments.count > 0)
,执行时间会减少 50%,到 15 秒来加载相同的 100 条消息。好多了,但仍然很高。我需要IF...
如何提高代码性能?欢迎任何提示和提示。
TIA,
鲍勃