-
NSString
常量定義:正確:
NSString * const name = @"value";
錯(cuò)誤:
const NSString * name = @"value"; NSString const * name = @"value";
總結(jié):
const
在*
前 代表*name
不可變, 在*
后代表name
不可變. 我們一般都 是想讓name
的值不變, 所以應(yīng)該把const
放在*
后; -
格式化日期輸出星期的不同表示:
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = @"E EE EEE EEEE EEEEE EEEEEE EEEEEEE"; NSString * dateStr = [dateFormatter stringFromDate:[NSDate date]]; NSLog(@"%@", dateStr); //輸出: 周六 周六 周六 星期六 六 周六 周六
UICollectionView
更新數(shù)據(jù)源 和 更新界面一定要一對(duì)一. (備忘, 有空補(bǔ)充代碼)-
URL
編碼 (先備忘, 有空補(bǔ)說(shuō)明):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);
-
<a name="UITableViewStyle"></a>
UITableView
不同style
的區(qū)別 :iOS7 之后, 不同
UITableViewStyle
的外觀基本上相同了, 那它們還有什么不易見(jiàn)的區(qū)別呢:-
UITableViewStylePlain
:-
Section
的Header
和Footer
的高度默認(rèn)為 0 ; - 并且
Section
的頭腳視圖會(huì)懸停在最上方和最下方;
-
-
UITableViewStyleGrouped
:- 同上相反,
Section
的頭腳高度必須不能為 0 . 為 0 設(shè)置無(wú)效, 系統(tǒng)會(huì)默認(rèn)一個(gè)高度, 如果不需要可以設(shè)置一個(gè)很小的小數(shù); -
Section
的 頭腳視圖不會(huì)懸停在上面和下面, 會(huì)隨著表格一起滑動(dòng);
- 同上相反,
-
-
git
不能跟蹤文件名大小寫的改變, 造成一些問(wèn)題怎么辦?(如: 圖片名稱改了大小寫, 但是
git
沒(méi)有提交這一改變, 造成下次檢出代碼運(yùn)行APP時(shí)讀取不到圖片)-
把
git
設(shè)置為大小寫敏感:-
命令行:
git config core.ignorecase false
-
直接修改
.git
文件夾的config
文件中ignorecase = false
-
如果已經(jīng)出問(wèn)題, 可以 先刪除文件嗦篱,再添加進(jìn)去
-
-
導(dǎo)致
JSON
不能正確解析的字符 :-
經(jīng)過(guò)測(cè)試: 遍歷所有Unicode字符 (UCS-2標(biāo)準(zhǔn)
0 - 65536
), 循環(huán)放入json中解析, 發(fā)現(xiàn)有34個(gè)字符出現(xiàn)解析失敗, 前32個(gè)字符為ASCII碼為0 - 31
的控制字符 , 另外兩個(gè)為"
和\
.(ASCII碼:實(shí)際字符) ( "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之前替換掉或去掉這些字符:
-
使用循環(huán)替換為空的辦法 , 性能消耗0.01秒以內(nèi) 且大部分json在0.001秒以內(nèi):
/** * 刪除特殊字符 */ +(NSString *)deleteSpecialCharacters:(NSString *)str{ //刪除影響 JSON 解析的字符 : [ASCII碼:0~31 以及 " \ ] 共34個(gè)字符 , " \ 一般不能直接去掉,需要單獨(dú)處理. for (int i = 0; i <= 31; i++) { NSString *value = [NSString stringWithFormat:@"%C",(unichar)i]; str = [str stringByReplacingOccurrencesOfString:value withString:@""]; } return str; }
-
優(yōu)化特殊字符的替換方式, 現(xiàn)在效率比以前高10倍, json串替換基本都在0.001秒以內(nèi):
/** * 刪除特殊字符 */ +(NSString *)deleteSpecialCharacters:(NSString *)str{ //使用此方法效率比上面快5-10倍, 用 NSString -componentsSeparatedByCharactersInSet: 在控制字符處將字符串分割成一個(gè) NSArray裙椭;再用一個(gè) NSPredicate 去除空串;最后曼尊,用 NSArray -componentsJoinedByString: 用單個(gè)空格符將數(shù)組重新拼成字符串 //[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
//錯(cuò)誤 int a; a++; //正確 int a = 0; a++;
-
取一個(gè)int型變量的絕對(duì)值, 用
abs()
函數(shù)有風(fēng)險(xiǎn). (當(dāng)值為-2147483648
的時(shí)候)//首先我們來(lái)看int的范圍: NSLog(@"%i", INT_MIN); //輸出 -2147483648 NSLog(@"%i", INT_MAX); //輸出 2147483647 //我們知道int的范圍是: -2147483648 ~ 2147483647 //然后我們用 abs() 函數(shù)取 -2147483648 的絕對(duì)值: NSLog(@"%i",abs(-2147483648)); //輸出 -2147483648, 并且Xcode報(bào)警告 //為什么呢? -2147483648 的絕對(duì)值不應(yīng)該是 2147483648 嗎? 這是因?yàn)?2147483648 超過(guò)int的最大值(2147483647)了, 所以最高位被截?cái)嗔? //所以不能用 abs() 函數(shù)來(lái)取 -2147483648 的絕對(duì)值, 這個(gè)函數(shù)的參數(shù)和返回值都是int型; //我們應(yīng)該使用 labs() 函數(shù), 這個(gè)函數(shù)的參數(shù)和返回值都是long型 NSLog(@"%li",labs(-2147483648)); //輸出 2147483648 //好了, 這下結(jié)果正確了, 當(dāng)然這只是極端的情況, 一般情況還是可以放心使用 abs() 函數(shù)
iOS開發(fā)備忘筆記 (持續(xù)更新中)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門灯谣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蛔琅,你說(shuō)我怎么就攤上這事胎许。” “怎么了罗售?”我有些...
- 文/不壞的土叔 我叫張陵呐萨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我莽囤,道長(zhǎng)谬擦,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任朽缎,我火速辦了婚禮惨远,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘话肖。我一直安慰自己北秽,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布最筒。 她就那樣靜靜地躺著贺氓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪床蜘。 梳的紋絲不亂的頭發(fā)上辙培,一...
- 那天,我揣著相機(jī)與錄音邢锯,去河邊找鬼扬蕊。 笑死,一個(gè)胖子當(dāng)著我的面吹牛丹擎,可吹牛的內(nèi)容都是我干的尾抑。 我是一名探鬼主播歇父,決...
- 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼再愈!你這毒婦竟也來(lái)了榜苫?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤翎冲,失蹤者是張志新(化名)和其女友劉穎垂睬,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體府适,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年肺樟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了檐春。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
- 正文 年R本政府宣布,位于F島的核電站硬爆,受9級(jí)特大地震影響欣舵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缀磕,卻給世界環(huán)境...
- 文/蒙蒙 一缘圈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧袜蚕,春花似錦糟把、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至凿傅,卻和暖如春缠犀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背聪舒。 一陣腳步聲響...
- 正文 我出身青樓室梅,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子亡鼠,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
- 多線程赏殃、特別是NSOperation 和 GCD 的內(nèi)部原理。運(yùn)行時(shí)機(jī)制的原理和運(yùn)用場(chǎng)景间涵。SDWebImage的原...
- __block和__weak修飾符的區(qū)別其實(shí)是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用仁热,...