黑马程序员_OC学习之@property、点语法
来源:互联网 发布:window10不能安装软件 编辑:程序博客网 时间:2024/06/05 17:20
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
一、点语法:通过"."调用类中的set和get方法来设置和访问成员变量
例如:
<span style="font-size:18px;">#import <Foundation/Foundation.h>@interface Person : NSObject{ @private int _age; @public int _id;}- (int)age;- (void)setAge:(int)age;@end@implementation Person- (int)age { return _age;}- (void)setAge:(int)age { if(age < 0) { age = 1; } _age = age;}@end@interface Student : Person@end@implementation Student@endint main() { Person *p = [Student new]; //学生同时也是人 p.age = 10; //这句话等同于[p setAge] NSLog(@"%d",p.age); //OC会自动检测是访问还是设置成员变量,这里为访问所以等同于[p age]; return 0;}</span>
----------------------------------------------------------------------------------------------------------------------------------------------------------
二、@property:与@synthesize共用,让OC自动生成get和set方法,在xcode4.4以后,@synthesize功能已经被@property取代,不过还有一个功能,我们通过例子来介绍。
先说下@property三个功能:1、声明一个成员变量的get和set方法;
2、实现该成员变量的get和set方法;
3、如果这个成员变量没有定义,那么会自动生成一个以下划线"_"开头的变量(默认是访问属性为@private);
例如:
<span style="font-size:18px;">#import <Foundation/Foundation.h>@interface Person : NSObject{// int _age; //如果没有定义该成员变量,那么会自动生成这个名字的成员变量。 int age; //如果变量名字这样命名,那么@property会不清楚使用这个变量还是_age这个变量,这时我们就要使用@synthesize来帮助@property取消歧义。}@property int age; //等同于下面两句//- (int)age;//- (void)setAge:(int)age;@end@implementation Person@synthesize age = age; //指明使用age这个变量,而不是生成_age@endint main() { Person *p = [Person new]; p.age = 10; NSLog(@"%d",p.age); return 0;}</span>
注意:使用@property可以帮助我们省掉许多不必要的代码,但是如果我们想让某个类的子类访问该类的成员变量,就必须自己定义变量,而不用@property生成,因为它生成的是具有@private属性的成员变量。
0 0
- 黑马程序员_OC学习之@property、点语法
- 黑马程序员_OC学习之点语法
- 黑马程序员_OC点语法
- 黑马程序员学习笔记_OC之@property和@synthesize
- 黑马程序员_OC中的点语法
- 黑马程序员_OC语法
- 黑马程序员_OC之核心语法
- 黑马程序员_OC核心语法之分类
- 黑马程序员_OC基础06_OC语法
- 黑马程序员_OC点语法 id 构造方法复习
- 黑马程序员_OC点语法 id 构造方法复习
- 黑马程序员——Objective-C学习之@property @synthesize和id及点语法
- 黑马程序员-----oc语言学习笔记之点语法、property、类方法
- 黑马程序员_OC学习之block,protocol
- 黑马程序员学习笔记_OC之self
- 黑马程序员学习笔记_OC之继承
- 黑马程序员学习笔记_OC之NSString
- 黑马程序员_OC特有语法
- tinyXML实战
- 如何把vector和string数据传给旧的C API
- 置:重置“结果”的内容 20140624
- Android 拷贝数据库文件
- 怎么做才是好的IT榜样?
- 黑马程序员_OC学习之@property、点语法
- C++实现TCP通信。。
- java的class文件反编译和Eclipse、MyEclipse反编译插件安装、使用
- [LeetCode65]Pascal's Triangle II
- jsp速度优化七种方法
- android FragmentManage FragmentTransaction介绍
- 程序员自我提高的几点建议
- WebService 之 WSDL文件 讲解
- 黑马程序员--Java常用的类