我正在研究iOS中的谷歌地图,里面有很多标记(spprox.10到20)。我尝试优化我的代码。
为了创建标记,我们调用createMarker()
方法。
上一个代码:
func createMarker(){
//Creating UIImageView() object for each marker
let backgroundImg = UIImageView()
backgroundImg.image = UIImage(named: "JobMarkerInvitedBg")
}
优化代码:
let uiImageView = UIImageView()
func createMarker(){
//Reusing UIImageView() object
let backgroundImg = uiImageView
backgroundImg.image = UIImage(named: "JobMarkerInvitedBg")
}
在这里,我只创建了一次imageview对象并重复使用所有标记,而不是一次又一次地创建它。这会对内存或CPU消耗产生显着影响吗?
答案 0 :(得分:2)
重用UIImage
的相同实例,并可能将它们存储为某个地方的全局属性,如下所示。您不应该重用相同的UIImageView
实例。预加载图像并使用UIImage
的相同实例将为您带来最大的性能优势。 enum
使用ImageStore
,因为无法实例化该枚举。
enum ImageStore {
static let jobMarker = UIImage(named: "JobMarkerInvitedBg")
}
class MarkCreator {
func createMarkerView() -> UIImageView {
let imageView = UIImageView()
imageView.image = ImageStore.jobMarker
return imageView
}
}
答案 1 :(得分:1)
如果要使用相同的图像创建多个标记,请使用相同的标记 每个标记的UIImage实例。这有助于改善 显示许多标记时应用程序的性能。
https://developers.google.com/maps/documentation/ios-sdk/marker
您想要使用UIImage
的相同实例。是的,调用相同的实例是Google希望您放置多个标记的方式。