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

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属性)