使用"点语法"

Person *p =[Person new];

//点语法
//对象.属性名
//注意,此时 (p.age)并不是直接方法实例对象
//而是xcode可能到点语法(p.age)后,会帮我们自动替换
//p.age --替换--->[p setAge:18]
p.age=18; //注意.此处 p.age出现在了等号的右侧
//设计上,当xcode 看到了p.age出行在等号的右侧后
//它会帮我们把p.age---替换成--->[p age];
int a= p.age;
NSString *s =[p name];

  

@property

@property是编译器的指令
编译器指令: 就是告诉编译器要作什么
@property 告诉编译器 声明属性的访问器(getter/setter)方法 好处:免去我们手工书写get和set方法繁琐的代码

  

@property用法

格式:
@property 类型名 实例变量名

  

用法:

 .在xcode4. 之前,用于帮我们实现get/set方法的声明
.在xcode .4之后,有稍微增强

  

使用注意:

 .@property只能写在@interface @end中
.@property 用来自动生成成员变量的 get/set方法声明(xcode4. 以前)
告诉property要生成的get/set 方法声明的成员变量类型是什么
告诉property要生成的get/set 方法是哪个属性的,属性名称去掉下划线 如果写成了 @property int _age;
Person *p =[Person new];
p.age 就拿不到了
p._age;

  

@property 增强使用

   Xcode4.4版本以后支持的
  只使用 @property进行声明,类会自动帮你实现
  操作的是带有下划线的实例变量   如果没有手动声明成员变量,property会在.m文件中自动帮我们生成一个_开头的成员变量   注意; 这个实例的生成与.m文件 是私有不能被子类使用的
      get和set方法在.m中可以自己手动实现,但是当用增强时,get 、set只能手动实现一个

@property参数

  格式:
  @property(参数1,参数2) 数据类型 方法名
 参数类型      参数        说明
原子性      atomic        对属性加锁,多线程下线程安全,默认值
          nonatomic      对属性不加锁,多线程下不安全,但是速度块
读写属性     readwrite      生成getter、setter ,默认值
         readonly       只生成getter方法
方法处理     assign        直接赋值,默认值
          retain        先release原来的值,再retain新增
          copy         先release原来的值,再copy新增   @property(assign) int age;
  int _age;
  -(void)setAge:(int)age{
    _age = age;
  }   @property (retain) Car * car;
  Car _car;
  -(void)setCar:(Car)car{
    if(_car!=car){
      [_car release];
      _car =[car retain];
    }
  } )内存管理相关参数
  retain:对对象release旧值,retain新值 (适用于OC对象类型)
  assign:直接赋值(默认,适用于非oc对象类型);
  copy : release旧值,copy新值   @property ( nonatomic,assign) Car *car; 例如:在color的get set方法中修改age的值
  @property(nonatomic,setter=setColor:,getter=color) int age;

  

最新文章

  1. Html --用简单的<hr>实现多样化分割效果
  2. javascript的函数
  3. ftp unable to fetch some archives,maybe run apt-get update or try with -- fix-missing?
  4. CSS 部件
  5. BZOJ2322: [BeiJing2011]梦想封印
  6. Unity3D 系统宏
  7. 常用的sql函数
  8. scala高级内容(一) Case Class
  9. 用EPPlus导入导出数据到excel
  10. Matlab定义子函数
  11. c++入门之—运算符重载和友元函数
  12. Centos 下 JProfiler 9.1.1 安装 部署 及 使用
  13. 【代码笔记】Web-JavaScript-JavaScript用法
  14. Java虚拟机的最大内存是多少
  15. C#生成XSD规范
  16. Linux 下 MQ 的安装
  17. N76E003的定时器/计数器 0和1
  18. Java中被你忽视的四种引用(转)
  19. 7. CSS装饰网页的样式
  20. Ant 编译项目资源不足

热门文章

  1. C++移位运算符详解
  2. cuda编程学习5——波纹ripple
  3. windows系统解决github.com访问超时
  4. YII2.0 ——安装yii2项目
  5. WKWebView代理方法解析
  6. 不使用回调函数的ajax请求实现(async和await简化回调函数嵌套)
  7. 常见【十种】WEB攻击及防御技术总结
  8. 【C语言】判断三角形类型
  9. 泛型加委托在EF下的操作例子
  10. POPTEST老李分享session,cookie的安全性以及区别 1