正文:
• 格式化**
◦ 指標「*」
號的位置
▪ 如:
nsstring *varname;
◦ 空格 vs tabs
▪ 只允許使用空格,將編輯器設定為1個
tab = 2
個字元縮排
◦ 每行的長度
◦ protocals
▪ 待完善
◦ 初始化
▪ 在初始化方法中,不要將變數初始化為
「0」或
「nil」
,那是多餘的
▪ 記憶體中所有的新建立的物件(
isa除外)都是
0,所以不需要重複初始化為
「0」或
「nil」
◦ 避免顯式的呼叫
+new方法
▪ 禁止直接呼叫
nsobject
的類方法
+new
,也不要在子類中過載它。使用
alloc
和init
方法◦
保持公共
api的簡潔性
▪ 待完善◦
#import vs #include
▪ 使用#import
引入ojbective-c
和ojbective-c++
標頭檔案,使用
#include引入c
和c++
標頭檔案
◦ import
根框架(
root frameworks
),而非各單個檔案
▪ 雖然有時我們僅需要框架(如
cocoa
或 foundation
)的某幾個標頭檔案,但引入根檔案編譯
器會執行的更快。因為根框架(
root frameworks
)一般會預編譯,所以載入會更快。再次強調:使用
#import
而非 #include
來引入objective-c
框架。如:
#import //
禁止#import
...#import //
對頭◦
建立物件時盡量使用
autorelease
▪ 禁止使用
retain
,以防止意外的修改了
nsstring
變數的值。如:
- (void)setfoo:(nsstring *)afoo◦或@property (nonatomic, copy) nsstring *astring;
避免丟擲異常(
throwing exceptions)▪
待完善
◦ 對 nil
的檢查▪
僅在有業務邏輯需求時檢查
nil,而非為了防止崩潰
▪ 向 nil
傳送訊息不會導致系統崩潰,
objective-c
執行時負責處理。
◦ bool陷阱
▪ 命名:與去掉
「_」字首的成員變數相同,使用
@synthesize
將二者聯絡起來。如:
// abcd.h@inte***ce myclass : nsobject
@property (copy, nonatomic) nsstring *name;
@end
// abcd.m@implementation myclass
@synthesize name = _name;
@end
▪ 位置:屬性的宣告緊隨成員變數塊之後,中間空一行,無縮排。如上例所示
▪ 嚴把許可權:對不需要外部修改的屬性使用
readonly
▪ nsstring
使用copy
而非retain
▪ cftype
使用@dynamic
, 禁止使用
@synthesize
▪ 除非必須,使用
nonatomic
• cocoa pattern
◦ delegate pattern
(委託)
iOS編碼規範
前言 objective c 蘋果推崇的編碼規範核心思想是 可讀性高。不隨便使用縮寫,分段式長函式名都是基於此思想。在實際編碼過程中,隨時以此思想為準則。一 命名 1 清晰,無歧義 如 insertobject atindex 好 insert at 不清晰 方法名稱必須明確表達出該方法的用途 駝峰...
iOS 編碼規範
當重寫乙個子類並需要init方法,注意要重寫父類的指定初始化方法。當匯入的標頭檔案使用objective c或objective c 語言時,使用 import 當匯入標準c或 c 標頭檔案時,使用 include 標頭檔案應該使用自己的 define 重載入保護 在nsstring 上呼叫sett...
IOS 編碼規範
首先是巨集定義 define file name filename 表示時,使用大寫字母表示與一般駝峰表示想區別,然後每個詞之間使用 分開 列舉定義 列舉定義的時候,我們遵循大駝峰標記 typedef ns enum nsinteger,test 函式取名 乙個規範的方法讀起來應該像一句完整的話,讀...