@synthesize 小结

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

@synthesize 作用:

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

只读属性使用@synthesize后重写get后,自动合成的实例变量_name失效

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

.h文件

#import 

NS_ASSUME_NONNULL_BEGIN

@interface UIView (test)
/// 名字
@property (nonatomic, copy) NSString *name;
@end

.m文件

#import "UIView+test.h"
#import 

@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 小结)