2.判斷if書寫方式
建議這樣寫
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 0) return 10;
if (indexPath.row == 1) return 20;
if (indexPath.row == 2) return 30;
return 40;
}
而不是
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.row == 0) {
return 10;
}else if (indexPath.row == 1){
return 20;
}else if (indexPath.row == 2){
return 30;
}else{
return 40;
}
}
4.類型輸出
類型 | 定義 |
---|---|
NSInteger | %ld or %lx |
NSUInteger | %lu or %lx |
CGFloat | %f or %g |
CFIndex | %ld or %lx |
pointer | %p |
long long | %lld or %llx |
unsigned long long | %llu or %llx |
6.UIView不能接收觸摸事件的4種情況:
1>不接收用戶交互userInteractionEnabled = NO;比如UIImageView,UILabel;
2>隱藏hidden =YES;
3>透明alpha<0.01;
4>點(diǎn)擊的point在View范圍之內(nèi),但是View的范圍超出了superView,同時(shí)view的父類的clipsToBounds屬性值為NO
注意:UIImageView的userInteractionEnabled 的默認(rèn)就是NO,因此UIImageView以及它的子控件默認(rèn)是不能接收觸摸事件的
例如:不是按鈕就一定有反應(yīng)的,要看其父控件是誰.若按鈕的父控件是ImgView 要是想要bth有響應(yīng)的話,需要把imgView.userInteractionEnabled = YES;這樣按鈕就有反應(yīng)了
8.代理使用weak還是assign?
weak: 他會把后面的東西當(dāng)成一個(gè)對象空入,沒有指針指向的時(shí)候會將其釋放掉
assign:基本數(shù)據(jù)類型
在非ARC環(huán)境里面設(shè)置代理對象可以用assign
在ARC環(huán)境中設(shè)置代理對象要用weak(如果該對象沒有指針指向它繁扎,會自動將該對象釋放咒吐,即自動執(zhí)行delegate = nil)早芭,如果用assign可能會出現(xiàn)野指針,但是可以用delegate = nil來進(jìn)行釋放涧至;建議使用weak安全一點(diǎn)
self.strongPoint = [NSDate date];
self.weakPoint = self.strongPoint;
self.assignPoint = self.strongPoint;
把strongPoint釋放后腹躁,按常理 weakPoint與assignPoint應(yīng)該也為空,但實(shí)際上assignPoint指向的對象釋放了南蓬,他自己指向了一個(gè)不存在的區(qū)域纺非,野指針,需要附加一句 assignPoint = nil; 才可以.
self.strongPoint = nil; //將strongPoint釋放了
//下面這一行會引起程序崩潰(有時(shí)候不崩潰赘方,需要多運(yùn)行幾次
這是因?yàn)楫?dāng) assign 指針?biāo)赶虻膬?nèi)存被釋放(釋放并不等于抹除烧颖,只是引用計(jì)數(shù)為0),不會自動賦值 nil 窄陡,這樣再引用 self.assignPoint 就會導(dǎo)致野指針操作炕淮,如果這個(gè)操作發(fā)生時(shí)內(nèi)存還沒有改變內(nèi)容,依舊可以輸出正確的結(jié)果跳夭,而如果發(fā)生時(shí)內(nèi)存內(nèi)容被改變了涂圆,就會crash
NSLog(@"assignRefrence:%@", self.assignPoint);
結(jié)論證明:在 ARC 環(huán)境下編程時(shí),指針變量一定要用 weak 修飾币叹,只是基本數(shù)據(jù)類型和結(jié)構(gòu)體需要用 assign 乘综,例如 delegate ,一定要用 weak 修飾