2012-10-20 32 views
9

Tôi đang tối ưu hóa quá trình chuyển đổi có vẻ chậm trên thiết bị của mình. Tôi đang đẩy một số UIViewController từ mã khác khi hàng của UITableView được chọn. Có một tạm dừng đáng chú ý sau khi lựa chọn hàng và trước khi xem mới được đẩy.Điều gì có thể xảy ra giữa viewWillAppear và viewDidAppear?

Một số ghi nhật ký chỉ ra rằng tất cả mã của tôi là hợp lý nhanh chóng, từ lựa chọn hàng cho đến khi bộ điều khiển được đẩy viewWillAppear. Nhưng sau đó thời gian giữa viewWillAppearviewDidAppear được đăng nhập vào khoảng 0,7 giây.

Bản thân quá trình chuyển đổi (tôi tin) chỉ mất 0.3 giây. Điều gì có thể được tính cho phần còn lại?

Tôi đang thử nghiệm trên iPhone 4, vì vậy tôi không mong đợi hiệu suất tuyệt vời nhất. Nhưng tôi sẽ có thể phù hợp với hiệu suất tương tự của các ứng dụng tương tự khác trên cùng một thiết bị, phải không?

+0

Bạn có thể hiển thị một số mã không? – Peres

+0

Bạn đã ghi đè phương thức layoutSubviews của chế độ xem bộ điều khiển của mình chưa? Nếu vậy, bạn có logic phức tạp trong đó? –

+0

@JackyBoy Tôi sẽ không biết phải đăng gì, vì tôi không chắc chắn những gì đang được thực hiện giữa hai người. –

Trả lời

0

Bản thân quá trình chuyển đổi (tôi tin) chỉ mất 0.3 giây. Điều gì có thể được tính cho phần còn lại?

Tài thường được tiêu thụ trong các phương pháp sau: drawRect:, layoutSubviews, viewDidLoad, viewWillAppear:. Ngoài ra, tải từ NIB có thể yêu cầu khá nhiều thời gian.

Sau viewWillAppear:, iOS sẽ tạo ảnh chụp nhanh của chế độ xem mới (và có thể là hiện tại) để thực hiện hoạt ảnh mượt mà giữa hai màn hình. Vì vậy, hãy chắc chắn rằng bản vẽ và mã bố trí cho cả hai giao diện điều khiển là đủ nhanh.

+0

Tôi đã định giờ mã loadView và viewDidLoad của mình (tôi đang xây dựng chế độ xem theo chương trình) - đây có phải là điều bạn đang đề cập đến bằng cách vẽ và mã bố cục không? –

+1

Tài nguyên thường được tiêu thụ theo các phương pháp sau: 'drawRect:', 'layoutSubviews',' viewDidLoad', 'viewWillAppear:'. Ngoài ra, tải từ NIB có thể yêu cầu khá nhiều thời gian. – Stream

+0

Tôi chưa thay đổi drawRect và layoutSubviews. viewDidLoad và viewWillAppear cả hai đều hoàn thành trước sự chậm trễ mà tôi đang gặp phải. 0,7 giây của tôi nằm ở cuối chế độ xemWillAppear và cuối chế độ xemDidAppear. –

1

Tôi đã có một câu hỏi tương tự cách đây vài tuần, và tôi đã viết một bài đăng blog về những gì tôi thấy:

http://bradbambara.wordpress.com/2014/07/31/object-life-cycle-uiviewcontroller/

TL; phiên bản DR là iOS sẽ:

  • thực hiện bố cục của cảnh mới của bạn
  • thực hiện chuyển đổi sang cảnh mới của bạn (nếu đó là chuyển tiếp động)

... do đó, dự đoán của tôi là sự chậm trễ có thể do quá trình chuyển đổi đặc biệt kéo dài hoặc nếu bạn đang thực hiện bất kỳ công việc nào có hiệu suất cao trong mã bố cục của mình.

Các vấn đề liên quan