使用"点语法"

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;

  

OC点语法介绍和使用以及@property关键字的更多相关文章

  1. OC的特有语法-分类Category、 类的本质、description方法、SEL、NSLog输出增强、点语法、变量作用域、@property @synthesize关键字、Id、OC语言构造方法

    一. 分类-Category 1. 基本用途:Category  分类是OC特有的语言,依赖于类. ➢ 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 ● 继承 ● 分类(Categor ...

  2. oc总结 --oc基础语法相关知识

    m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...

  3. OC总结 【OC基础语法相关知识】

    m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...

  4. 【OC基础语法考试】

    OC基础语法已经全部学完,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.接下来我会总结前面的OC基础语法,如果大家发现有什么不正确的地方,请指正,小弟是新生,多请 ...

  5. OC点语法和变量作用域

    OC点语法和变量作用域 一.点语法 (一)认识点语法 声明一个Person类: #import <Foundation/Foundation.h> @interface Person : ...

  6. OC基础--内存管理中的@property关键字以及其参数

    在上一篇博客中整理的内存管理,管理类的代码量会感觉很大,而且如果对象多的话,感觉到代码有点冗余.下面就介绍Xcode中为我们自动生成内存管理代码的关键字@property 例如:在Person这个类中 ...

  7. Swift翻译之-Swift语法入门 Swift语法介绍

    目录[-] Hello world - Swift 简单赋值 控制流 函数与闭包 对象和类 枚举与结构 协议和扩展 泛型 2014.6.3日,苹果公布最新编程语言Swift,Swift是一种新的编程语 ...

  8. 李洪强iOS开发之OC点语法和变量作用域

    OC点语法和变量作用域 一.点语法 (一)认识点语法 声明一个Person类: 1 #import <Foundation/Foundation.h> 2 3 @interface Per ...

  9. [Objective-c 基础 - 2.2] OC弱语法、类方法

    A.OC弱语法 1.在运行的时候才会检查方法的声明和实现 2.没有声明只有实现的方法也能正常运行,只要在调用之前定义即可 3.类的声明必须存在,否则会出现运行时错误   B.类方法 1.是类名调用的方 ...

随机推荐

  1. db2 sequence 查询

    1. 查询名字 select * from sysibm.sysequences where seqname='wx_Id' 2.nextVal select wx_seq_id.currval fr ...

  2. Entity Framework 新手入门友好实例

    起因 因为实习的原因,程序之中用到了较多的数据库操作逻辑.如果每一处数据库操作都手写的话,工作量较大且后期不易于维护,所以希望能通过 ORM 框架来解决这两个问题. 在昨天之前,对于 ORM 这个词汇 ...

  3. javascript中构造StringBuffer实例

    function StringBuffer(){      this.strings = new Array;  }    StringBuffer.prototype.append=function ...

  4. iOS开发之UIView的常见属性

    1.所有控件都继承自UIView,UIView的常见属性如下: @property(nonatomic,readonly) UIView *superview;获得自己的父控件对象 @property ...

  5. Windows上安装Kafka需要注意的几点

    1.不能安装在有空格的路径上 比如:D:\Program Files 2.设置日志路径时,要用"/",不能用Windows上的"\",比如: # A comma ...

  6. Java位向量的实现原理与巧妙应用

    Java位向量的巧实现原理与巧妙应用 1.博文介绍 本篇博文将会介绍几本的位运算含义.位向量介绍.BitSet实现原理.Java位向量的应用.拓展介绍Bloom Filter等. 2.位运算介绍 1) ...

  7. ASP.NET Core:使用Dapper和SwaggerUI来丰富你的系统框架

    一.概述 1.用VS2017创建如下图的几个.NET Standard类库,默认版本为1.4,你可以通过项目属性进行修改,最高支持到1.6,大概五月份左右会更新至2.0,API会翻倍,很期待! 排名分 ...

  8. [.NET] 一步步打造一个简单的 MVC 网站 - BooksStore(一)

    一步步打造一个简单的 MVC 网站 - BooksStore(一) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore 简介 主 ...

  9. HackerRank The Chosen One [预处理][gcd]

    题解:tags:[预处理][gcd]故事背景:光头钻进了茫茫人海.这是一个典型の通过前缀后缀和来降低复杂度的问题.先用pre数组与suf数组分别维护前缀gcd和后缀gcd.如果 a[i] % gcd( ...

  10. JDK中日期和时间的几个常用类浅析(五)

    LocalDateTime   LocalDateTime是JDK8中才引入的类,用来表示不包含时区信息的本地日期和时间.我们可以把LocalDateTime看作是LocalDate和LocalTim ...