20150616屬性@property

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




發佈了71 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章