半路出家学习Objective-C,今天看到现有项目里的代码,这里一个@property那里一个@synthesize,这是啥玩意,不清楚啊不清楚。于是就学习下到底是啥呢,将我知道的结果告诉你们。
我们引用之前的代码作为例子:
代码一:
“Car.h”文件:
#import <Foundation/Foundation.h>//头文件的引用
@interface Car: NSObject {
NSInteger tiresCount;//成员属性的声明
}
- (void)haveSomething;//成员方法
- (void) set TiresCount:(NSInteger) count;
- (NSInteger) tiresCount;
@end
“Car.m”文件:
#import "Car.h"
@implementation Car
-(void) haveSomething//成员方法的实现
{
NSLog(@"Hello,My name is Car, I have %d tires.", tiresCount);
}
//对象的setter方法
-(void) setTiresCount:(NSInteger) count
{
tiresCount= count;
}
//对象的getter方法
- (NSInteger) tiresCount{
return tiresCount;
}
@end
代码二:
“Car.h”文件:
#import <Foundation/Foundation.h>//头文件的引用
@interface Car: NSObject {
NSInteger tiresCount;//成员属性的声明
}
- (void)haveSomething;//成员方法
@property NSInteger tiresCount;
@end
“Car.m”文件:
#import "Car.h"
@implementation Car
@synthesize tiresCount;
-(void) haveSomething//成员方法的实现
{
NSLog(@"Hello,My name is Car, I have %d tires.", tiresCount);
}
@end
看看以上代码一和代码二,其实这两个代码实现的功能是一样的,就是给car的成员变量 tiresCount(轮子数)赋值,赋相同的值输出的结果也一样。具体哪里不同,只要看一下两个代码中红色部分 :
代码一:它是手动生成对象的setter和getter方法。
代码二:在头文件中用@property,在实现类中用@synthesize,就实现了代码一中setter和getter方法。
简单的说,一个是手动一个是自动,这就是区别,这样简单的描述相信你也一定懂了!