美文网首页
@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方法的方法名
}

相关文章

  • Category添加成员变量

    类中使用@property @property (nonatomic,strong) NSString * nam...

  • iOS面试之@property

    原文链接 @property介绍 相信做过iOS开发的同学都使用过@property,@property翻译过来是...

  • @property的使用

    1.@proprety的作用 @property是编译器的指令 @proprety最初的最用是:用在声明文件中(....

  • @property的使用

    上次我们说到了构造方法,书接上文,这次我们来详细了解一下OC中@property中的内容.本文也是我自己寻找了相关...

  • property的使用

    本质上说,本文提到的 @property 和上一篇文章提到的 @classmethod、@staticmethod...

  • 使用property

    有没有既能检查参数,又可以用类似属性这样简单的方式来访问类的变量呢?Python内置的@property装饰器就是...

  • @property使用

    根据廖雪峰教程自己学习。 @property的使用简洁体现在:s1=Studnet() 赋值的时候直接用.属性名...

  • 使用 @property

    在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改: 这显然不...

  • 使用@property

    使用@property:(首先,这个一般是放在类里边,其次这个放在类内函数之上) 既能检查参数(就是通过get()...

  • iOS开发中@property引伸的各种问题

    @property介绍 相信做过iOS开发的同学都使用过@property,@property翻译过来是属性。在定...

网友评论

      本文标题:@property的使用

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