我正在使用 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%,加载相同的100条消息需要15秒。好多了,但仍然很高。我需要IF ......
如何改善代码性能?欢迎任何提示和技巧。
TIA,
鲍勃