Tôi đã gặp phải một vấn đề rất lạ và tôi đã tự hỏi, nếu có ai có thể giúp tôi ở đây vì tôi hoàn toàn lạc mất.Vấn đề về hiệu suất tự động iOS trong chế độ dọc. [NSISEngine tối ưu hóa]
Bối cảnh: Tôi đang phát triển một ứng dụng có cấu trúc phân cấp tương đối đơn giản. Chỉ cần một vài bộ điều khiển xem nhưng khá nhiều hình ảnh có độ phân giải cao. Chúng được trình bày trong một UIScrollView
với một số văn bản, vv Trong khi thử nghiệm nó ở chế độ dọc, scrollview không di chuyển trơn tru cả. Dường như tốc độ khung hình giảm xuống còn khoảng 4-5 khung hình/giây. Đầu tiên tôi nghĩ đó là vì những hình ảnh có độ phân giải cao.
Nhưng sau đó tôi chuyển iPad sang chế độ ngang và mọi thứ diễn ra suôn sẻ. Kể từ khi tôi có một tập tin xib riêng biệt cho chân dung và phong cảnh, tôi nghĩ rằng có phải là một vấn đề trong bức chân dung-xib. Hóa ra là không có. Cả hai đều có cùng một lớp VC và do đó sử dụng cùng một mã và cả hai xibs gần như giống hệt nhau ngoại trừ kích thước và vị trí của các khung nhìn.
Để thu hẹp sự cố, tôi đã sử dụng TimeProfiler của Instrument để xem những gì gây ra sự cố. Khi nó bật ra, TimeProfiler cho thấy một số cuộc gọi đến [NSISEngine optimize]
(được kích hoạt bởi NSLayoutConstraint
). Ở chế độ dọc, có nhiều cuộc gọi hơn và các cuộc gọi đó mất nhiều thời gian hơn. Hơn nữa xuống cây tôi thấy rằng trong chế độ chân dung [NSISEngine optimize]
được gọi là [NSISEngine fixupIntegralizationViolations]
và trong cảnh quan nó không.
Tôi thậm chí đã xóa tất cả các bộ điều khiển của khung nhìn khỏi ứng dụng ngoại trừ rootVC và một khác được trình bày bởi rootVC. Các vc trình bày chỉ chứa một số hình ảnh, các nút và một số hình ảnh động. Nó chỉ có một xib cho cả hai định hướng và là (như tất cả những người khác quá) layed với autolayout.
Bố cục hoạt động như trong cả hai hướng và không có sự mơ hồ (theo như tôi có thể biết. Ít nhất po [[UIWindow keyWindow] _autolayoutTrace]
không hiển thị bất kỳ).
Tôi đã đính kèm ảnh chụp màn hình của TimeProfile của quá trình trình bày vc. Một cho chân dung và một cho cảnh quan. Như bạn có thể thấy, trong cảnh quan, các cuộc gọi tới [NSISEngine optimize]
chỉ mất một phần nghìn giây trong khi ở chế độ dọc, chúng chiếm hơn 3000 mili giây.
Có ai có thể cho tôi biết tại sao không? Hoặc có thể có bất kỳ ý tưởng gì tôi có thể làm để tìm ra vấn đề là gì?
Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!
Thx
Liên kết đến một phiên bản lớn hơn của hình ảnh: link
chỉ tò mò nếu bạn đã từng theo dõi báo cáo lỗi này? Tôi đã gặp sự cố tương tự với sự chậm trễ tự động lạ, với các công cụ hiển thị nhiều cuộc gọi đến NSISEngine fixUpIntegralizationViolations ... –
Không, thật đáng buồn là tôi chưa nghe thấy gì – Tobi