目标C - 代码非常慢

时间:2012-07-13 01:29:33

标签: objective-c scripting-bridge

我正在使用 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,

鲍勃