OStack程序员社区-中国程序员成长平台

标题: ios - 为什么CALayer的category可以不用实现就声明一个属性直接使用? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 21:41
标题: ios - 为什么CALayer的category可以不用实现就声明一个属性直接使用?

据我所知,你不应该在一个类别中定义一个实例变量,如果你声明一个属性,那只意味着你声明了“setter & getter”方法。

@interface CALayer (XQ)
    @property NSString *demoVar;
    - (void)demoFunc;
@end
@implementation CALayer (XQ)
    - (void)demoFunc {
        self.demoVar = @"cuteeeee";
        NSLog(@"%@", self.demoVar);// when i call this method, it should crash, but the output is normal, why?
    }
@end

对不起,我的英语和短语很差,谢谢。



Best Answer-推荐答案


CALayer.h 中的注释指出:

/** Property methods. **/

/* CALayer implements the standard NSKeyValueCoding protocol for all
 * Objective C properties defined by the class and its subclasses. It
 * dynamically implements missing accessor methods for properties
 * declared by subclasses.

显然 CALayer 对待在类别中声明的属性与对待在子类中声明的属性相同,因此它会为您动态实现访问器方法。

关于ios - 为什么CALayer的category可以不用实现就声明一个属性直接使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38793970/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4