標籤:objective getter 規範 setter
命名規範:
對於存取方法的命名,Cocoa有自己的慣例。在為自己的類編寫存取方法時,應當遵守這些慣例,這樣你和其他人讀代碼時才不會感到困惑。
setter 方法根據它所更改的屬性的名稱來命名,並加上首碼set。下面是幾個setter方法的名稱:setEngine:、setStringValue:、setFont:、setFillColor:和setTextLineHeight:。
getter 方法則是以其返回的屬性名稱命名。所以上面的 setter方法所對應的 getter 方法應該是 engine、stringValue、font、fillColor 和 textLineHeight。不要將 get 用作 getter 方法的首碼。例如,方法 getStringValue 和 getFont 就違反了命名慣例。有些語言(如 Java)有不同的命名慣例,它們用 get 做存取方法的首碼。但是如果編寫 Cocoa 程式,請不要這麼做。
說明:
get 這個詞在 Cocoa 中有著特殊的含義。如果 get 出現在 Cocoa 的方法名稱中,就意味著這個方法會將你傳遞的參數作為指標來返回數值。例如,NSData (Cocoa中的類,它可以儲存任意序列的位元組)中有一個 getBytes: 方法,它的參數就是用來儲存位元組的記憶體緩衝區的地址。而 NSBezierPath(用於繪製貝茲路徑)中的 getLineDash:count:phase: 方法則有三個指標型參數 :指向儲存虛線樣式的浮點型數組的指標,指向儲存虛線樣式中元素個數的整數型資料的指標,以及指向虛線起始點的浮點型資料的指標。
如果你在存取方法的名稱中使用了 get,那麼有經驗的 Cocoa 編程人員就會習慣性的將指標當做參數傳入這個方法,當他們發現這不過是一個簡單的存取方法時就會感到困惑。最好不要讓其他編程人員被你的代碼搞得一頭霧水。
例代碼:
.h 檔案:
//// Person.h// OC_Practice_03//// Created by on 15/4/1.// Copyright (c) 2015年 . All rights reserved.//#import <Foundation/Foundation.h>@interface Person : NSObject{ NSString *_name ; NSString *_gender ; int _age ;}//setter設定器- (void)setName: (NSString *)name ;- (void)setGender: (NSString *)gender ;- (void)setAge: (int)age ;//getter訪問器- (NSString *)name ;- (NSString *)gender ;- (int)age ;// 初始化- (instancetype)initWithName: (NSString *)name gender: (NSString *)gender age: (int)age ;- (void)eat ; // 吃- (void)sleep ; // 睡@end // Person
.m 檔案:
//// Person.m// OC_Practice_03//// Created by on 15/4/1.// Copyright (c) 2015年 . All rights reserved.//#import "Person.h"@implementation Person- (void)setName:(NSString *)name { _name = name ;} // setName- (void)setGender:(NSString *)gender { _gender = gender ;} // setGender- (void)setAge:(int)age { _age = age ;} // setAge- (NSString *)name { return _name ;} // getName- (NSString *)gender { return _gender ;} // getGender- (int)age { return _age ;} // getAge- (instancetype)initWithName:(NSString *)name gender:(NSString *)gender age:(int)age { if ( self = [super init] ) { _name = name ; _gender = gender ; _age = age ; } return self ;} // initWithName- (void)eat { NSLog( @"%@在餐廳吃飯!", _name ) ;} // eat- (void)sleep { NSLog( @"%@在睡覺!", _name ) ;} // sleep@end // Person
Objective-C----setter 和 getter