• 经过测试第一种和第二种正确的写法,当页面离开时,都会进入下面的dealloc中。 而第三种错误的写法,当页面离开时,不会进入下面的dealloc中。 这就引出了。第一种和第二种写法正确性分析,简言之,他们都是self的...

    经过测试第一种和第二种正确的写法,当页面离开时,都会进入下面的dealloc中。

    而第三种错误的写法,当页面离开时,不会进入下面的dealloc中。

    这就引出了。第一种和第二种写法正确性分析,简言之,他们都是self的属性,当self(当前页面消失时),他的属性变量也就跟着消失了,而不会出现不释放的情况。


    - (void)dealloc
    {
        _webView.delegate = nil;
        _webView = nil;
        CHDebugLog(@"webView页面已销毁");
    }
    

    第一种正确的写法:--页面会释放

    @interface ljADWebViewController () <UIWebViewDelegate>
    {
    }
    @property (nonatomic, copy)NSString* shareH5URL;
    @property (nonatomic, copy)NSString* shareH5Title;
    @property (nonatomic, copy)NSString* shareH5Content;
    
        @weakify(self);
        [my setShareValuesBlock:^(NSString *url) {
            @strongify(self);
    
            dispatch_async(dispatch_get_main_queue(), ^{
                NSDictionary *dic = [myUitle dictionaryWithJsonString:url];
                self.shareH5URL = [dic objectForKey:@"url"];
                self.shareH5Title = [dic objectForKey:@"title"];
                self.shareH5Content = [dic objectForKey:@"content"];
                [self rightButtonClick:nil];
            });
            
        }];
    

    第二种正确写法--页面会释放

    @interface ljADWebViewController () <UIWebViewDelegate>
    {
        NSString* _shareURL;
        NSString* _shareTitle;
        NSString* _shareContent;
    }
    
        @weakify(self);
        [my setShareValuesBlock:^(NSString *url)
     {
            @strongify(self);
            dispatch_async(dispatch_get_main_queue(), ^{
                //@strongify(self);
                NSDictionary *dic = [myUitle dictionaryWithJsonString:url];
                self->_shareURL = [dic objectForKey:@"url"];
                 self->_shareTitle = [dic objectForKey:@"title"];
                self->_shareContent = [dic objectForKey:@"content"];
            });
        }];
    

    3. 错误写法---页面不释放

    @interface ljADWebViewController () <UIWebViewDelegate>
    {
        NSString* _shareURL;
        NSString* _shareTitle;
        NSString* _shareContent;
    }
    
        @weakify(self);
        [my setShareValuesBlock:^(NSString *url)
     {
            @strongify(self);
            dispatch_async(dispatch_get_main_queue(), ^{
                //@strongify(self);
                NSDictionary *dic = [myUitle dictionaryWithJsonString:url];
                _shareURL = [dic objectForKey:@"url"];
                _shareTitle = [dic objectForKey:@"title"];
                _shareContent = [dic objectForKey:@"content"];
            });
        }];




    展开全文
  • iOS设计控件全解析 2016-07-13 15:13:11
    一个控件从外在特征来说,主要是封装这几点: 交互方式显示样式数据使用 对外在特征的封装,能让我们在多种环境下达到 PM 对产品的要求,并且提到代码复用率,使维护工作保持在一个相对较小的范围内;而一...
  • 一个控件从外在特征来说,主要是封装这几点: 交互方式显示样式数据使用 对外在特征的封装,能让我们在多种环境下达到 PM 对产品的要求,并且提到代码复用率,使维护工作保持在一个相对较小的范围内;而一...
  • 控件效果如下图所示: 本控件设计的几个原则 : 1.扩展性好,代码不冗余。 2.逻辑清晰。 3.回调接口清晰。 4.移植性好。 首先来讨论下本控件的扩展性: 效果图给出的是3行7列。如果这个行列因子可控,...
  • 身边一同事,我印象在过去三个月,有两次因为使用“copy”修饰UIKit控件的属性,导致程序崩溃。他还一本正经的说我以前一直使用copy。 好了,到这里我们就不得不说说什么时候使用copy。我的印象中,只有两处使用了...
  • iOSBlock详解 2019-04-06 23:51:28
    Block是带有自动变量的匿名函数,是C语言的一个扩充功能。Block本质上也是一个OC对象,内部也有一个isa指针,其内部封装了函数调用以及函数调用环境。 (一)Block的基本使用 1. block声明 //返回值(^block变量...
  • iOS控件的使用 2015-11-05 17:35:26
    目录(?)[+] 代码的等级:可编译、可运行、可测试、可读、可维护、可复用 ...一个控件从外在特征来说,主要是封装这几点: ...对外在特征的封装,能让我们...而一个好的控件除了有对外一致的体验之外,还有其内在特征:
  • iOS) __block 和 __weak 2017-12-28 14:31:10
    __block和__weak的认识(iOS)果然还是对最基础的知识了解不透彻,今天看一看iOS中的两个修饰符:_____block和_____weak 。也是做一下温习吧。1、先说weak,我们知道weak的使用,比如声明一个控件属性,就会用到weak。...
  • ZXTheme github地址 安装 通过CocoaPods安装 pod 'ZXTheme' 手动导入 将ZXTheme拖入项目中。...ZXTheme用于修改全局UI的主题,设置方法与注意点说明以UILabel为例: 示例代码 [ZXTheme default...
  • 前言: 回想起2013年做iOS开发的时候,那时候并没有采用手写布局代码的方式,而是采用xib文件来编写,如果使用纯代码方式是基于window的size(320,480)计算出一个相对位置进行布局,那个时候windows的size是固定不变...
  • 一般在项目中出现逆向传值的时候就需要用到代理、block 或者通知中心了。由于公司的项目底层封装的很好,所以项目做了三四个月就算碰到需要逆传的情况也不用自己处理。但是最近遇到了一个特别的情况就需要自己处理...
  • 第一篇:[iOS]过渡动画之简单模仿系统,主要分析系统简单的动画实现原理,以及讲解坐标系、绝对坐标系、相对坐标系,坐标系转换等知识,为第二篇储备理论基础。最后实现 Mac 上的文件预览动画。 第二篇:[iOS]过渡...
1 2 3 4 5 ... 20
收藏数 3,572
精华内容 1,428