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