Khi tham khảo API của UIImage nói:
+ (UIImage *) imageNamed: (NSString *) name
Phương pháp này tìm trong bộ nhớ cache của hệ thống đối tượng hình ảnh với mẫu d tên và trả về đối tượng đó nếu nó tồn tại. Nếu một đối tượng hình ảnh phù hợp chưa có trong bộ đệm ẩn, phương thức này sẽ tải dữ liệu hình ảnh từ tệp được chỉ định, lưu trữ nó và sau đó trả về đối tượng kết quả.
+ (UIImage *) imageWithContentsOfFile: (NSString *) đường dẫn
Phương pháp này không cache đối tượng hình ảnh.
như vậy, chúng ta có thể thấy rằng nếu bạn có rất nhiều cùng phần UI (như UITableViewCell) có thể sử dụng cùng một hình ảnh (thường là một biểu tượng), và do hiệu suất, tất nhiên chúng tôi muốn sử dụng lại cùng một hình ảnh, để chúng tôi sẽ tiết kiệm bộ nhớ cho việc sử dụng khác. Hình ảnh tái sử dụng thường được sử dụng trong phần tử ui mà người dùng của chúng tôi có thể hoạt động trên đó nhiều lần. Vì vậy, nó có giá trị cho chúng tôi để tái sử dụng nó. Vì vậy, bạn có thể chọn sử dụng phương thức imageNamed.
Mặt khác, trong một ứng dụng sẽ có một số yếu tố giao diện UI sẽ có trong vòng đời của ứng dụng, chẳng hạn như Nút, chế độ xem biểu trưng. cũng ở đó trong vòng đời của ứng dụng, bạn sẽ không cân nhắc xem những hình ảnh này có phải là bộ nhớ cache hay không. Do đó, bạn có thể chọn sử dụng phương thức imageNamed.
Ngược lại, trong một ứng dụng, thường có một số UI Elements đã tạo ra động. Ví dụ, ứng dụng của chúng tôi hỗ trợ động nền, để người dùng có thể chọn nền họ thích. Và nền có thể là hình ảnh. Do đó, chúng tôi có thể có giao diện liệt kê rất nhiều khác nhau nền (thường hiển thị bằng cách sử dụng UIImageView) cho người dùng lựa chọn, chúng ta có thể đặt tên cho xem danh sách MyBackgroundListView vì vậy, khi người dùng chọn một hình nền , các MyBackgroundListView nên bị hủy diệt, bởi vì nó có chức năng finishs .Công thời gian tiếp theo của nó cho người sử dụng muốn thay đổi nền của họ, chúng tôi có thể tạo MyBackgroundListView lần nữa Vì vậy, các hình ảnh sử dụng bởi MyBackgroundListView nên không được lưu trữ, hoặc bộ nhớ ứng dụng của chúng ta sẽ cạn kiệt Vì vậy, thời gian này bạn nên sử dụng imageWithContentsOfFile phương pháp.
Khi Apple doc Supporting High-Resolution Screens In Views nói
Trên các thiết bị với màn hình độ phân giải cao, các imageNamed:, imageWithContentsOfFile: và initWithContentsOfFile: phương pháp tự động tìm kiếm một phiên bản của hình ảnh theo yêu cầu với @ 2x modifier trong tên của nó. Nếu nó tìm thấy một, nó tải hình ảnh đó để thay thế. Nếu bạn không cung cấp phiên bản có độ phân giải cao của một hình ảnh nhất định, đối tượng hình ảnh vẫn tải hình ảnh có độ phân giải tiêu chuẩn (nếu có) và chia tỷ lệ trong khi vẽ.
vì vậy bạn sẽ lo lắng về đường dẫn tìm kiếm của hình ảnh cho vấn đề màn hình võng mạc. IOS sẽ giúp bạn đối phó với nó.
Xin lỗi vì tiếng Anh kém của tôi. Có thể nó hữu ích.
Hoặc, bạn có thể sử dụng [hình ảnh UIImageWithContentsOfFile: đường dẫn], không lưu hình ảnh. – bentford