美文网首页
self.xx和_xx继承中的问题

self.xx和_xx继承中的问题

作者: Abler | 来源:发表于2018-11-21 10:36 被阅读11次

    self.属性_成员变量 基本区别就不细说了,这里主要谈论的是在子类继承中的问题. 在看此篇内容之前,先看一下文中图片部分内容.

    一.初始化
    • 1定义一个继承UIViewFather类,- (UIView *)getRedView返回的是self.red;
    //Father.m
    #import "Father.h"
    @interface Father ()
    @property (nonatomic, strong) UIView *red;
    @end
    @implementation Father
    - (instancetype)init
    {
        self = [super init];
        if (self) {
            self.red = [UIView new];
        }
        return self;
    }
    - (UIView *)getRedView {
        return self.red;
    }
    @end
    
    • 2定义一个继承FatherSon
    //Son.m
    #import "Son.h"
    @interface Son ()
    @property (nonatomic, strong) UIView *red;
    @end
    
    @implementation Son
    @end
    
    / /调用
    Son *ss = [Son new];
    NSLog(@"====%@",[ss getRedView]);有值//====<UIView: 0x7fa38a705c30; frame = (0 0; 0 0); layer = <CALayer: 0x600000e5d620>>
    
    二.修改Father.m中的方法,- (UIView *)getRedView返回的是_red;此时结果如下图
    - (UIView *)getRedView {
        return _red;
    }
    
    此时self.red有值而_red为nil
    / /调用
    Son *ss = [Son new];
    NSLog(@"====%@",[ss getRedView]);没有值//====(null)
    
    三.一般在第三方库不满足需求的时候,我们会进行继承,重写方法,这个时候容易出现这个问题, 如果不知道这点, 很容易报错.
    // 在Son.m文件中实现下面这个方法就可以解决,当然还有其他方法,大家可以自己测试
    - (UIView *)getRedView {
        return _red;
    }
    

    相关文章

      网友评论

          本文标题:self.xx和_xx继承中的问题

          本文链接:https://www.haomeiwen.com/subject/tnjqqqtx.html