基本數據類型或者Core Foundation對象都沒有引用計數html
主線程會自動建立釋放池,子線程須要手動建立釋放池。數組
具體的區別:http://www.cnblogs.com/langtianya/p/3722129.htmlspa
retain:始終是淺複製。引用計數每次加一。返回對象是否可變與被複制的對象保持一致。線程
copy:對於可變對象爲深複製,引用計數不改變;對於不可變對象是淺複製,代理
引用計數每次加一。始終返回一個不可變對象。code
mutableCopy:始終是深複製,引用計數不改變。始終返回一個可變對象。orm
不管是深拷貝仍是淺拷貝,數組的元素都是淺拷貝htm
真正的深拷貝:歸檔反歸檔對象
UIButton繼承於UIControl,UIControl繼承於UIView,UIView沒有內部事件,blog
touchesBegan、touchesMoved touchesEnded touchesCanclled這四個方法來自於UIView和UIViewController的共同父類:UIResponder
硬件檢測到觸摸操做,會將信息交給UIApplication,而後開始檢測。
(1)響應者鏈的查詢過程:首先系統須要肯定是誰點擊/觸摸了屏幕,這個尋找的過程稱爲:hit-test view ,按照這個:UIApplication->UIWindow->UIViewController->UIView(檢測全部的子視圖)順序往下走,知道找到觸摸的UIView ,hitTest:withEvent:返回對應的UIView,這樣就找到了第一響應者,確認了觸摸位置,完成了響應者鏈的查詢過程。
(2)響應者處理觸摸事件:若是第一響應者沒有處理事件,那麼事件會按照:觸摸的子視圖->UIView->UIViewController->UIWindow->UIApplication 順序向下傳遞,若是一直沒有響應者處理,則丟棄觸摸事件。
使用Xib時,是須要註冊的,目前我掌握的有兩種方法:
方法一:
在viewDidLoad方法中進行註冊,在後面的設置cell方法中直接使用。
[self.tableView_Recommend registerNib:[UINib nibWithNibName:@"RecommendCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"Recommend_ZN"];
方法二:
在設置cell的時候進行註冊。
SingersTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"singerscell"]; if (cell == nil) { cell = (SingersTableViewCell *)[[[NSBundle mainBundle] loadNibNamed:@"SingersTableViewCell" owner:self options:nil] lastObject]; }
iOS中最經常使用的就是tableView了吧,一個完整的APP裏面但是須要咱們各類自定義cell的哦~,因此遇到問題也不奇怪了吧。
常常用xib自定義cell,因此總得試一下代碼自定義吧,否則都不會代碼寫了。代碼實現自定義cell時,那麼cell中子控件的frame要怎麼設置呢:
須要用-(void) layoutSubviews 來實現。(方法已經大寫加粗啦~)
- (void)layoutSubviews { UIView *view_cell = [[UIView alloc] initWithFrame:self.contentView.frame]; view_cell.backgroundColor = [UIColor redColor]; [self.contentView addSubview:view_cell]; }
而 這個-(void) layoutSubviews方法在什麼狀況下會調用呢,當咱們在某個類的內部調整子視圖位置時,就會調用。要是寫在-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier方法裏,那麼當你在 tableView的代理方法中返回cell的高度時,並不會修改子控件的大小,本寶寶這樣寫的,就出現了這樣的問題。
設置tableView的頭視圖的時候須要:self.tableView.tableHeaderView = view(本身建立的視圖)
tableView 的頭視圖也涉及到重用機制,與cell同樣。
NSString *date = [dateFormatter stringFromDate:[NSDate date]];
self.myImageView.image = [[UIImage imageNamed:@"1.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
self.myImageView.tintColor = [UIColor redColor];
對,就是這樣,就是把UIImageView的渲染方式設置爲:UIImageRenderingModeAlwaysTemplate 而後修改tintColor就能夠了。
若是其餘小夥伴對我寫的這篇文章有什麼異議,請儘快聯繫我哦~ 方便我修改嘛