美文网首页
@synthesize 小结

@synthesize 小结

作者: 金天动地 | 来源:发表于2022-03-25 13:44 被阅读0次

    iOS 6 以后 LLVM 引入自动有合成属性功能,所以基本上比较少使用了. 一般在.m文件 @implementation 下面进行声明.

    @synthesize 作用:

    1. 生成下划线的成员变量
    2. 生成get set方法(若是只读属性,只能生成get方法)
    3. 可以自定义合成的实例变量(这时候可以重写属性的get/set方法)
    非只读属性使用@synthesize后重写set/get后,自动合成的实例变量_name失效
    只读属性使用@synthesize后重写get后,自动合成的实例变量_name失效

    分类中实现属性 => 一般用关联对象.

    .h文件

    #import <UIKit/UIKit.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    @interface UIView (test)
    /// 名字
    @property (nonatomic, copy) NSString *name;
    @end
    

    .m文件

    #import "UIView+test.h"
    #import <objc/runtime.h>
    
    @implementation UIView (test)
    
    - (void)setName:(NSString *)name {
        objc_setAssociatedObject(self, @selector(name), name, OBJC_ASSOCIATION_COPY_NONATOMIC);
    }
    
    - (NSString *)name {
        return objc_getAssociatedObject(self, @selector(name));
    }
    
    @end
    

    结束了,下篇见!

    相关文章

      网友评论

          本文标题:@synthesize 小结

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