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

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

熟悉objective-c

2019-11-09 16:51:00
字體:
來源:轉載
供稿:網友

1.objective-c為c語言添加了面向對象特性,濕氣超級。objective-c使用東臺綁定的消息結構,也就是說,在運行時才檢查對象類型。接收一條消息后,究竟應執行何種代碼,由運行期環境而非編譯器來決定。

2.將引入頭文件的時機盡量延后,只在確有需要時才引入,這樣就可以減少類的使用者所需引入的頭文件數量,如果在各自頭文件中引入對方的頭文件,則會導致“循環引用”,當解析其中一個頭文件的時,編譯器會發現它引用了另一個頭文件,兒那個頭文件又回頭引用第一個頭文件。使用#import而非#include指令雖然不會導致是循環,但卻意味著這兩個類有一個無法被正確編譯

3.多用字面量語法,少用與之等價的方法

字面量語法語法如下:

    NSString *string = @"string";    NSNumber *number = @12;不用字面量方式創建:
    NSNumber *number = [NSNumber numberWithInt:12];字面量語法更為精簡,并且有很多其他好處

使用字面量創建

    NSArray *arr = @[@"obj1",@"obj2",@"obj3"];    NSString *obj = arr[1];不適用字面量

    NSArray *arr = [[NSArray alloc]initWithObjects:@"obj1",@"obj2",@"obj3", nil];    NSString *obj = [arr objectAtIndex:1];使用字面量更加簡潔,不過使用字面量語法創建數組時要注意,若數組元素對象中有nil,則會拋出異常,因為字面量語法實際上只是一種“語法糖”(syntactic sugar),其效果扥與先創建一個數組,然后把方括號內的所有對象都加到這個數組中。

    id obj1 = /*....*/;    id obj2 = /*....*/;    id obj3 = /*....*/;    NSArray *arrA = [NSArray arrayWithObjects:obj1,obj2,obj3, nil];    NSArray *arrB = @[obj1,obj2,obj3];當 obj1和obj3都指向有效對象,而obj2是nil,則按字面量語法創建數組arrB時會拋出異常,arrA雖然該創建出來,但只含有obj1一個對象,原因是arrWithObjects會一次處理各個參數,知道法相nil為止,這個微妙的差別表明使用字面量語法更為安全,拋出異常使程序終止執行,這比創建好數組后才發祥元素少了要好,同理字典也是這樣

字面量語法有個小小的限制,就是除了字符串以外,歲創建的對象必須屬于Foundation框架,如果自定義了這些類的子類,則無法使用字面量語法創建對象。

使用字面量語法創建的字符串,數組,字典對象都是不可變的,若想要可變版本的對象,則需要復制一份:

    NSMutableArray *mutarr = [@[@"1",@"2"]mutableCopy];4.多用類型常量,少用#define預處理指令

編寫代碼的時候經常要定義常量,例如,要定義一個動畫時間,也許會用這種方法來做

#define ANIMATON_DURATION 0.3

上述預處理命令會吧源代碼中的ANIMATION_DURATION替換成0.3,但是這樣定義出來的常量沒有類型信息,此外,預處理過程會把碰到的所有ANIMATION_DURATION替換成0.3,要解決此問題,應該利用編譯器的某些特性才對,比如

static const NSTimeInterval kAnimationDuration = 0.3;

此處清楚地描述了敞亮的含義,由此可知改常量類型為NSTimeInterval這有助于為其編寫開發文檔,如果要定義許多常量,那么這種方式會令稍后的閱讀代碼的人更加容易理解其意圖。

還要注意常量常用命名法是:若常量局限某“編譯單元”之內,則在之前加字母k;若常量在類之外可見,則通常以類名為前綴。

定義常量位置很重要,在頭文件中申明可能互相沖突,其實就連用static const定義的常量也不應該出現在頭文件中,這樣等于申明了一個全局變量,如果不打算公開某個常量,可以在實現文件了這樣寫

static const NSTimeInterval kAnimationDuration = 0.3;變量一定要同時使用static和const來申明,如果不加static則編譯器會創建一個“外部符號”,此時如果另一個便一單元也申明同名變量,就會報錯

有事會對外公開某個常量,則可以如下定義

//  In the header file

extern NSTimeInterval *const EOCAnimationDuration// In the implementation file

NSTimeInterval *const EOCAnimationDuration = 0.3;
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳新县| 西贡区| 潮安县| 镇坪县| 沂南县| 黄石市| 策勒县| 苏尼特右旗| 南通市| 鹤峰县| 开江县| 府谷县| 河北省| 桓仁| 泸溪县| 紫金县| 虞城县| 二连浩特市| 新乐市| 广德县| 延长县| 中江县| 阿合奇县| 郓城县| 南澳县| 织金县| 图片| 榆社县| 岳西县| 自贡市| 郸城县| 三门峡市| 遂宁市| 会昌县| 东城区| 南阳市| 珠海市| 长乐市| 新民市| 东城区| 永仁县|