美文网首页
@property的使用

@property的使用

作者: SimpleSJ | 来源:发表于2018-11-05 14:12 被阅读0次

    1.@proprety的作用

    • @property是编译器的指令
    • @proprety最初的最用是:用在声明文件中(.h)告诉编译器声明成员变量的的访问器(getter/setter)方法,配合@synthesize使用.
    • 自从Xcode 4.x后,@property可以同时生成setter和getter的声明和实现
      • 默认情况下,setter和getter方法中的实现,会去访问下划线 _ 开头的成员变量。
      • 如果没有会自动生成一个_开头的成员变量,自动生成的成员变量是私有变量, 声明在.m中,在其它文件中无法查看,但当可以在本类中查看
    • 如果需要对数据进行判断需要我们之间重写getter/setter方法
      • 若手动实现了setter方法,编译器就只会自动生成getter方法
      • 若手动实现了getter方法,编译器就只会自动生成setter方法
      • 若同时手动实现了setter和getter方法,编译器就不会自动生成不存在的成员变量

    2.@proprety修饰符

    • readonly修饰符,readonly 只生成getter方法,不生成setter方法
    • 指定所生成的方法的方法名称
      • getter=你定制的getter方法名称
      • setter=你定义的setter方法名称(注意setter方法必须要有 :)
        🌰:
    @interface Person : NSObject
    @property (readonly) int age;
    @property (assign,nonatomic,getter=isOpen)BOOL open;
    @end
    
    //控制器中调用
    
    Person *p = [[Person alloc]init];
    //p.age = 10; //报错,因为这一行代码,编译时自动转换为[p setAge:10];,而readonly修饰符修饰的变量不生成setter方法     
    NSLog(@"---%d",p.age);//输出:---0
    
    p.open = YES;//访问时,使用setter方法,正常赋值
    if(p.isOpen){
       //使用getter方法时,转换为isOpen,因为修饰符修改了getter方法的方法名
    }
    

    相关文章

      网友评论

          本文标题:@property的使用

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