iOS 面試中遇到的部分問題及簡單答案(1)->(陸續更新)

1.簡述block的實現結構

一個block實例實際上由6部分構成:

1.isa指針,所有對象都有該指針,用於實現對象相關的功能。

2.flags,用於按bit位表示一些block的附加信息,本文後面介紹block copy的實現代碼可以看到對該變量的使用。

3.reserved,保留變量。

4.invoke,函數指針,指向具體的block實現的函數調用地址。

5.descriptor,表示該block的附加描述信息,主要是size大小,以及copy和dispose函數的指針。

6.variables,capture過來的變量,block能夠訪問它外部的局部變量,就是因爲將這些變量(或變量的地址)複製到了結構體中。



2. 簡述core animation

核心動畫是一套包含圖形繪製,投影,動畫的Objective–C類集合。它通過開發人員所熟悉的應用程序套件和Cocoa Touch視圖架構的抽象分層模式,同時使用先進的合作效果提供了一套流暢的動畫。

使用核心動畫,你只需要設置一些參數比如起點和終點,剩下的幀核心動畫爲你自動完成。

核心動畫類有以下分類:

提供顯示內容的圖層類。

·   動畫和計時類。

·   佈局和約束類。

·   事務類,在原子更新的時候組合圖層類。

核心動畫的基礎類包含在Quartz核心框架(Quartz Core framework)裏面。

圖層類是核心動畫的核心基礎,它提供了一套抽象的概念(假如你使用過NSView或者UIView的話,你一定會對它很熟悉)。CALayer是整個圖層類的基礎,它是所有核心動畫圖層類的父類。



3.iOS 觸摸響應機制,觸摸第一響應者是哪個 ?

          當觸摸屏幕時,第一個響應的是window 然後在依次遍歷它的子視圖,在遍歷子視圖的子視圖,直到最後一個子視圖不在有子視圖,這個子視圖就是響應事件的控件。



4. 簡述 UIViewhierarchy

     管理視圖層次 Managing the ViewHierarchy,主要是指視圖的層次上的管理,及對視圖的操作。

//添加子視圖
- (void)addSubview:(UIView *)view


//從父視圖中移除
- (void)removeFromSuperview


//移動指定的子視圖到最頂層
- (void)bringSubviewToFront:(UIView *)view


//移動制定的子視圖到後方,所有子視圖的下面
- (void)sendSubviewToBack:(UIView *)view


//在指定的位置插入子視圖,視圖的所有視圖其實組成了一個數組
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index


//將指定的子視圖移動到指定siblingSubview子視圖的前面
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview


//將指定的子視圖移動到指定siblingSubview子視圖的後面
- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview


//交換兩子視圖的位置
- (void)exchangeSubviewAtIndex:(NSInteger)index1withSubviewAtIndex:(NSInteger)index2


//判斷接收對象是否是指定視圖的子視圖,或與指定視圖是同一視圖
- (BOOL)isDescendantOfView:(UIView *)view



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章