程式設計筆記 objective c 關於屬性

2021-05-28 17:18:00 字數 2929 閱讀 2779

在c++中,通常需要編寫getter和setter方法來獲取或者是設定例項變數的值。這兩種方法需要在程式中顯示的完成。這種方式在objective-c中也是適用的。但是objective-c提供了一種更為便捷的方式來完成這種功能。它就是屬性。和c++中的顯示的getter和setter方法相比,屬性機制使得getter函式和setter來的更容易和更簡化。

objectivc-c中的屬性是通過關鍵字@property來宣告的。

例如,有類如下:

student.h檔案:

#import @inte***ce student : nsobject  

-(id)initwithname:(nsstring*)aname math:(float)scoremath english:(float)scoreenglish;

-(nsstring *)getname;

-(float)getmath;

-(float)getenglish;

@end

student.m檔案:

#import "student.h"

@implementation student

- (id)init

return self;}

-(id)initwithname:(nsstring*)aname math:(float)scoremath english:(float)scoreenglish

return self;}

-(nsstring *)getname

-(float)getmath

-(float)getenglish

- (void)dealloc

@end

main.m檔案如下:

#import

#import "student.h"

int main (int argc, const char * argv)

上面程式的輸出結果如下:

name:mark

math:80.000000

math:100.000000

上面的程式是通過c++中的方式來編寫getter方法來獲取私有的例項變數的值。這些個getter方法實現雖然簡單,但是必需有程式設計師顯示書寫來完成。應用屬性機制後,程式如下:

student.h檔案:

#import @inte***ce student : nsobject

@property nsstring * name;

@property float math;

@property float english;

-(id)initwithname:(nsstring*)aname math:(float)scoremath english:(float)scoreenglish;

//-(nsstring *)getname;

//-(float)getmath;

//-(float)getenglish;

@end

student.m檔案:

#import "student.h"

@implementation student

@synthesize name;

@synthesize math;

@synthesize english;

- (id)init

return self;}

-(id)initwithname:(nsstring*)aname math:(float)scoremath english:(float)scoreenglish

return self;}

//-(nsstring *)getname

////

//-(float)getmath

////

//-(float)getenglish

////

//- (void)dealloc//

@end

main.m檔案如下:

#import #import "student.h"

int main (int argc, const char * argv)

程式的輸出如下:

name:mark

math:80.000000

math:100.000000

可見屬性機制使得程式更加簡潔明瞭。

上面程式中引入了新的關鍵字@synthesize,這個關鍵字告訴編譯器自動為其後面的屬性生成getter()和setter()方法。需要注意的一點是雖然在描述上適用的是「自動生成getter()和setter()方法」,但是實際上我們並看不到生成的對應**。需要明確的是編譯器自動生成的getter方法:name(),math(),english()以及sette方法:setname(), setmath(), setenglish()的呼叫完全和普通的方法是一樣的。例如我們可以修改上面的main()函式如下:

#import #import "student.h"

int main (int argc, const char * argv)

程式輸出為:

name:tony

math:99.000000

math:89.980003

程式設計筆記 objective c 關於屬性

在c 中,通常需要編寫getter和setter方法來獲取或者是設定例項變數的值。這兩種方法需要在程式中顯示的完成。這種方式在objective c中也是適用的。但是objective c提供了一種更為便捷的方式來完成這種功能。它就是屬性。和c 中的顯示的getter和setter方法相比,屬性機制...

程式設計筆記 objective c 關於屬性

在c 中,通常需要編寫getter和setter方法來獲取或者是設定例項變數的值。這兩種方法需要在程式中顯示的完成。這種方式在objective c中也是適用的。但是objective c提供了一種更為便捷的方式來完成這種功能。它就是屬性。和c 中的顯示的getter和setter方法相比,屬性機制...

程式設計筆記 objective c 宣告屬性

屬性的宣告使用關鍵字 property。屬性的宣告可以是在 inte ce類中的方法宣告塊的任何地方。property同樣也可以在protocal 協議 和category 種類 中。其通用形式如下 property attributes type name 由於英文property和attribu...