@synthesize 小结

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

结束了,下篇见!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容