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が必要です...
コードのパフォーマンスを改善するにはどうすればよいですか? ヒントやヒントは大歓迎です。
ティア、
ボブ