13. iOS開發小細節--OC篇
今天down下來一個demo,看到其作者的一些程式碼寫法的習慣,倒不是說人家寫的不好,最起碼功能沒問題好吧。只是有一些小細節,我不是很喜歡,總結我的習慣,以及平時瀏覽的blog,今天寫一寫我覺得應該注意的問題。
這篇文章,長期維護,只求程式碼更加完美(加粗)!
1.不需要存在的程式碼
1.1 由IDE自動生成的函式
像這種自動生成的函式,沒有用到的話 就刪掉吧。
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
1.2 遇到一些函式的引數需要傳Block作回撥函式使用,若不需要回撥就別硬傳 ^{}
[self presentViewController:alert
animated:YES
completion:^{}];
像這種的,不需要做後續處理,你直接寫個 nil 多好
1.3 對於你要操作的物件,不要做一些多餘的、無意義的判斷
比如說,我要對一個 UIView 設定 frame ,像這種必須保證例項物件必須存在才能做的操作,就沒必要再去做判斷了
if (view) {
view.frame = rect
}
2.程式碼規範
2.1 巨集定義的名稱要全部用大寫字母
2.2 儘量用字面量語法來優化我們的Object-C語法
[dictionary setObject:object forKey:key];
改成
dictionary[key] = object;
NSString * string = [dictionary objectForKey:key];
改成
NSString * string = dictionary[key];
相信每個同學都會有一個 常量.h
檔案
2.3 數字啥的常量,就別用巨集定義了,用static const
把
#define CONTROLLER_FROM_A 1
改成
static const int kControllerFromA = 1;
2.4 寫完2.1突然想起來 用作key
的字串最好用 k 開頭
static NSString * const CCControllerFromA = @"CCControllerFromA";
改成
static NSString * const kCCControllerFromA = @"kCCControllerFromA";
3. 良好的編碼習慣
3.1 一些常用的UI方面的常量,用巨集定義表示
// cell高度
#ifndef CC_NAVIBAR_HEIGHT
#define CC_NAVIBAR_HEIGHT (CC_ABOVE_IOS(7) ? 64:44)
#endif
//1點的線寬
#ifndef CC_SINGLE_LINE_WEIGHT
#define CC_SINGLE_LINE_WEIGHT (1 / [UIScreen mainScreen].scale)
#endif
3.2 函式中一些有意義的量變為常量
// 這裡的5000數字用 static const CGFloat 表示一下,要不加個註釋啊。
if (width > 5000) {
width = 5000;
}
// 10提出來,kMaxCount = 10
if (mutebelArray.count > 10) {
NSRange removeRange = NSMakeRange(10, mutebelArray.count - 10);
[mutebelArray removeObjectsInRange:removeRange];
}
3.3 巧用三目運算
if (picture.length > 0) {
[self.imgView sd_setImageWithURL:[NSURL URLWithString:picture]];
} else {
[self.imgView sd_setImageWithURL:[NSURL URLWithString:default]];
}
改成
NSString *imgURLStr = picture.length > 0 ? picture : default;
[self.imgView sd_setImageWithURL:[NSURL URLWithString:imgURLStr]];
3.4 字面量陣列和字面量字典使用的時候要注意 nil
// 這裡的a,b,c,d中任何一個是nil,都是crash掉,需要注意!
NSDictionary * dictionary = @{
@"a" : a,
@"b" : b,
@"c" : c,
@"d" : d,
};
3.5 對於一些狀態或者型別的進行判斷的時候,最好把對應的狀態或者型別寫成enum
3.6 在 .h
中如果用到了某個clasee
如果不是必需,用@class
替代#import
相關文章
- iOS開發之OC篇(3)—— NSArray、NSMutableArrayiOS
- iOS開發小記-基礎篇iOS
- iOS 開發選擇OC還是Swift?iOSSwift
- iOS開發基礎篇--NSNotificationCenter使用小結iOS
- 小細節
- iOS開發中使用OC和swift的對比iOSSwift
- iOS節拍器開發iOS
- iOS開發UI篇--仿射變(CGAffineTransform)使用小結iOSUIORM
- iOS開發小tipiOS
- ios 開發UI篇—UITextViewiOSUITextView
- Flutter混合開發—iOS篇FlutteriOS
- Vue、Javascript小細節VueJavaScript
- 混合開發實戰:App里拉起一個小程式(IOS篇)APPiOS
- [iOS][OC] 開發利器:控制器傳送門VCPicker(附demo)iOS
- Flutter外掛開發---iOS篇FlutteriOS
- iOS開發小技巧合集iOS
- iOS開發UI篇--iOS動畫(Core Animation)總結iOSUI動畫
- iOS 初探程式碼混淆(OC)iOS
- 沈向洋等人論文詳解微軟小冰,公開研發細節微軟
- iOS開發UI篇--UICollectionView初步入門iOSUIView
- iOS混合開發庫(GICXMLLayout)五、Texture篇iOSXML
- iOS混合開發庫(GICXMLLayout)七、JavaScript篇iOSXMLJavaScript
- 機器級程式的小細節
- 一個小的技術細節
- Jenkins+iOS持續整合細節記錄JenkinsiOS
- iOS OC-自定義TabBar TabBarViewControlleriOStabBarViewController
- iOS UMeng OC和Swift混編iOSSwift
- Spring IoC註解式開發無敵詳細(細節豐富)Spring
- 輕鬆教你React Native 混合開發(iOS篇)React NativeiOS
- 函式解構引數小細節函式
- Java小細節:List可以add(null)嗎?JavaNull
- Integer類小細節隨筆記錄筆記
- 看FCOS時的小細節總結
- Java細緻末節小錯記錄Java
- 小書MybatisPlus第8篇-邏輯刪除實現及API細節精講MyBatisAPI
- 騰訊音樂招 iOS 開發, base 深圳,要求:本科、三年、OC,懂音視訊開發優先。iOS
- 遊戲開發中常見細節優化實踐遊戲開發優化
- 忍不住要曝光:那些WEB測試不得不說的小細節(基礎篇)Web