2013-09-27 177 views
8

Tôi đang làm việc trên ứng dụng iOS trong Xcode. Trước đó tôi đã bắt đầu và chạy nó, lên đến một mức độ hạn chế của chức năng. Sau đó, có những thất bại biên dịch cho rằng mã tạo ra bản mẫu được soạn thảo không có cú pháp có lỗi cú pháp. Việc sao chép mã nguồn vào một dự án mới sẽ có một vấn đề khác.Làm thế nào tôi có thể giải quyết một ứng dụng đã bắt đầu trước đó, nhưng bây giờ "Bị chấm dứt do áp lực bộ nhớ"?

Ngay bây giờ, tôi có thể biên dịch và bắt đầu chạy, nhưng nó tuyên bố trước khi ngay cả hình ảnh khởi động cho thấy ứng dụng đã bị đóng do áp lực bộ nhớ. Tổng tài sản hình ảnh là khoảng 272M, mà có thể được tối ưu hóa một số mà không làm tổn hại đến sự phong phú đồ họa, và cho đến nay khu vực duy nhất của chương trình dự kiến ​​sẽ lớn. (Các tài sản có thể có hoặc không được giữ trong bộ nhớ, ví dụ mỗi hình ảnh tải hiện tại được điền và mã của tôi không bao giờ truy cập bất kỳ hình ảnh tải nào theo chương trình.) Và nó bị treo trước khi tải hình ảnh.

Làm cách nào để giải quyết vấn đề bộ nhớ này? Tôi có thể giảm bớt cách xử lý hình ảnh, nhưng tôi nghi ngờ có một nguyên nhân gốc rễ khác. Hay tiêu thụ bộ nhớ quá mức này?

Cảm ơn,

+1

Bạn đang sử dụng 272 MB? Điều này sẽ ngay lập tức bị giết trên iPhone 4S hoặc các thiết bị cũ hơn. IPhone 5 sẽ xử lý nó, nhưng đây là một lượng lớn bộ nhớ cần tiêu thụ ngay khi khởi động. –

+1

Vì vậy, bạn đang cố tải gần 300MB hình ảnh trong khi khởi chạy ứng dụng? – Wain

+0

Đồng ý, tôi khuyên bạn chỉ nên sử dụng tài nguyên tải tải lười nếu nó được hiển thị. –

Trả lời

4

Xem lại phần Performance Tuning tài liệu lập trình iOS của Apple. Sử dụng ứng dụng Instruments của Apple để xác định cách thức, thời điểm và dung lượng bộ nhớ mà ứng dụng của bạn đang sử dụng.

Một cách tiếp cận bạn nên cân nhắc là ngắt kết nối tài nguyên đồ họa khỏi ứng dụng của mình và thêm chúng lại một lần khi bạn cảm thấy chúng đáp ứng các yêu cầu và hạn chế của iOS.

Bây giờ, phần này của câu trả lời là ý kiến: có vẻ như ứng dụng của bạn có nguy cơ bị từ chối từ App Store, trong trường hợp đó là đích đến của bạn cho ứng dụng này.

+1

+1: Tôi đồng ý, điều này có thể sẽ gặp khó khăn khi thực hiện thông qua đánh giá cửa hàng ứng dụng nếu bạn đang sử dụng quá nhiều bộ nhớ khi khởi chạy ban đầu ... bạn phải tối ưu hóa điều này. –

+0

Cảm ơn bạn. Tôi biết ít nhất một tối ưu hóa nên cắt giảm đáng kể tổng số hình ảnh khởi chạy ... nhưng một phần lớn kích thước là hình ảnh khởi chạy. – JonathanHayward

+0

Mẹo nhanh về hình ảnh là: thay đổi kích thước hình ảnh để có kích thước tối đa mà iOS sẽ sử dụng (ví dụ: nếu bạn có hình ảnh 600x600 trên đĩa nhưng chỉ hiển thị hình ảnh là 300x300 trên màn hình võng mạc, hãy đổi kích thước hình ảnh nguồn thành 300x300). – bneely