美文网首页
OC中子类如何修改父类的一个readOnly属性

OC中子类如何修改父类的一个readOnly属性

作者: 传说中的汽水枪 | 来源:发表于2018-12-21 18:26 被阅读7次

AFNetworking中AFMultipartBodyStream的类继承关系图如下:

image.png

现在想在AFMultipartBodyStream类中修改streamStatus或者streamError的话该怎么办。
AFNetworking提供了一种方法:
是给NSStream添加一个类扩展,分类的内容如下:

@interface NSStream ()
@property (readwrite) NSStreamStatus streamStatus;
@property (readwrite, copy) NSError *streamError;
@end

这样就可以设置streamStatus或者streamError的值了。

这也就是猜测NSStream类关于这两个属性的实现应该就是在.h文件中是readonly,而在.m文件中(类扩展)是readwrite的。

所以可以在子类中给父类添加类扩展来实现这种修改readonly属性值。

前提是可以用runtime获取到对象属性的setXXXgetXXX方法(iOS没有真正意义上的私有函数)。

相关文章

  • OC中子类如何修改父类的一个readOnly属性

    AFNetworking中AFMultipartBodyStream的类继承关系图如下: 现在想在AFMultip...

  • iOS-修改readonly属性的值

    一般情况下,readonly属性的值是无法修改的,但可以通过特殊方式修改。修改本类readonly属性的值或者子类...

  • 父类属性和子类属性同名

    上转型中: 如果父类中的属性和子类的属性同名的时候, 父类对象认为认为子类的属性是特有的 , 父类定义的对象只...

  • 父类属性和子类属性同名

    上转型中: 1. 如果父类中的属性和子类的属性同名的时候, 父类对象认为认为子类的属性是特有的 , 父类定义的对象...

  • Java_basic_8: 继承

    继承 继承的特点 子类,父类 单继承(一个子类只有一个父类) 父类中private 的属性不能被继承 继承的好处 ...

  • iOS子类属性替换父类属性

    父类扩展类中声明了属性A。子类在扩展类中声明了属性B。且A,B同名。先在子类中self.B初始化赋值。则在父类中的...

  • 2_8.类的继承

    提高代码的重复性, 复用性 class 子类名 extends 父类名{子类的属性子类的方法} 子类只能获得父类中...

  • super关键字

    super关键字代表父类,在子类中使用父类的属性和方法,可以用super显式指定,当子类中调用---子类中没有,父...

  • Python面向对象编程-3·继承

    一、继承的概念: 子类 拥有 父类 的所有 方法 和 属性 子类 继承自 父类,可以直接 享受 父类中已经封装好的...

  • 多态只针对方法,而不是属性

    java中子类只能重写父类的方法 ,而不能重写属性 创建两个类,一个子类一个父类进行测试 父类 子类先建一个和父类...

网友评论

      本文标题:OC中子类如何修改父类的一个readOnly属性

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