2015.6.30 第二堂 property
2015-06-30 22:31
363 查看
本节主要学习了用property声明变量的set get方法,效率正常。
小结:
技术瞬息万变,要学会推翻和改变之前的看法。
注:.h文件声明的时成员变量和方法。 (自己的错误读法:声明类和方法)
知识点一:property
关于@property的属性变量,有以下三个功能:
1、声明了setter方法 2、声明了getter方法 3、声明了一个变量,变量本身的名字是__name
举例:
在.h文件中完成对set和get方法的声明 @property (nonatomic,strong) NSString *name;
在.m文件中完成对set和get方法的实现 @synthesize name=_name // 随着更新 property已自动完成实现 此句可省略
@property 大大简化了步骤
@property (nonatomic,strong) NSString *name;
等同于
-(void)setName:(NSString *)name;
-(NSString *)name;
总之,一句property代替了set、get方法的声明,声明了一个变量,也不用实现了。
知识点二:property的关键词理解
nonatomic:非原子操作 线程不安全 (无锁机制)效率高 (一般都写这个)
atomic:原子操作 线程安全(有锁机制) 效率低(默认)
OC对象类型都为strong/retain
strong:声明强引用 引用计数+1 retainCount
weak:弱引用 不引用
retain:strong同样的功能
copy:复制一个同样的对象(创建一片内存,将对象的内容拷贝到这片独立的内存)(拷贝的多了占用很多内存,所以不好)
readWrite:默认-可读(有getter方法) 可写(setter)
readOnly:只读(同上)
setter:使用方式setter=setCatName:
getter:使用方式getter=getCatName:
assign:C语言的基本数据类型
举例:
@property (nonatomic,strong) NSString *address;
@property (nonatomic,assign) float age;
知识点三:关于[]调用 和.
Cat *jfm=[[Cat alloc]init];
jfm.address=@"桃园";
等同于 [jfm setAddress:@"桃园"]; //set方法需要写出 方法名:参数
NSLog(@"%@ %@",jfm.address);
等同于NSLog(@"%@ %@",[jfm name]); // get方法只需要直接写参数名name就可以了
.h中内容供参考:@property (nonatomic,strong)NSString *name;
//- (void)setName:(NSString *)name;
//- (NSString *)name;
@property (nonatomic,
strong) NSString *address;
//- (void)setAddress:(NSString *)address;
//- (NSString *)address;
参考资料:
实例变量和属性的区别:http://zhidao.baidu.com/question/1960023972532644380.html?fr=iks&word=oc%B3%C9%D4%B1%B1%E4%C1%BF%D4%F5%C3%B4%CA%B5%CF%D6&ie=gbk
oc中的Set函数、Get函数、点语法和类方法等http://bbs.itheima.com/thread-139714-1-1.html
附:实验代码
//
// main.m
// Review
//
// Created by PengXiaodong on 15/6/30.
// Copyright (c) 2015年 PengXiaodong. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Cat.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//实例方法 类方法
Person *pxd = [[Person alloc] init];
[pxd setAge:28];
NSLog(@"%d", [pxd age]);
//创建一个字符串对象
//NSString *name = [[NSString alloc] initWithString:@"iOS开发"];
Cat *jfm = [[Cat alloc] init];
jfm.name = @"西南大学"; //调用name变量的set方法
[jfm setName:@"西南大学"];
jfm.address = @"橘园";
[jfm setAddress:@"橘园"];
NSLog(@"%@ %@", jfm.name, jfm.address);//调用get方法
NSLog(@"%@ %@", [jfm name], [jfm address]);//调用get方法
}
return 0;
}
小结:
技术瞬息万变,要学会推翻和改变之前的看法。
注:.h文件声明的时成员变量和方法。 (自己的错误读法:声明类和方法)
知识点一:property
关于@property的属性变量,有以下三个功能:
1、声明了setter方法 2、声明了getter方法 3、声明了一个变量,变量本身的名字是__name
举例:
在.h文件中完成对set和get方法的声明 @property (nonatomic,strong) NSString *name;
在.m文件中完成对set和get方法的实现 @synthesize name=_name // 随着更新 property已自动完成实现 此句可省略
@property 大大简化了步骤
@property (nonatomic,strong) NSString *name;
等同于
-(void)setName:(NSString *)name;
-(NSString *)name;
总之,一句property代替了set、get方法的声明,声明了一个变量,也不用实现了。
知识点二:property的关键词理解
nonatomic:非原子操作 线程不安全 (无锁机制)效率高 (一般都写这个)
atomic:原子操作 线程安全(有锁机制) 效率低(默认)
OC对象类型都为strong/retain
strong:声明强引用 引用计数+1 retainCount
weak:弱引用 不引用
retain:strong同样的功能
copy:复制一个同样的对象(创建一片内存,将对象的内容拷贝到这片独立的内存)(拷贝的多了占用很多内存,所以不好)
readWrite:默认-可读(有getter方法) 可写(setter)
readOnly:只读(同上)
setter:使用方式setter=setCatName:
getter:使用方式getter=getCatName:
assign:C语言的基本数据类型
举例:
@property (nonatomic,strong) NSString *address;
@property (nonatomic,assign) float age;
知识点三:关于[]调用 和.
Cat *jfm=[[Cat alloc]init];
jfm.address=@"桃园";
等同于 [jfm setAddress:@"桃园"]; //set方法需要写出 方法名:参数
NSLog(@"%@ %@",jfm.address);
等同于NSLog(@"%@ %@",[jfm name]); // get方法只需要直接写参数名name就可以了
.h中内容供参考:@property (nonatomic,strong)NSString *name;
//- (void)setName:(NSString *)name;
//- (NSString *)name;
@property (nonatomic,
strong) NSString *address;
//- (void)setAddress:(NSString *)address;
//- (NSString *)address;
参考资料:
实例变量和属性的区别:http://zhidao.baidu.com/question/1960023972532644380.html?fr=iks&word=oc%B3%C9%D4%B1%B1%E4%C1%BF%D4%F5%C3%B4%CA%B5%CF%D6&ie=gbk
oc中的Set函数、Get函数、点语法和类方法等http://bbs.itheima.com/thread-139714-1-1.html
附:实验代码
//
// main.m
// Review
//
// Created by PengXiaodong on 15/6/30.
// Copyright (c) 2015年 PengXiaodong. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Cat.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//实例方法 类方法
Person *pxd = [[Person alloc] init];
[pxd setAge:28];
NSLog(@"%d", [pxd age]);
//创建一个字符串对象
//NSString *name = [[NSString alloc] initWithString:@"iOS开发"];
Cat *jfm = [[Cat alloc] init];
jfm.name = @"西南大学"; //调用name变量的set方法
[jfm setName:@"西南大学"];
jfm.address = @"橘园";
[jfm setAddress:@"橘园"];
NSLog(@"%@ %@", jfm.name, jfm.address);//调用get方法
NSLog(@"%@ %@", [jfm name], [jfm address]);//调用get方法
}
return 0;
}
// // Cat.h // Review // // Created by PengXiaodong on 15/6/30. // Copyright (c) 2015年 PengXiaodong. All rights reserved. // #import <Foundation/Foundation.h> /* 旧的变量声明的方式存在一个弊端 1. 繁琐 每一个变量都需要提供一个set方法 get方法 同时需要去实现这个两个方法 解决上面的问题 property-声明了变量的set get方法 synthesize-实现了set get方法 */ /* @property属性变量 1. 声明了setter方法 2. 声明了getter方法 3. 声明了一个变量 这个变量本身的名字是 _name - (void)setName:(NSString *)name; - (NSString *)name; */ /* 关键字 nonatomic:非原子操作 线程不安全(没有加锁 解锁机制) 效率高 atomic:原子操作 线程安全(有加锁 解锁机制) 默认 效率低 ->OC对象类型 strong/retain strong:声明强引用 引用计数+1 retainCount weak: 弱引用 不引用 retain:strong同样的功能 copy:复制一个同样的对象(创建一片内存,将对象的内容拷贝到这片独立的内存) readWrite:默认-可读(有getter方法)可写(有setter方法) readOnly:只能读(只有getter方法 没有setter方法) setter: 使用方式setter=setCatname: getter: 使用方式getter=getCatName assign: C语言的基本数据类型 */ @interface Cat : NSObject @property (nonatomic, strong) NSString *name; //- (void)setName:(NSString *)name; //- (NSString *)name; @property (nonatomic, strong) NSString *address; //- (void)setAddress:(NSString *)address; //- (NSString *)address; @property (nonatomic, assign) float age; @end
// // Cat.m // Review // // Created by PengXiaodong on 15/6/30. // Copyright (c) 2015年 PengXiaodong. All rights reserved. // #import "Cat.h" @implementation Cat //@synthesize name = _name;//完成了set方法 get方法的实现 @end
// // Person.h // Review // // Created by PengXiaodong on 15/6/30. // Copyright (c) 2015年 PengXiaodong. All rights reserved. // #import <Foundation/Foundation.h> /* 旧的变量声明的方式存在一个弊端 1. 繁琐 每一个变量都需要提供一个set方法 get方法 同时需要去实现这个两个方法 解决上面的问题 property-声明了变量的set get方法 synthesize-实现了set get方法 */ @interface Person : NSObject{ //声明变量 int age;//成员变量 } //定义方法 //set方法 设置变量的值 - (void)setAge:(int)aAge; //get方法 后去变量的值 - (int)age; @end
// // Person.m // Review // // Created by PengXiaodong on 15/6/30. // Copyright (c) 2015年 PengXiaodong. All rights reserved. // #import "Person.h" @implementation Person - (void)setAge:(int)aAge{ age = aAge; } - (int)age{ return age; } @end
相关文章推荐
- Linux netstat命令详解
- Linux下C编程的调试 +编译器小结
- CentOS7.0下载各版本说明 新增Everything版
- Linux进程间通信(六)---信号量通信之semget()、semctl()、semop()及其基础实验
- 进程间通信有名管道(自创建自删除)
- Shell脚本编程之函数篇
- RawPropertyData API
- PropertyType API
- bash shell 初体验
- opencv 操作本地摄像头实现录像
- linux下小工具使用
- PropertySheet Modifier API
- Linux中gedit打开包含中文内容文件乱码的问题
- 在Eclipse中,删除Server(Tomcat)后无法再次添加Server
- 初涉 Hadoop 之安装流程
- linux下 ls 排序
- Linux 站在用户角度讲shell类型
- Linux进程间通信-消息队列
- Linux Centos
- Camshift算法原理及其Opencv实现