美文网首页iOS Developer
探究@property、@synthesize、@dynamic

探究@property、@synthesize、@dynamic

作者: 艺叶亦华 | 来源:发表于2018-01-06 11:56 被阅读41次

    探究@property、@synthesize、@dynamic、readonly在类、分类、协议中的作用,使用runtime打印出属性列表、成员变量列表、实例方法列表检测正确性

    github地址


    @protocol StudentProtocol

    /** 在类里只会生成setter、getter方法的声明, 

    系统将不会自动生成对应属性的setter、getter方法的实现和成员变量 */

    @property (nonatomic, assign) NSInteger age;

    @end

    @interface Student : NSObject

    //打印日志

    + (void)printTestInfo;

    /**

    1.生成属性name

    2.生成name的setter、getter方法的声明

    3.生成name的setter、getter方法的实现

    4.生成_name成员变量

    */

    @property (nonatomic, strong) NSString *name;

    /**

    同时重写属性的setter、getter

    系统将不会自动生成成员变量

    */

    @property (nonatomic, assign) CGFloat height;

    /**

    系统会自动生成_weight和getter方法

    */

    @property (nonatomic, assign, readonly) CGFloat weight;

    /**

    @synthesize emil;

    生成属性sex的成员变量emil(注意没有下划线)和setter、getter方法的实现

    */

    @property (nonatomic, strong) NSString *emil;

    /**

    @synthesize tel=_tel;

    生成属性tel的成员变量_tel和setter、getter方法的实现

    */

    @property (nonatomic, strong) NSString *tel;

    /**

    @dynamic sex

    只会生成setter、getter方法的声明,

    系统将不会自动生成对应属性的setter、getter方法的实现和成员变量

    */

    @property (nonatomic, assign) BOOL sex;

    - (void)studying;

    @end

    @interface Student (Category)

    /**

    只会生成setter、getter方法的声明,

    系统将不会自动生成对应属性的setter、getter方法的实现和成员变量

    */

    @property (nonatomic, strong) NSString *address;

    @end


    相关文章

      网友评论

        本文标题:探究@property、@synthesize、@dynamic

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