国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Objective-C類

2019-11-14 18:28:38
字體:
來源:轉載
供稿:網友

Objective-C簡稱OC,擴充?C語?的?向對象編程語?.是OS X和iOS操作系統的主要編程語言。下面是使用OC創建一個類:

   接口部分:Student.h文件

 
 
 

實現部分:Student.m文件

 

  

  類已創建完畢,下面是類的使用:

主函數:main.m

 

  實例變量的可見度分為public(共有的),PRotected(保護的),private(私有的).

1 @interface Student : NSObject{2     @public        //可在類外使用,可見度高,破壞封裝,使用較少.3     NSString *_name;4     @protected    //默認的,實例變量只能在該類和其?類內操作5     NSString *_gender;6     @private        //只能在類內使用        7     NSInteger _age;8 }
 

為了不破壞封裝類內一般使用protected(默認的)創建實例變量.為了在類外能使用類里的實例變量,就要在類內設置setter(設置器),getter(訪問器)方法.

//Student.h文件@interface Student : NSObject{    NSString *_name;    NSString *_gender;}//設置姓名(聲明)-(void)setName:(NSString *)name;//設置性別(聲明)-(void)setGender:(NSString *)gender;//獲取姓名(聲明)-(NSString *)name;//獲取性別(聲明)-(NSString *)gender;@end//Student.m文件@implementation Student//設置姓名(實現)-(void)setName:(NSString *)name{    _name = name;}//設置性別(實現)-(void)setGender:(NSString *)gender{    _gender = gender;}//獲取姓名(實現)-(NSString *)name{    return _name;}//獲取性別(實現)-(NSString *)gender{    return _gender;}@end

   這樣定義好設置器和訪問器就可以在主函數中使用實例變量了.

//main.m 主函數#import <Foundation/Foundation.h>#import "Student.h"int main(int argc, const char * argv[]) {    @autoreleasepool {        //Student 給alloc發送消息給內存,申請內存        //init student 給init發送消息初始化實例變量        Student *student = [[Student alloc] init];        //通過設置器賦值        [student setName:@"張三"];        //通過訪問器獲取name的值        NSString *str = [student name];        NSLog(@"%@",str);    }    return 0;}

   OC中屬性對getter和setter方法做了默認實現,在一定程度上簡化了程序代碼,并增強了實例變量訪問的安全性.

  屬性的定義:

1 #import <Foundation/Foundation.h>2  3  @interface Student : NSObject4  @property NSString *name;5  //相當于@interface中聲明了兩個方法(setter,getter)6  //-(void)setName:(NSString *)name;7  //-(NSString *)name;8  @end

  屬性的實現:

 1 #import "Student.h" 2  3 @implementation Student 4 @synthesize name = _name;//相當于@implementation實現了(setter,getter)方法 5 //-(void)setName:(NSString *)name{ 6 //      _name = name; 7 //} 8 //-(NSString *)name{ 9 //      return _name;10 //}11 @end

  @synthesize name = _name;可以省略,可以只在頭文件里定義@property NSString *name;

  

  OC中為屬性提供了?一些關鍵字?用以控制setter、getter的實現細節,也就是屬性的屬性.

  屬性的屬性分為三類:

  第?類:讀寫性控制(readonly、readwrite、setter、getter)

1)readwrite讀寫,默認的.編譯器聲明setter和getter方法.
2)readonly 只讀,編譯器只聲明getter方法.
3)setter給編譯器指定setter方法名.setter方法基本不使用,一般不要修改以其定義的setter方法名.
4)getter方法,給編譯器指定getter方法名,getter僅在BOOL類型的屬性中使用.

   第?類:原?子性控制(nonatomic、atomic)

  1)atonic 原子性,默認的,保證線程安全.占用很多系統資源,降低系統性能,一般用nonatonic.
  2)nonatonic,非原子,不保證線程安全.

  第三類:語義設置(assign、retain、copy)

1)assign 基本數據類型,默認的.
2)retain 只能給對象類型.
3)copy 只能給遵循<NSCopying>協議的對象類型使用.

使用方式:

1 #import <Foundation/Foundation.h>2 3 @interface CollegeStudent : NSObject4 @property (nonatomic,retain) NSString *name;5 @end

 

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岱山县| 同德县| 东海县| 田东县| 郓城县| 宁阳县| 平顶山市| 丹棱县| 且末县| 招远市| 措美县| 南开区| 南雄市| 綦江县| 彝良县| 天峨县| 宁河县| 渭南市| 宁乡县| 望江县| 陕西省| 滁州市| 潼南县| 普安县| 鄂托克前旗| 尼勒克县| 长沙县| 黎川县| 南岸区| 侯马市| 航空| 曲麻莱县| 宜丰县| 张家口市| 阿克| 孝昌县| 贵南县| 香格里拉县| 建德市| 闽侯县| 潢川县|