Time Profiler Instrument を使用して、アプリの大幅な遅延を特定しました。今、私は問題が何であるかを知っていますが、それについて何をすべきかわかりません。私はARCを使用しており、以下のように「Go」メソッドを呼び出すviewControllerがあります。Time Profiler の結果のスナップショットも含めました。これを解決する方法を知っている人はいますか?ありがとうございました!
メソッドのコードは次のとおりです。
- (void)go {
CGFloat width = self.imageViewA.bounds.size.width;
[UIView animateWithDuration:18.0 delay:0.0 options:UIViewAnimationOptionCurveLinear
animations:^ {
self.imageViewA.frame = CGRectOffset(self.imageViewA.frame, -width, 0);
self.imageViewB.frame = CGRectOffset(self.imageViewB.frame, -width, 0);
}
completion:^(BOOL finished) {
if (self.keepGoing) {
// now B is where A began, so swap them and reposition B
UIImageView *temp = self.imageViewA;
self.imageViewA = self.imageViewB;
self.imageViewB = temp;
self.imageViewB.frame = CGRectOffset(self.view.bounds,
self.view.bounds.size.width, 0.0);
// recursive call, but we don't want to wind up the stack
[self performSelector:@selector(go) withObject:nil afterDelay:0.0];
}
}];
}
これは私の時間プロファイルの結果です:
参考までに、私の .h ファイルも含めておきます。
@interface ViewController : GAITrackedViewController
@property (weak, nonatomic) IBOutlet UIBarButtonItem *lButton;
@property (weak, nonatomic) IBOutlet UIBarButtonItem *rButton;
@property (nonatomic, assign) BOOL keepGoing;
@property (nonatomic, strong) UIImageView *imageViewA;
@property (nonatomic, strong) UIImageView *imageViewB;
- (IBAction)handleLPressed:(id)sender;
- (IBAction)handleRPressed:(id)sender;
@end