温故而知新
昨天晚上学习OC里的类的声明,属性声明,属性的设置器、访问器以及@property属性和点语法。今天就来测试一下
1.新建类文件
在oc里面新建类文件,会新建出来两个文件。比如新建Person类,则会出现两个文件:“person.h”、"person.m"。
其中,类的属性和方法的声明会放在"person.h"里面, 类的方法的实现会放在"person.m"文件里面。
2.在person类中新建两个属性
-在person.h中声明两个属性name 、age。其中name会使用传统设置器和访问器,而age会使用@property和点语法。
// // Person.h // HelloWorld // // Created by lengxuan on 14-4-3. // Copyright (c) 2014年 lengxuan. All rights reserved. // #import <Foundation/Foundation.h> @interface Person : NSObject{ NSString *name; int age; } //设置器和访问器 -(void) setName:(NSString *) _name; -(NSString *) getName; //@perperty 属性 @property(nonatomic) int age; /*在@property() 括号中,可以填写的属性: * readwrite: 默认,可读可写 * readonly: 只读 * assign: 默认,引用计数器不增加 * retain: 引用计数器加1 * automic: 默认,原子性,指的是在执行该标记标识的方法时,不会被另外的线程打断 * nonatomic: 非原子性 */ @end
- 在person.m文件中,我们将对name的设置器和访问器进行实现和@property属性的实现
// // Person.m // HelloWorld // // Created by lengxuan on 14-4-3. // Copyright (c) 2014年 lengxuan. All rights reserved. // #import "Person.h" @implementation Person //@property属性的实现,使用此标识,在编译时自动形成相应的设置器和访问器 @synthesize age; //设置器 -(void) setName:(NSString *) _name{ name = _name; } //访问器 -(NSString *) getName{ return name; } @end
3. 调用Person类
在需要调用Person的文件里,需要导入Person.h头文件。
// // AppDelegate.m // HelloWorld // // Created by lengxuan on 14-3-17. // Copyright (c) 2014年 lengxuan. All rights reserved. // #import "AppDelegate.h"
//引用Person.h #import "Person.h" @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; //声明person实例,init用来初始化。其实我们并没有写Person的无参构造函数,很明显这是编译器自动生成的调用父类的无参构造函数 Person *person = [[Person alloc] init]; //传统的设置器和访问器 [person setName:@"Tom"]; NSLog(@"person‘s name is %@",[person getName]); //@property属性和点语法 person.age = 20; NSLog(@"person‘s age is %d", person.age); //好像在以前的版本中还要释放该对象内存,5.0.2版本貌似是ARC自动释放内存。真省心 //[person release];
}
[学习笔记]@property属性和点语法,布布扣,bubuko.com
原文:http://www.cnblogs.com/lengxuanfei/p/3644120.html