IOS - 优化谷歌地图标记

标签 ios swift google-maps google-maps-markers

我正在 iOS 中使用谷歌地图,其中有很多标记(约 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 消耗产生任何显着影响吗?

最佳答案

重复使用 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
    }
}

关于IOS - 优化谷歌地图标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49630443/

相关文章:

swift - 在 Swift 中定义之前可见的全局变量

ios - 无法使用嵌入到我的项目中的 ios-charts 库分发内部构建

ios - Swift:如何在中断时停止调用 scheduleBuffer 完成处理程序?

java - Android: "Fatal Exception"使用 Google map 时在 URLConnection 上调用 getInputStream()

ios - UIActivityViewController initWithActivityItems大小

javascript - 在IOS上用JWplayer播放F4V文件

ios - UINavigationController 显示 segue 失败?

ios - Windows Azure ServiceBus 推送通知 APNS 架构

android - 谷歌地图未在 Android 设备上显示

android - 如何在 Google Maps V2 Android 中指定标记上的图标大小