//
// Dog.h
// IOS15090616_ObjectiveC_DotSyntax
//
// Created by Peng Junlong on 15/6/16.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Dog : NSObject
//{
// NSString *_name;
// NSInteger _age;
//}
- (id)init;
//方法一:实现只能是.m文件中的方法一,
//- (void)setName:(NSString *)aname;
//- (void)setAge:(NSInteger)aage;
//- (NSString *)name;
//- (NSInteger)age;
//方法二:实现可以是.m文件中的方法一,方法二和方法三 三种
//@property 关键字展开,默认展开setter和getter方法
//- (void)setName:(NSString *)aname;
//- (NSString *)name;
@property NSString *name; //省略方法声明,实现的方法名和这个名字一样
@property NSInteger age;
<pre name="code" class="objc">// Dog.m
// IOS15090616_ObjectiveC_DotSyntax
//
// Created by Peng Junlong on 15/6/16.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//
#import "Dog.h"
@implementation Dog
- (id)init
{
if (self = [super init]) {
_name = @"小黑";
_age = 2;
}
return self;
}
//方法一:
//- (void)setName:(NSString *)aname
//{
// _name = aname;
//}
//
//- (void)setAge:(NSInteger)aage
//{
// _age = aage;
//}
//
//- (NSString *)name
//{
// return _name;
//}
//
//- (NSInteger)age
//{
// return _age;
//}
//方法二:
//@synthesize 关键字展开setter和getter方法的实现
//可以在.h文件中省略_name和_age的声明,@synthesize展开了_name和_age
//@synthesize name = _name; //name和_name表示的是同一个实例变量,编译器会自动根据name声明_name变量
//@synthesize age = _age;
//方法三:
//省略@synthesize
- (void)printDog
{
NSLog(@"name = %@,age= %ld",[self name],[self age]);
}
@end
//方法三//@property//展开了setter和getter方法的声明及synthesize语句;//synthesize//展开@synthesize name = _name;// @synthesize age = _age;//展开的_name和_age是私有的,可以在{}中声明将其公开////@property NSString *name; //省略方法声明,实现的方法名和这个名字一样////@property NSInteger age;- (void)printDog;@end
//
// main.m
// IOS15090616_ObjectiveC_DotSyntax
//
// Created by Peng Junlong on 15/6/16.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Dog.h"
//******************************
//* 点语法 *
//* @property和@synthesize *
//******************************
//点语法:方便其他程序员转移到IOS开发
int main(int argc, const char * argv[]) {
@autoreleasepool {
Dog *dog = [[Dog alloc] init];
[dog printDog];
[dog setName:@"小白"];
[dog printDog];
dog.name = @"小黄";// 等价于[dog setName:@"小黄"];编译器会将它自动编译成[dog setName:@"小黄"];
//dog->_age;//直接调用实例变量,变量必须是public的
dog.age = 23;
[dog printDog];
//有等号,点放在等号左边时是等价于调用setter方法,否则是等价于getter方法
//等价于调用[dog name]和[dog age]
NSLog(@"name = %@ ,age = %li",dog.name,dog.age);;
}
return 0;
}