在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...