持續(xù)更新
1.問(wèn)題: 為什么把NSTimer對(duì)象以NSDefaultRunLoopMode(kCFRunLoopDefaultMode)添加到主運(yùn)行循環(huán)以后赖舟,滑動(dòng)scrollview的時(shí)候NSTimer卻不動(dòng)了?
解答: nstime對(duì)象是在 NSDefaultRunLoopMode下面調(diào)用消息的夸楣,但是當(dāng)我們滑動(dòng)scrollview的時(shí)候宾抓,NSDefaultRunLoopMode模式就自動(dòng)切換到UITrackingRunLoopMode模式下面,卻不可以繼續(xù)響應(yīng)nstime發(fā)送的消息豫喧。所以如果想在滑動(dòng)scrollview的情況下面還調(diào)用nstime的消息洞慎,我們可以把nsrunloop的模式更改為NSRunLoopCommonModes.
2.問(wèn)題: runtime如何實(shí)現(xiàn)weak變量的自動(dòng)置nil?
解答: runtime 對(duì)注冊(cè)的類(lèi)嘿棘, 會(huì)進(jìn)行布局,對(duì)于 weak 對(duì)象會(huì)放入一個(gè) hash 表中旭绒。 用 weak 指向的對(duì)象內(nèi)存地址作為 key鸟妙,當(dāng)此對(duì)象的引用計(jì)數(shù)為0的時(shí)候會(huì) dealloc,假如 weak 指向的對(duì)象內(nèi)存地址是a挥吵,那么就會(huì)以a為鍵重父, 在這個(gè) weak 表中搜索,找到所有以a為鍵的 weak 對(duì)象忽匈,從而設(shè)置為 nil房午。
3.問(wèn)題:tableView滑動(dòng)不到最底端
解答:[self.view addSubView:tableView]改成self.view = tableView;
4.問(wèn)題:UILabel的enabled設(shè)為NO之后,所有設(shè)置都不管用丹允。
解答:enabled = yes;
5.問(wèn)題:UITableViewCell在左滑刪除時(shí)有網(wǎng)絡(luò)請(qǐng)求的情況崩潰
解答:在刪除倒數(shù)第二個(gè)cell的時(shí)候執(zhí)行的網(wǎng)絡(luò)請(qǐng)求還沒(méi)回來(lái)郭厌,tableview還沒(méi)刷新,這時(shí)刪除倒數(shù)第一個(gè)cell雕蔽。之前的刪除請(qǐng)求block回來(lái)之后刷新tableview折柠,但是后面的網(wǎng)絡(luò)請(qǐng)求的block內(nèi)的indexPath沒(méi)更新,導(dǎo)致越界crash批狐。解決方法是在請(qǐng)求時(shí)使用HUD等卡住主線程扇售。
6.問(wèn)題:dispatch_once()中第一個(gè)參數(shù)dispatch_once_t類(lèi)型的變量能定義成局部變量嗎?
解答:只能定義成全局變量或static變量嚣艇,如下圖寫(xiě)法是錯(cuò)誤的:
原因是在堆上的變量承冰,其地址被重復(fù)使用,在地址原有值不為 0 的情況下食零,GCD 無(wú)法保證在多線程場(chǎng)景下 block 內(nèi)容執(zhí)行且僅執(zhí)行一次困乒。
7.nil對(duì)象 調(diào) rangeOfString返回的不是 NSNotFound
8.改變UISearchBar內(nèi)clearButton的圖像
[self.mSearchBar setImage:[UIImage imageNamed:@"inputCancel"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal];
9.改變cell點(diǎn)擊顏色
self.selectedBackgroundView = [[UIView alloc] initWithFrame:self.frame];
self.selectedBackgroundView.backgroundColor = CHCellTouchUpColor;
10.如何阻止CAShapeLayer的strokeEnd動(dòng)畫(huà)
[CATransaction begin];
[CATransaction setDisableActions:YES];
shapeLayer.strokeEnd = 1;
[CATransaction commit];
11.NSAttributedString 的initWithData方法非常耗時(shí),稍不注意就會(huì)引起卡頓贰谣,需要把init方法放到子線程中顶燕。