2

Mail.appとやり取りするためにScriptingBridge.frameworkを使用しています。次のコードは、100 件のメッセージを読み込むのに約 30 秒かかります。4GB (1333 MHz DDR3) メモリを搭載した 2.8GHz Core i7 MacBook Pro で実行しています。私のOSは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が必要です...

コードのパフォーマンスを改善するにはどうすればよいですか? ヒントやヒントは大歓迎です。

ティア、

ボブ

4

1 に答える 1