隨手記幾個(gè)最近碰到的小問(wèn)題
tips:如果有錯(cuò)誤鲤氢,或者有更好的詳細(xì)解答,請(qǐng)隨時(shí)聯(lián)系我進(jìn)行修改
1.CocoaPods的組件化小問(wèn)題
在組件化的過(guò)程中,使用CocoaPods發(fā)現(xiàn)了一些小問(wèn)題,記錄一下
- 以path形式調(diào)試時(shí)喂链,新增文件問(wèn)題
需要在bundle project中先添加文件,然后回到main project中pod update一下才能正確加入 - 指定版本號(hào)失敗妥泉,繼續(xù)從Head上拉取最新代碼
需要在podspec中定義source后加上, :tag => spec.version椭微,來(lái)確定版本號(hào)和tag的關(guān)系
2.reloadSections的cell消失問(wèn)題
對(duì)于reloadSections:withRowAnimation
的動(dòng)畫(huà),如果按照以下方式寫(xiě)盲链,會(huì)出現(xiàn)很神奇的全部消失事件蝇率。
_cellArray = NSArray.new;
_cell1 = [[UITableViewCell alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 100)];
_cell1.textLabel.text = @"111111";
_cell1.textLabel.textColor = [UIColor blackColor];
_cell2 = [[UITableViewCell alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 100)];
_cell2.textLabel.text = @"222222";
_cell2.textLabel.textColor = [UIColor blackColor];
_cell3 = [[UITableViewCell alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 100)];
_cell3.textLabel.text = @"333333";
_cell3.textLabel.textColor = [UIColor blackColor];
_cellArray = @[_cell1, _cell2, _cell3];
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 100;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [_cellArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSInteger row = indexPath.row;
UITableViewCell *cell = [_cellArray objectAtIndex:row];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
}
其實(shí)原因就是reloadSections:withRowAnimation
的動(dòng)畫(huà)會(huì)對(duì)cell進(jìn)行消失動(dòng)畫(huà)處理,那么如果是同一個(gè)cell就會(huì)消失刽沾。
所以這邊的做法是應(yīng)該用新的cell作為動(dòng)畫(huà)完成后的cell來(lái)顯示本慕。
3.tableview reloaddata導(dǎo)致內(nèi)部textfield失焦問(wèn)題
當(dāng)在tableview上,有cell有UITextField侧漓,并且是firstResponder的時(shí)候锅尘,[tableview reloaddata]
會(huì)導(dǎo)致UITextField失焦。比較好的處理方法是- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;
讓他重新獲得焦距布蔗。
4.關(guān)于watchpoint去監(jiān)控view的frame變化問(wèn)題
在調(diào)試的時(shí)候藤违,我們經(jīng)常會(huì)用watchpoint set variable
去調(diào)試變量的設(shè)置,但frame的調(diào)整卻無(wú)法設(shè)置纵揍。其實(shí)frame可以用break的方式進(jìn)行監(jiān)控纺弊。
模擬器
break set -F '-[CALayer setBounds:]' -c '$rdi == 0x...'
真機(jī)
break set -F '-[CALayer setBounds:]' -c '$arg1 == 0x...'
具體原因可以參考參考連接的兩個(gè)文章。
參考連接
1.How do I set an lldb watchpoint on a property of self.view?
2.Using Xcode's debugger to find where UITabBar frame is being set