//
// Dog.h
// IOS150616_ObjectiveCDotProperty
//
// Created by Peng Junlong on 15/6/16.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Dog : NSObject
//屬性關鍵字:
//retain,copy,assign:同時只能用一個;
//assign(缺省),直接賦值,將傳入的值直接賦值給實例變量(如:_name = name);
//assign 用在基本類型,代理對象指針(***);
//copy 用在字符串對象;
//除了基本類型,字符串類型以及代理對象,剩下的通常用retain;
//retain 先release再retain;
//copy 先release再copy;
//atomic(缺省),nonatomic
//atomic 原子性的,不能單獨拆開來實現,即在.m文件中不能重寫setter和getter方法
//nonatomic 非原子性的,可以單獨拆開重寫setter和getter方法,但同時也要在.m文件中
//使用@synthesize來展開對應的帶"_"的實例變量
//readwrite(缺省),readonly
//readwrite:展開對應的setter方法和getter方法,可讀可寫
//readonly :只展開對應的getter方法,不展開對應的setter方法,只能讀,不能寫
@property (assign,atomic)NSInteger age;
@property (assign,nonatomic,readwrite)float weight;
@property (copy,nonatomic)NSString *name;
//setter getter修改setter和getter方法的方法名
//點語法訪問不受影響,可以繼續使用編譯器生成的默認方法
//經典語法(即使用[])訪問需使用新的方法,不能使用編譯器默認展開的方法,
@property (assign,setter=setNewNumber:,getter=getNumber)NSInteger number;
@end
<span style="font-family: Helvetica; font-size: 14px;">//在.h文件中使用了@property對setter和getter方法及@synthesize進行了展開,所以在.m文件中沒有任何實現</span>
<span style="font-family: Helvetica; font-size: 14px;"></span><pre name="code" class="objc">// Dog.m
// IOS150616_ObjectiveCDotProperty
//
// Created by Peng Junlong on 15/6/16.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//
#import "Dog.h"
@implementation Dog
@end
<span style="font-family: Helvetica; font-size: 14px;"></span><pre name="code" class="objc">//
// main.m
// IOS150616_ObjectiveCDotProperty
//
// Created by Peng Junlong on 15/6/16.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Dog.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Dog *dog = [[Dog alloc] init];
dog.name = @"小黑"; //點語法
dog.age = 232;
dog.weight = 23.32;
NSLog(@"name = %@,age = %ld,weight = %.3f",dog.name,dog.age,dog.weight);
dog.number = 444;
NSLog(@"name = %@,age = %ld,weight = %.3f,number = %ld",dog.name,dog.age,dog.weight,dog.number); //也可以dog.getNumber;點語法很強大
NSLog(@"name = %@,age = %ld,weight = %.3f,number = %ld",[dog name],[dog age],[dog weight],[dog getNumber]); // 經典語法,必須使用修改後的新的方法
}
return 0;
}