美文网首页
可被继承的 Class Property

可被继承的 Class Property

作者: 公爵海恩庭斯 | 来源:发表于2018-01-30 16:48 被阅读19次

如果使用 static,子类方法与父类方法使用的会是同一个 static 变量。如果想要子类结果区分于父类,子类还需重新实现。

而使用 runtime,子类不需要写额外逻辑,就能够声明出绑定于 Class 的类变量。

这份微妙的差异请细细体会。

@interface BaseObject : NSObject

@property (nonatomic, class, strong) NSString *ClassName;

@end


@interface MyObject : BaseObject

@end
#import "BaseObject.h"

#import <objc/runtime.h>

static NSString * const kClassPropertiesKey = @"kClassPropertiesKey";

@implementation BaseObject

+ (void)setClassName:(NSString *)ClassName
{
    objc_setAssociatedObject(self.class, &kClassPropertiesKey, ClassName, OBJC_ASSOCIATION_RETAIN);
}

+ (NSString *)ClassName
{
    NSString *className = objc_getAssociatedObject(self.class, &kClassPropertiesKey);
    
    if (!className)
    {
        objc_setAssociatedObject(self.class, &kClassPropertiesKey, NSStringFromClass(self.class), OBJC_ASSOCIATION_RETAIN);
        
        className = objc_getAssociatedObject(self.class, &kClassPropertiesKey);
    }
    
    return className;
}

@end


@implementation MyObject

@end
NSLog(@"%@ %@", [BaseObject ClassName], [MyObject ClassName]); // BaseObject MyObject

相关文章

  • 可被继承的 Class Property

    如果使用 static,子类方法与父类方法使用的会是同一个 static 变量。如果想要子类结果区分于父类,子类还...

  • php中final关键字

    final关键字作用于class时表示该类是不可被继承。 会出现错误提示。Fatal error :Class S...

  • @property class

    偶然间看到一段代码 应该叫类变量,类属性,类成员还是什么的,具体还是上代码吧,我们先在头文件 写好 然后m文件这样...

  • class-继承(es6)

    继承-JS 继承-class class-总结 Class 在语法上更加贴合面向对象的写法Class 实现继承更加...

  • yii\base\Component

    Component is the base class that implements the property,...

  • yii\base\BaseObject

    BaseObject is the base class that implements the property...

  • class_copyPropertyList与class_cop

    class_copyPropertyList 获取的是property声明的所有属性 class_copyIvar...

  • iOS代码块

    @property(nonatomic,weak) <#Class#> *<#object#>;

  • class invoke @property

    NSURLSession *session = [NSURLSession sharedSession]; 初看这...

  • @property 的属性class

    今天看欧阳大哥的MYLayout的源码,发现这么一段代码 属性中描述中有个class 。这个class 是干嘛的呢...

网友评论

      本文标题:可被继承的 Class Property

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