标签:
1 .是赋值,赋值的就是展开为set方法
2. 不是赋值:展开为set方法
使用示例:
Person类的声明:
点语法的测试:
二. OC成员变量的作用域
三. @property 与 @synthesize
1 - (int)age 2 { 3 eturn _age; 4 } 5 - (void)setAge:(int)age 6 { 7 _age = age; 8 }
1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObject 4 5 // @property 可自动生成某个成员的set和get声明 6 // 成员变量名不能加 _ 7 // 如果成员变量不存在,则会自动生成 private类型 8 @property int age; 9 //- (void)setAage:(int)age; 10 //- (int)age; 11 @end
set[762:52529] p.age 5
1 typedef struct obj object{ 2 Class isa; 3 }*id;
/* 1. 调用 +alloc 分配存储空间 */ //Person *p1 = [Person alloc]; /* 2. 调用 - init进行初始化 */ //Person *p2 = [p1 init]; // 直接一句话搞定 开发中常用,初始化自己的值 Person *p3 = [[Person alloc] init];
2015-03-23 14:09:43.375 构造方法[917:81284] p age 10
Person类的声明:自定义构造方法用户设置名字和年龄
#import <Foundation/Foundation.h> @interface Person : NSObject { NSString *_name; int _age; } @property NSString *name; @property int age; // 自定义构造方法:两部分 声明和实现 /* 自定义构造方法规范: 1.一定是对象方法 2.返回值是id类型 3.方法名以init 开头 */ - (id)initWithName:(NSString *)name andAge:(int)age; @end
#import "Person.h" @implementation Person - (id)initWithName:(NSString *)name andAge:(int)age { /* 无论自己写还是改写 都必须执行父类初始化 */ if(self = [super init]) { _name = name; _age = age; } return self; } @end
测试代码:
#import "Person.h" #import "Student.h" int main() { /* 使用自定义构造方法初始化person对象的名字和年龄*/ Person *p = [[Person alloc] initWithName:@"mike" andAge:18]; NSLog(@"name %@ age %d",p.name,p.age); return 0;
}
2015-03-23 14:20:15.727 自定义构造方法[966:85096] name mike age 18
总结:构造方法就是用来初始化成员变量的,成员变量属于父类就在父类中初始化。
Objective-C基础学习笔记(六)-property作用-构造方法-OC成员变量的作用域
标签:
原文地址:http://www.cnblogs.com/jianghg/p/4494137.html