OC点语法介绍和使用以及@property关键字
使用"点语法"
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关键字的更多相关文章
- OC的特有语法-分类Category、 类的本质、description方法、SEL、NSLog输出增强、点语法、变量作用域、@property @synthesize关键字、Id、OC语言构造方法
一. 分类-Category 1. 基本用途:Category 分类是OC特有的语言,依赖于类. ➢ 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 ● 继承 ● 分类(Categor ...
- oc总结 --oc基础语法相关知识
m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...
- OC总结 【OC基础语法相关知识】
m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...
- 【OC基础语法考试】
OC基础语法已经全部学完,但是这些知识只是最基础的,还有很多高级知识,这个可能需要后面慢慢的去学习才能体会到.接下来我会总结前面的OC基础语法,如果大家发现有什么不正确的地方,请指正,小弟是新生,多请 ...
- OC点语法和变量作用域
OC点语法和变量作用域 一.点语法 (一)认识点语法 声明一个Person类: #import <Foundation/Foundation.h> @interface Person : ...
- OC基础--内存管理中的@property关键字以及其参数
在上一篇博客中整理的内存管理,管理类的代码量会感觉很大,而且如果对象多的话,感觉到代码有点冗余.下面就介绍Xcode中为我们自动生成内存管理代码的关键字@property 例如:在Person这个类中 ...
- Swift翻译之-Swift语法入门 Swift语法介绍
目录[-] Hello world - Swift 简单赋值 控制流 函数与闭包 对象和类 枚举与结构 协议和扩展 泛型 2014.6.3日,苹果公布最新编程语言Swift,Swift是一种新的编程语 ...
- 李洪强iOS开发之OC点语法和变量作用域
OC点语法和变量作用域 一.点语法 (一)认识点语法 声明一个Person类: 1 #import <Foundation/Foundation.h> 2 3 @interface Per ...
- [Objective-c 基础 - 2.2] OC弱语法、类方法
A.OC弱语法 1.在运行的时候才会检查方法的声明和实现 2.没有声明只有实现的方法也能正常运行,只要在调用之前定义即可 3.类的声明必须存在,否则会出现运行时错误 B.类方法 1.是类名调用的方 ...
随机推荐
- 解决HTML textarea 标签出现大量空格
就是什么内容也不写,然后前面却有一堆空格 原因是 textarea标签换行了 <textarea cols=" id="serve_content" name=&q ...
- SQL Server数据库读取数据的DateReader类及其相关类
之前学了几天的SQL Server,现在用C#代码连接数据库了. 需要使用C#代码连接数据库,读取数据. 涉及的类有: ConfigurationManage SqlConnection SqlCom ...
- [原创]HBase学习笔记(3)- Java程序访问HBase
这里介绍使用java api来访问和操作HBase,例如create.delete.select.update等操作. 1.HBase配置 配置HBase使用的zookeeper集群地址和端口. pr ...
- (转)CentOS下一键安装GitLab
[环境准备]OS: CentOS 6.3 x86_64 [安装要求]如果有条件,提供一台全新的Server(仅仅只安装了一些系统的软件包),可以直接使用一键安装脚本(gitlab-install-el ...
- 【2017-03-30】JS-document对象
一.获取标记对象 1.document.getElementById("id"); 根据id找,最多找到一个. 2.document.getElementsByNa ...
- 一键部署Kubernetes高可用集群
三台master,四台node,系统版本为CentOS7 IP ROLE 172.60.0.226 master01 172.60.0.86 master02 172.60.0.106 master0 ...
- Android多渠道打包
项目需要,简单2步实现(由于简单,所以对大量渠道打包不是最优的),比如1000个渠道同时打包的话可能花费的时间会过长.不过目前该方法能满足绝大需求了...根据截图一步一步走: 第一步 设置配置清单文件 ...
- table切换
// 自己加载正确路径的jQ <!doctype html> <html><head><meta charset="utf-8">& ...
- linux从入门到精通学习-NFS
NFS网络文件系统 功能 nfs[network file system] 网络文件系统 是FreBSD系统支持的一种系统,允许在网络 上与其它人共享使用文件或文件夹 采用C/S模式 端口号 在vim ...
- 打印pid,写着玩。
#include <stdio.h> #include <string.h> #include <dirent.h> #include <limits.h&g ...