转:
第二讲:Obj-C 点语法
2012-12-12 09:29:55| 分类: | 标签: |字号大中小
// Dog.h
@interface Dog : NSObject { int age; } // setter 和 getter 函数 - (void) setAge:(int)newAge; - (int) age; @end
// Dog.m
#import "Dog.h" @implementation Dog - (void) setAge:(int)newAge { age = newAge; } - (int) age { return age; } @end
// main.m #import "Dog.h" #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { @autoreleasepool { NSLog(@"Hello, World!"); Dog *dog = [[Dog alloc] init]; [dog setAge:100]; int dogAge = [dog age]; NSLog(@"dog age is %d", dogAge); // 经典方式 dog.age = 200; // 相当于[dog setAge:200] dogAge = dog.age; // 相当于dogAge = [dog age]; NSLog(@"dog new age is %d", dogAge); } return 0; }
/* 输出结果:
Hello,World!
dog age is 100
dog new age is 200
*/
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× @property @property 是让编译器自动残生函数申明 不用写下面两行代码 - (void) setAge:(int) newAge; - (int) age; 只需要下列一行就可以代替 @property int age; Dog.h 头文件申明(使用@property)@interface Dog:NSObject { init age; } - (void) setAge:(int) newAge; // 这行不要,下边@prooerty 代替 - (int) age; // 这行不要,下边@prooerty 代替 @property int age; // 由这行来代替 @end
@implementation Dog @synthesize age; // 这行代替下边6行 - (void) setAge:(int)newAge{ // 这行不要,被@synthsize 代替 age = newAge; // 这行不要,被@synthsize 代替 } // 这行不要,被@synthsize 代替 - (int) age{ // 这行不要,被@synthsize 代替 return age; // 这行不要,被@synthsize 代替 } // 这行不要,被@synthsize 代替 @end
// Dog.h @interface Dog : NSObject { int age; } @property int age; @end
// Dog.m #import "Dog.h" @implementation Dog @synthesize age; @end
// main.m #import "Dog.h" #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { @autoreleasepool { NSLog(@"Hello, World!"); Dog *dog = [[Dog alloc] init]; [dog setAge:700]; int dogAge = [dog age]; NSLog(@"dog age is %d", dogAge); // 经典方式 dog.age = 800; // 相当于[dog setAge:800] dogAge = dog.age; // 相当于dogAge = [dog age]; NSLog(@"dog new age is %d", dogAge); } return 0; }
/* 输出结果
Hello, World!
dog age is 700
dog new age is 800
*/
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× 总结// Dog.h @interface Dog : NSObject { int _age; } @property int age; @end
// Dog.m #import "Dog.h" @implementation Dog @synthesize age = _age; @end
// main.m
#import "Dog.h" #import <Foundation/Foundation.h> int main ( int argc , const char * argv []) { @autoreleasepool { NSLog (@ "Hello, World!" ); Dog *dog = [[ Dog alloc ] init ]; [dog setAge : 1100 ]; int dogAge = [dog age ]; NSLog (@ "dog age is %d" , dogAge ); dog . age = 2200 ; dogAge = dog . age ; NSLog (@ "dog new age is %d" , dogAge ); } return 0 ; } /* 输出结果: Hello, World dog age is 1100 dog new age is 2200 */ 完