-
NSString
常量定義:正確:
NSString * const name = @"value"; 複製程式碼
錯誤:
const NSString * name = @"value"; NSString const * name = @"value"; 複製程式碼
總結:
const
在*
前 代表*name
不可變, 在*
後代表name
不可變. 我們一般都 是想讓name
的值不變, 所以應該把const
放在*
後; -
格式化日期輸出星期的不同表示:
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = @"E EE EEE EEEE EEEEE EEEEEE EEEEEEE"; NSString * dateStr = [dateFormatter stringFromDate:[NSDate date]]; NSLog(@"%@", dateStr); //輸出: 週六 週六 週六 星期六 六 週六 週六 複製程式碼
-
UICollectionView
更新資料來源 和 更新介面一定要一對一. (備忘, 有空補充程式碼) -
URL
編碼 (先備忘, 有空補說明):C方法:
str = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)str,NULL,CFSTR("%+ /?#&="),kCFStringEncodingUTF8)); 複製程式碼
OC方法:
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 複製程式碼
OC新方法:
- (nullable NSString *)stringByAddingPercentEncodingWithAllowedCharacters:(NSCharacterSet *)allowedCharacters NS_AVAILABLE(10_9, 7_0); 複製程式碼
-
iOS7 之後, 不同
UITableViewStyle
的外觀基本上相同了, 那它們還有什麼不易見的區別呢:-
UITableViewStylePlain
:Section
的Header
和Footer
的高度預設為 0 ;- 並且
Section
的頭腳檢視會懸停在最上方和最下方;
-
UITableViewStyleGrouped
:- 同上相反,
Section
的頭腳高度必須不能為 0 . 為 0 設定無效, 系統會預設一個高度, 如果不需要可以設定一個很小的小數; Section
的 頭腳檢視不會懸停在上面和下面, 會隨著表格一起滑動;
- 同上相反,
-
-
git
不能跟蹤檔名大小寫的改變, 造成一些問題怎麼辦?(如: 圖片名稱改了大小寫, 但是
git
沒有提交這一改變, 造成下次檢出程式碼執行APP時讀取不到圖片)-
把
git
設定為大小寫敏感:-
命令列:
git config core.ignorecase false 複製程式碼
-
直接修改
.git
資料夾的config
檔案中ignorecase = false 複製程式碼
-
-
如果已經出問題, 可以 先刪除檔案,再新增進去
-
-
導致
JSON
不能正確解析的字元 :-
經過測試: 遍歷所有Unicode字元 (UCS-2標準
0 - 65536
), 迴圈放入json中解析, 發現有34個字元出現解析失敗, 前32個字元為ASCII碼為0 - 31
的控制字元 , 另外兩個為"
和\
.(ASCII碼:實際字元) ( "0:", "1:", "2:", "3:", "4:", "5:", "6:", "7:\a", "8:\b", "9:\t", "10:\n", "11:\v", "12:\f", "13:\r”, "14:", "15:", "16:", "17:", "18:", "19:", "20:", "21:", "22:", "23:", "24:", "25:", "26:", "27:", "28:", "29:", "30:", "31:", "34:\"", "92:\\" ) 複製程式碼
-
解決方法: 在解析JSON之前替換掉或去掉這些字元:
-
使用迴圈替換為空的辦法 , 效能消耗0.01秒以內 且大部分json在0.001秒以內:
/** * 刪除特殊字元 */ +(NSString *)deleteSpecialCharacters:(NSString *)str{ //刪除影響 JSON 解析的字元 : [ASCII碼:0~31 以及 " \ ] 共34個字元 , " \ 一般不能直接去掉,需要單獨處理. for (int i = 0; i <= 31; i++) { NSString *value = [NSString stringWithFormat:@"%C",(unichar)i]; str = [str stringByReplacingOccurrencesOfString:value withString:@""]; } return str; } 複製程式碼
-
優化特殊字元的替換方式, 現在效率比以前高10倍, json串替換基本都在0.001秒以內:
/** * 刪除特殊字元 */ +(NSString *)deleteSpecialCharacters:(NSString *)str{ //使用此方法效率比上面快5-10倍, 用 NSString -componentsSeparatedByCharactersInSet: 在控制字元處將字串分割成一個 NSArray;再用一個 NSPredicate 去除空串;最後,用 NSArray -componentsJoinedByString: 用單個空格符將陣列重新拼成字串 //[NSCharacterSet controlCharacterSet] 控制字符集 ASCII碼(0~31 and 127) NSArray<NSString *> *components = [str componentsSeparatedByCharactersInSet:[NSCharacterSet controlCharacterSet]]; components = [components filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self <> ''"]]; str = [components componentsJoinedByString:@" "]; return str; } 複製程式碼
-
-
-
int a; //a不一定等於0
//錯誤 int a; a++; //正確 int a = 0; a++; 複製程式碼
-
取一個int型變數的絕對值, 用
abs()
函式有風險. (當值為-2147483648
的時候)//首先我們來看int的範圍: NSLog(@"%i", INT_MIN); //輸出 -2147483648 NSLog(@"%i", INT_MAX); //輸出 2147483647 //我們知道int的範圍是: -2147483648 ~ 2147483647 //然後我們用 abs() 函式取 -2147483648 的絕對值: NSLog(@"%i",abs(-2147483648)); //輸出 -2147483648, 並且Xcode報警告 //為什麼呢? -2147483648 的絕對值不應該是 2147483648 嗎? 這是因為 2147483648 超過int的最大值(2147483647)了, 所以最高位被截斷了 //所以不能用 abs() 函式來取 -2147483648 的絕對值, 這個函式的引數和返回值都是int型; //我們應該使用 labs() 函式, 這個函式的引數和返回值都是long型 NSLog(@"%li",labs(-2147483648)); //輸出 2147483648 //好了, 這下結果正確了, 當然這只是極端的情況, 一般情況還是可以放心使用 abs() 函式 複製程式碼
iOS開發備忘筆記 (持續更新中)
相關文章
- iOS開發備忘筆記 (3)iOS筆記
- iOS開發備忘筆記 (2)iOS筆記
- 【少用會忘】PHP 函式筆記(持續更新)PHP函式筆記
- iOS開發常用小技巧記錄(持續更新)iOS
- 彙編筆記(持續更新中)筆記
- 日常工作筆記(持續更新中。。)筆記
- 軟考筆記 --- 持續更新筆記
- 遊戲開發流程與思想學習筆記(持續更新)遊戲開發筆記
- drupal7學習筆記—–(持續更新中…)筆記
- 【持續更新...】ligerGrid 學習筆記筆記
- 【持續更新...】ECharts學習筆記Echarts筆記
- 【持續更新...】Nginx 學習筆記Nginx筆記
- Java 學習筆記(持續更新)Java筆記
- Vue 開發經驗小記(持續更新)Vue
- Web命令執行筆記(持續更新)Web筆記
- 【持續更新...】Microsoft SSIS 學習筆記ROS筆記
- 《CSS世界》閱讀筆記,持續更新CSS筆記
- 開發常識 持續更新~~
- 我的Android開發框架Collection(持續更新中)Android框架
- 前端工程師面試必備(持續更新中)前端工程師面試
- Node.js 學習筆記_20170924(持續更新…)Node.js筆記
- 《Python 簡明教程》讀書筆記(持續更新)Python筆記
- [oracle零碎筆記]oracle零碎筆記(持續更新…)Oracle筆記
- E 籤包電子合同開發 --持續更新中
- 微信小程式開發(持續更新)微信小程式
- [Android學習筆記]雜碎知識(持續更新)Android筆記
- 細說IOS工程架構(持續更新)iOS架構
- git使用、持續更新中Git
- 高階前端工程師面試必備(持續更新中)前端工程師面試
- 前端開發踩坑日誌(持續更新。。。)前端
- 愛玩手機的貓Linux學習筆記(持續更新)Linux筆記
- 前端開發中遇到的一些問題----持續更新前端
- 2019“寒冬”前端面試必備(持續更新...)前端面試
- Flutter踩坑日記(持續更新...)Flutter
- 後端常用開源元件合集(持續更新中)後端元件
- 一個前端工程師的Docker學習筆記【持續更新】前端工程師Docker筆記
- Flutter實際專案開發中踩坑大合集(持續更新..)Flutter
- AndroidUtilCodeKTX !是時候提升你的開發效率了 !(持續更新中...)Android