//
// 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;
}