iOS 懒加载为什么不起作用

iOS 开发懒加载是很常用的;顾名思义,有些变量我们希望在需要的时候才加载(效率低,占用内存小)。其实懒加载就是重写其getter方法,就是在开发中,当程序中需要利用的资源时。在程序启动的时候不加载资源,只有在运行当需要一些资源时,再去加载这些资源。


出了问题特此记录

声明:

@property (strong, nonatomic) WKWebViewConfiguration *config;

** getter方法:**

- (WKWebViewConfiguration *)config
{
    if (!_config)
    {
        _config = [[WKWebViewConfiguration alloc] init];
        // 设置偏好设置
        _config.preferences = [[WKPreferences alloc] init];
        // 默认为0
        _config.preferences.minimumFontSize = 10;
        // 默认认为YES
        _config.preferences.javaScriptEnabled = YES;
        // 在iOS上默认为NO,表示不能自动通过窗口打开
        _config.preferences.javaScriptCanOpenWindowsAutomatically = NO;
        
        /**
         *  scriptMessageHandler是代理回调,JS调用name方法后,
         *  OC会调用scriptMessageHandler指定的对象
         */
        [_config.userContentController addScriptMessageHandler:self name:@"iSailor"];
    }
    return _config;
}

使用:

WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:_config];

只好重头捋一捋才发现原来在这里:

我使用的时候都是用的_config,所以不会走getter方法;
使用的时候将_config改为self.config就可以了

WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:self.config];

原因:self.config会调用类的getter方法,而如果直接用_config只是直接访问类的实例变量,而不会调用getter方法了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,620评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,738评论 25 709
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,382评论 30 472
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,848评论 0 9
  • 今晚听了享受内部伙伴分享,《3天之内就销售了300盒,收入过万》 如何将产品分析到极致,以怎样的形式销售给客户。 ...
    熊芳菲阅读 3,385评论 0 0