使用"点语法"

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. Ubuntu 16.04系统下出现E: 无法下载 http://ppa.launchpad.net/fcitx-team/nightly/ubuntu/dists/xenial/main/binary-amd64/Packages 404 Not Found

    在安装完成Chrome浏览器后,终端执行以下更新命令 sudo apt-get update 时出现E: 无法下载 http://ppa.launchpad.net/fcitx-team/nightl ...

  2. 任何一款IDE的设计思路

    我们以Windows操作系统为例.现在,基于操作系统的任何计算机语言,我们说都是高级语言,从C开始.无论是哪一种,都是通过操作系统的API与计算机交互.即便.Net的FrameWork库从一定意义上何 ...

  3. Android开发之获取xml文件的输入流对象

    介绍两种Android开发中获取xml文件的输入流对象 第一种:通过assets目录获取 1.首先是在Project下app/src/main目录下创建一个assets文件夹,将需要获取的xml文件放 ...

  4. 给angularJs grid列上添加自定义按钮

    由于项目需要在angular 显示的表格中添加按钮,多次查询资料终于找到解决方法.就是给columnDefs 上的列增加 cellTemplate,同时绑定对应的触发事件,代码如下 columnDef ...

  5. Linux之cut命令

    cut 参数: -d  指定分隔符,与-f 一起使用,默认是空格.例如:-d“|” -f  指定取第几段的数据与-d一起使用 -c  以字符为单位取出固定字符区间 示例: 取不连续区间的内容的时候使用 ...

  6. React虚拟DOM具体实现——利用节点json描述还原dom结构

    前两天,帮朋友解决一个问题: ajax请求得到的数据,是一个对象数组,每个对象中,具有三个属性,parentId,id,name,然后根据这个数据生成对应的结构. 刚好最近在看React,并且了解到其 ...

  7. Struts2之Validator

    Struts2中提供了数据校验验证数据例如验证邮件.数字等.验证方式有3种:一是通过validate()方法,二是通过Xml,三是使用注解方式. 一.初始化 首先定义一个User类 package c ...

  8. 01.PHP5.x编译详解

    ##PHP5.5编译安装 ``` wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum i ...

  9. 统一我的博客文章的CSS样式代码

    一.前因后果 之前写博客的时候也有写一些CSS代码来美化,不过都是凌乱的,每次再写一篇,又得重头来过去想,或者去拷贝原来的CSS设置.由于逻辑性不强,找一个配套的格式出来要花费不少时间. 今天我把部分 ...

  10. CSS盒模型和文本溢出

    CSS盒模型和文本溢出 学习目标 认识盒子模型 盒子模型的组成部分 学习盒子模型的相关元素margin padding 文本溢出相关的属性 一.认识盒子模型 盒模型是css布局的基石,它规定了网页元素 ...