日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS开发知识点总结

發布時間:2025/5/22 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS开发知识点总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
main文件做了這幾件事:1. 創建當前的應用程序2. 根據4個參數的最后為應用程序設置代理類(默認情況下是AppDelegate)3. 將appDelegate 和 應用程序 建立關聯(指定代理,) 4. 將整個應用程序進程放進系統的runloop中(一個死循環) runloop有兩種狀態:等待、處理(處理完后接著等待) frame/bounds/center VC 的生命周期(先alloc/init -》loadView加載界面-》viewDidLoad(只執行1遍) -》viewWillAppear -》viewDidAppear-》viewWillDisapper-》viewDidDisappear-》dealloc) 模態寫在viewWillDisapper、viewDidDisappear?????? 程序的生命周期 UIAllertController警告視圖(sheetAction底部、alertView中部)、警示框方法的封裝 響應者鏈 touch的幾個方法觸碰事件、 手勢(面試第一反應觸碰事件及其幾個方法) touchesBegin -> touchesMoved ->touchesEnded ->touchesCancel 檢測觸摸事件順序:手指觸碰到屏幕(手機硬件)— 》 UIApplication —》window —》VC —》view —》檢測所有視圖 響應觸碰事件順序:當前點擊的點 -》點所在的view-》 父view -》VC- 》window- 》UIApplication —》手機硬件 阻斷響應者鏈方法:userInterractionEnabled = NO; 關閉交互 常見控件中默認關閉交互的是Label、imageView。 手勢 7個: 都涉及到2D仿射函數 UIControl及其子類 UISlider/UISegmentedController/UISwitch/UIStepper/ NSString/NSDic/NSArray NSDate/ 等.... MVC的通訊方式 滾動視圖UIScrollView 設置可滑動區域 bounds 輪播圖、無線循環 導航控制器UINavigationController UINavigationBar管理一組UINavigationItem,UINavigationItem包含了UIBarButtonItem。 入棧出棧push、pop 取消圖片渲染 ?1 [button setImage:[[UIImage imageNamed:@"1.jpg" ] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal] ;? 定義全局風格使用 :UIApperence TableView cell的重用機制(面試) UITableView靠mutableSet來實現重用功能 出屏幕的cell會被添加到mutableSet(集合)中,進入屏幕的cell,先從set中獲取,如果獲取不到,才創建一個cell。在cell顯示之前,給cell賦上相應的內容。 當數據超過一屏(完全出屏)時,滑動時將出屏的加入到重用隊列中,每次當你使用單元格.... 必須實現的2個 代理方法 numberOfRowsInSection:(返回) cellForRowAtIndexPath: 常用的代理方法: didDeselectRowAtIndexPath:等 cell分為3部分:… 一般使用自定義cell 自適應高度為NSString對象的一個方法 懶加載防止子控件重復加載(面試:懶加載的好處) 傳值方式 屬性傳值:前到后 A—>B 代理傳值:后到前 B—>A @protacal協議方法寫在B中,制定A為B的代理(黃金法則) 單例傳值: 協議方法要求會手寫 定義屬性的時候修飾詞用assign,防止循環引用。 線程安全相關(原子性,非原子性,效率影響) 刷新UI放在主線程(放在main.m),耗時的放在子線程。 copy,retain,區別? 深拷貝(內容)(源對象引用計數不會+1)、淺拷貝(指針) copyWithZone 屬性修飾符:3方面回答 線程安全、引用計數、讀寫性 dynamic修飾 系統不會提供set、get方法!!!!!!!!!!!!! @class 只導入類名,不編譯! 真正實現還得導入#improt #improt #include 區別

總結整理

〇、常用控件

UI控件名稱功能
UIButton按鈕按鈕的作用是:支持用戶的點擊事件,在用戶點擊后做出響應
UILabel文本標簽文本標簽的作用是顯示一串固定的文字
UITextField文本輸入框例如輸入用戶名或者是密碼的部分,鍵入內容的區域
UIImageView圖片的顯示用于顯示圖片,添加圖片的
UIScrollview滾動的控件如果內容比較多,超出了一個屏幕,就可以用它來顯示
UITableView表格如果每一行顯示的內容格式差不多,就用這個表格控件
UICollectionView九宮格如果顯示的東西是一塊一塊的,一格一格的,而且每個格子張的差不多,就用這個控件
UIWebView網頁顯示控件一般用來顯示網頁,使用它,就可以在手機上瀏覽網頁
UIAlertView對話框(中間彈框)從中間彈出一個框提示用戶下一步該做
UINavigation導航條顯示在頂部的條
UIPageControl分頁控件能顯示當前的頁碼
UITextView能滾動的文字顯示控件如果文字內容比較多,需要黃航顯示,并且需要編輯
UISwitch開關yes or no,開與關
UIActionSheet底部彈框從底部彈出一個框提示用戶下一步該做什么
UIDataPicker日期選擇選擇日期
UIProgressView進度條水平進度條,比如顯示文件的下載進度,程序的啟動進度
UISlider滑塊在2個數值之間滑動選擇,比如調節音量大小
UIActivityIndicator圈圈一直在轉圈圈,表示讓用戶等待
UISegementControl選項卡在固定的幾個選項之間進項選擇
UIToolbar工具條一般顯示在底部或者是鍵盤的頂部,里面有幾個小按鈕

一、響應者鏈

檢測觸碰視圖:觸碰到屏幕->UIApplication -> window -> viewController -> view -> 檢測所有子視圖【直到檢測到所觸碰的視圖】
處理觸摸事件:觸摸的子視圖 -> view -> viewController -> window -> UIApplication->硬件【因為最終的事件處理還是需要硬件來完成】

二、多線程開發(NSthread、NSOperationQueue、GCD)

iOS中實現多線程的方式有四種
2.1、NSThread
輕量級別的多線程技術,需要我們手動來管理線程。提供的方法比較少,例如:串行、并行這些它實現起來相當困難
開辟子線程的方法有兩種:
(一)初始化,這個需要我們手動開啟線程,也就是調用start方法,并且有返回值,返回的就是NSThread對象。還可以設置線程名稱,設置線程的權限等級等一些參數。
(二)另一個是便利構造器的方法開辟子線程,無返回值,會自動啟動線程,不需要手動調用start方法。
2.2、NSObject
只要是NSObject的子類或者對象都可以通過調用方法進入子線程和主線程。其實這些方法所開辟的子線程也是NSThread的另一種體現方式。
開辟子線程:-performSelectorInBackground: WithObject:
進入子線程:-performSelectorOnMainThread: WithObject: waitUntilDone:
延時執行方法:-performSelector: WithObject: afterDelay:
2.3、NSOperationQueue
它是將一組事件添加到隊列中,如果想讓這組事件在主線程中執行,那么就需要主隊列 [NSOperationQueue mainQueue]; 如果想將一組事件在子線程中執行那么就需要其他隊列 [[NSOperaionQueue alloc] init]; NSOperation就是事件,它本身是一個抽象類,如果需要實現具體操作,需要它的兩個子類:NSInvocationOperation和NSBlockOperation;事件本身和線程無關,只是看你將它添加哪種隊列中或者將事件放入哪種線程中。如果在隊列中想要使得事件順序執行,需要給事件添加依賴關系,但是添加依賴關系的時候兩個事件不能互為依賴。也可以設置事件的優先級來提高它先執行的概率。但是不準確。還可以設置隊列的最大并發執行數,來使得事件順序執行。
2.4、GCD
GCD效率比operationQueue更高一些,功能更強大。目前要替代其他多線程方式的趨勢。它處理事件主要是通過隊列來執行。
分為兩種隊列:一種是串行,一種是并行。系統提供給我們的是一種全局隊列,一種是主隊列。添加事件的函數為dispatch_async(); 一般我們都是用異步添加事件,最重要的原因就是它不會阻塞當前進程。全局隊列中所添加的異步事件肯定都是在子線程中的,主隊列中添加的事件不管是異步還是同步都是在主線程中。

三、會手寫便利構造器

注意autorelease寫在哪?

+(instancetype)personWithName:(NSString *)name andAge:(int)age {Person *person = [[[Person alloc] initWithName:name andAge:age] autorelease];return person; }

四、UITableView、UITableViewController及其常用代理方法

TableView相關代理方法

代理方法: -(NSInteger)numberOfSectionsInTableView: // 共有多少個分區 (如果不實現該代理方法,默認整個表視圖只有一個分區section) -(NSInteger)tableView:numberOfRowsInSection: // 每個分區返回的行數 -(UITableViewCell *)tableView:cellForRowAtIndexPath: // 定義單元格(樣式和數據) -(void)tableView:didSelectRowAtIndexPath: // 點擊cell所響應的代理方法 -(CGFloat)tableView:heightForRowAtIndexPath: // 設置每個cell的高度 -(NSString *)tableView:titleForHeaderInSection: // 為每個分區頭添加標題 -(NSArray *)sectionIndexTitleForTableView: // 添加右側索引條 和編輯有關的代理方法 -(void)setEditing:animated: // 設置表視圖的編輯狀態,也就是是否可被編輯 (【特別注意】此方法是重寫系統方法,不是UITableView的代理方法) -(BOOL)tableView:canEditRowAtIndexPath: // 設置可編輯狀態下的表視圖 (哪個單元格可編輯) -(UITableViewCellEditingStyle)tableView:editingStyleForRowAtIndexPath: // 設置編輯樣式 -(void)tableView:commitEditingStyle:forRowAtIndexPath: // 編輯完成后執行的代理方法 (刪除數據、單元格,添加數據、單元格) -(BOOL)tableView:canMoveRowAtIndexPath: // 設置可以移動的單元格 -(void)tableView:moveRowAtIndexPath:toIndexPath: // 移動完成后執行的代理方法 (原理是先刪除原來位置的數據,再把原來位置的數據添加到新位置)

五、OC的內存管理、深拷貝與淺拷貝
深拷貝拷貝的是內容,淺拷貝拷貝的是地址

六、會手寫完整的set、get、方法,以及懶加載
【特別注意】setter方法中嚴禁使用“.”語法。因為為造成死循環。

setter方法: -(void)setName:(NSString *)name {_name = name; } getter方法: -(NSString *)name {return _name; } 懶加載【本質:重寫系統的屬性的getter方法】(當我們需要用到該對象的時候再初始化它,起到一個延時加載的作用) -(NSArray *)dataArray { if(_dataArray == nil) { _dataArray = [[NSArray alloc] init] ; } return _dataArray; }

七、UIController及其子類整理
熟悉整個OC及其UI的系統類之間的繼承關系
繼承關系:NSObject - UIResponder - UIView - UIControl

八、跟坐標有關的bounds、frame、center之間的關系
frame:是自身以其父view上的左上角為坐標原點
bounds:是以其自身左上角為坐標原點

九、整個應用程序的啟動流程 、及應用的代理方法

十、會手寫一個協議的代理方法
定義屬性代理用assign修飾(原因:防止循環引用)

@protocol TestDelegateViewDelagate <NSObject>//定義一個可選的代理方法 @optional - (void) passMySelf:(id)testDelegateView exchangeColor:(NSString *)exchangeColor;// @required @end @interface TestDelegateView : UIView @property (nonatomic, assign)id<TestDelegateViewDelagate> delegate;//使用assign不需管理內存,不用規避循環引用 @end

十一、UIScrollewView的常用屬性及其代理方法

十二、手寫單例(保護線程安全)
保護線程安全:方法鎖,GCD中的dispath...
12.1 用互斥鎖

static Singleton *singleton = nil +(Singleton *)sharedSingleton {@synchronized(self) {if (singleton == nil) { singleton = [Singleton alloc] init]; } } return singleton; }

12.2 用GCD

static Singleton *singleton = nil; +(Singleton *)sharedSingleton {static dispatch_once_t onceToken;dispatch_once(&onceToken, ^ { if (singleton == nil) { singleton = [[Singleton alloc] init]; } }); return singleton; }

十三、集合視圖的常用屬性和代理方法(layOut布局類)
UICollectionView有一個布局類

十四、MVC框架
MV之間通信(不能直接通信) CV之間通信(點擊事件)
Model:模型
View:視圖
ViewController:視圖控制器

十五、UINavigationController導航控制器相關的

十六、網絡請求 關鍵類
GET同步、異步(block、代理)請求
POST同步、異步(block、代理)請求

十七、UITableBarController 及其相關控件屬性方法

十八、數據持久化方式
①寫入文件
②歸檔反歸檔
③數據化

數據持久化的方式:

①寫入文件 (最大的缺陷:1. 只能就行簡單對象的寫入,即NSString,NSArray,NSDictionary,NSData 2. 不能進行靈活的單條的操作。每次進行修改的時候,只能整個讀取出來,然后修改后,整個寫入) (優點是:操作簡單方便)
②歸檔、反歸檔 (針對復雜對象,缺點也是不能進行靈活的單條操作)
③寫入數據庫(sqlite3)-輕量級別的數據庫(嵌入式數據庫) (缺點和優點與上面相反)

十九、動畫
動畫的原理:思考?

與UIView相關的動畫
19.1.1.類方法 動畫塊
[UIView beginAnimation:context:] // 動畫開始
/這里設置動畫的一些屬性/
[UIView commitAnimation]; // 提交剛才設置好的動畫屬性,其實是提交之后后動畫才開始執行的
19.1.2.類方法 block(一共有四種)
(一)只是動畫執行部分
(二)多了一個compilation參數 :是說動畫執行完成之后 所要作的操作寫在該參數 block中
(三)可以設置options,也就是動畫的線性屬性等一些相關的配置
(四)spring動畫,就是果凍效果,也可以說是彈性效果,多了阻尼和動力兩個參數。使動畫看起來有彈性,參考scrollView滑動到邊緣的時候那種彈性效果
19.1.3.類方法 過渡動畫(動畫塊和block方式都可以實現)
[UIView “transition……”];
19.1.4. 2D仿射變化函數
(一)旋轉rotation
(二)縮放scale
(三)位移translation
19.1.5. UIImageView的動畫(動圖)
19.1.6. UIActivityView的動畫(小菊花,加載等待)
與layer層相關的動畫
19.2.1. 對錨點和position的認識
19.2.2. layer的相關屬性
19.2.3. layer層所有的動畫都繼承于CAAnimation
19.2.4. CATransition過渡動畫
type設置動畫效果
subType設置動畫方向【特別注意】Fade要配合使用視圖的隱藏或者顯示屬性(hidden)使用
19.2.5. CAPropertyAnimation 也是抽象類,有兩個子類 CABasicAnimation、CAKeyFrameAnimation
CABasicAnimation可以通過layer層的旋轉、縮放、位移 是通過keyPath屬性得到隱式動畫。這里記得每一個隱式動畫的開始都需要transform開頭,因為它設置的是3D仿射變換函數的屬性
CAKeyFrameAnimation它主要設置layer層的position屬性,也是通過keyPath獲得屬性路徑。
19.2.6. CATransitionGroup是將多個動畫組合起來。本身不具備動畫特性。
19.2.7. 3D仿射變換函數 它與2D之間的區別為:2D是針對 UIView 的transform來設置的,3D是針對于 layer 的transform來設置的。多了一個Z軸

數據庫緩存、動畫的大量使用(兩大亮點)

二十、多線程
1.進程

系統中正在運行的 一個應用程序就是 一個進程
進程之間是相互獨立的
進程只會在內存中開辟內存空間

2.線程(干活的)

線程是進程的基本執行單元,可以說線程是進程的真正執行者
一個進程最少有一個線程【如果一個進程只有一個線程,那么這個線程稱為主線程或者UI線程】
一個線程中任務的執行是串行(順序執行)的
如果想要同時執行多個任務,就需要多個線程,每條線程可以并發(同時)執行不同任務
*注釋:這里的同時并不是真正的同時,下面會詳細說到

多線程概念:

其實多線程可以理解為多個人,每個人在一個時間只能干一個活,要想一個人干多個任務,那么只能順序執行。而如果有多個人的話,那么就可以在相同的時間段內讓不同的人去干不同的活。所以多線程可以提高程序的執行效率。

多線程原理:

上面的同時我用波浪線畫了出來,這里的同時其實只是一個假象,并不是真正的同時。因為CPU只有一個,而所有的運算都需要CPU來進行計算。所以線程在這里被CPU處理的時候同時也只能處理一個,但這里CPU是怎樣處理多線程的呢?我們知道CPU的執行效率非常快,CPU在這里其實它是給每個線程分配非常短的時間來快速的在線程之間中來回調度(切換)執行,由于這個時間段非常非常短,所以給我們造成了一個多線程同時被CPU執行的一個假象。

所以,如果線程非常非常多的時候,會消耗大量的CPU資源,而且CPU分配給每個線程的頻率也會降低,這樣就會造成效率的下降。
所以,一般我們會開辟1-3個線程,最多也不要超過5個。這樣就能保證CPU的一個執行效率。

NSThread

NSLog(@“%@”, [NSThread currentThread]); // 打印當前代碼段所在的線程
NSLog(@“%@”, [NSThread mainThread]); // 打印主線程的信息?

  • 創建線程
    假設run是一個耗時操作
    (一)創建線程方式一
    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];
    [thread start];
    (二)創建線程方式二
    [NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];
  • 線程的屬性(因為只有方式一有對象,所以只適用于方式一)
    thread.name = @“第一個子線程”; // 設置子線程的名稱
    thread.threadPriority = 1; // 優先級。參數是一個浮點數,取值范圍是0-1。默認值是0.5。開發中一般我們不去修改線程的優先級。
  • 線程的狀態
    (一)阻塞進程
    +(void)sleepUntilDate:(NSDate?)date;
    +(void)sleepForTimeInterval:(NSTimeInterval?)tl;
    (二)強制停止線程
    +(void)exit; // 一旦強制終止,就不能重新啟動代碼,而且后面的代碼不會執行。

  • 另附一套基礎檢測題

    ※ 選擇題(共25題,每題3分) 1、以下對響應鏈說法錯誤的是: 答案:(A)A、當事件發生的時候,響應鏈首先被發送給第一個響應者B、事件將沿著響應者鏈一直向下傳遞,直到被接受并作出處理C、如果整個過程都沒有響應這個事件,則該事件最終要由APP Delegate做出處理D、一般情況下,在響應鏈中只要有對象處理事件,事件就會被傳遞 【A.發送給屏幕,再到應用程序—>.....】 2、以下對多線程開發的理解錯誤的是: 答案:(C)A、發揮多核處理器的優勢,并發執行讓系統運行的更快、更流暢,用戶體驗更好B、多線程程序中,一個進程包含2個以上的線程(含2個)C、大量的線程降低代碼的可讀性,但不需要更多的內存空間D、當多個線程對同一個資源出現爭奪的時候要注意線程安全的問題 【C.開辟線程會占用內存空間】 3、實現一個生成Student實例對象的便利構造器的正確寫法是: 答案:(A)A、 + (id)studentWithName:(NSString *)newName andAge:(int)newAge {Student *stu = [[[Student alloc] initWithName:newName andAge:newAge] autorelease];return stu; }B、 - (id)studentWithName:(NSString *)newName andAge:(int)newAge {Student *stu = [[Student alloc] initWithName:newName andAge:newAge];return [stu autorelease]; }C、 - (void)studentWithName:(NSString *)newName andAge:(int)newAge {Student *stu = [[Student alloc] initWithName:newName andAge:newAge];return [stu autorelease]; }D、 + (void)studentWithName:(NSString *)newName andAge:(int)newAge {Student *stu = [[Student alloc] initWithName:newName andAge:newAge];return [stu autorelease]; } 【+號類方法,初始化方法都有返回值】 4、獲取tableview正在window上顯示的cell的indexPath方法是: 答案:(B)A、- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath;B、- (NSArray *)indexPathsForVisibleRows;C、- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;D、- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath; 【A.獲取cell CD互為取反】 5、下面關于深拷貝與淺拷貝理解正確的是: 答案:(A)A、深拷貝拷貝的是內容,淺拷貝拷貝的是指針。B、深拷貝和淺拷貝最大的區別就是子類對象的地址是否改變。C、深拷貝是對對象本身復制,但是不對對象的屬性進行復制。D、如果子類對象的地址改變那么就是深拷貝。 【B.有歧義 C.內存空間的地址一樣 ,指針的地址不一樣,但是不能作為唯一判斷標準 C.全部拷貝 D.不一定】 6、關于OC內存管理方面說法錯誤的是: 答案:(B)A、OC中的內存管理采用引用計數機制B、autorelease pool 是OC中一種自動的垃圾回收機制C、alloc、new或copy來創建一個對象,那么你必須調用release或autoreleaseD、OC的內存管理機制本質上還是C語言中的手動管理方式,只不過稍加了一些自動方法 【B.autorelease pool 是需要人為或者代碼干涉(ARC下需要系統幫助)】 7、以下的代碼會出現什么問題: @implementation Person - (void)setAge:(int)newAge {self.age = newAge; } @end 答案:(B)A、會造成循環引用B、會造成死循環C、會出現內存泄露D、會出現野指針 【B.set、get方法中不可以用self. 造成死循環】 8、對于UIScrollViewController,scrollView將開始降速時,執行的方法是: 答案:(D)A、- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;{ }B、- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;{ }C、- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;{ }D、- (void)scrollViewWillBeginDecelerating: 【A.手指開始拖拽 B.已經靜止 C.動畫已經停止】 9、以下哪個控件不是繼承于UIControl 答案:(D)A、UIButtonB、UITextFieldC、UISliderD、UITextView 【ABC是, D是繼承于UIScrollView】 10、下面對UIView、UIWindow和CALayer理解錯誤的是: 答案:(C)A、UIView繼承于UIResponderB、UIResponder繼承于NSObject,UIView可以響應用戶事件。C、UIResponder繼承與NSObject,CALayer繼承于NSObject,CALayer可以響應事件。D、UIView是用來顯示內容的,可以處理用戶事件,CALayer是用來繪制內容的,依賴與UIView來進行顯示 【C.CALayer不可以響應事件,只負責內容的呈現。】 11、以下關于視圖的frame與bounds的理解錯誤的是: 答案:(A)A、bounds是指這個view在window坐標系的坐標和大小B、frame指的是這個view在它superview的坐標系的坐標和大小C、frame和bounds是UIView中的兩個屬性(property)。D、一個是以自身左上角的店為原點的坐標系,一個是以屏幕左上角的點為原點的坐標系。 【A.自身的】 12、以下哪個方法在當程序將要退出時被調用,且通常在此方法里寫一些用來保存數據和一些退出前的清理工作。 答案:(B)A、- (void)applicationExitsOnSuspend:(UIApplication *)application{ }B、- (void)applicationDidEnterBackground:(UIApplication *)application{ }C、- (void)applicationWillTerminate:(UIApplication *)application{ }D、- (void)applicationDidFinishLaunching:(UIApplication *)application{ } 【B.當程序進行保存重要數據垃圾處理的時候都是在進入后臺以后做的】 13、很多內置類如UITableViewController的delegate屬性都是assign而不是retain,這是為了: 答案:(D)A、防止造成內存泄露B、防止出現野指針C、防止出現過度釋放D、防止循環引用 14、以下不屬于ios中實現多線程的方法是: 答案:(D)A、NSThreadB、NSOperationQueueC、Grand Central Dispatch(GCD)D、NSURLRequest 【D是網絡請求有關的】 15、對于UISearchBar,要實現實時搜索(即搜索內容實時發生變化時),會執行以下哪個方法: 答案:(C)A、- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar;B、- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar;C、- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{ }D、- (void)searchBarResultsListButtonClicked:(UISearchBar *)searchBar{ } 【searchBar searchBarController 兩個控件,多看一下代理方法 】 16、以下關于導航欄外觀屬性對應的解釋錯誤的是: 答案:(D)A、barStyle bar的樣式B、translucent bar的透明度C、backgroundImage bar的背景圖片D、barTintColor bar上控件的顏色 【barTintColor bar本身的前端顏色】 17、當程序從后臺將要重新回到前臺的時候,會先執行以下哪個方法: 答案:(B)A、- (void)applicationDidFinishLaunching:(UIApplication*)application{ }B、- (void)applicationWillEnterForeground:(UIApplication *)application{ }C、- (void)applicationDidBecomeActive:(UIApplication *)application{ }D、 - (void)applicationWillTerminate:(UIApplication *)application{ } 【A應用程序加載完畢,做一些配置工作 C進入前端變的活躍 D將要結束】 18、實現一個singleton的類,下面正確的是: 答案:(A)A、 static LOSingleton * shareInstance; + ( LOSingleton *)sharedInstance{@synchronized(self){if (shareInstance == nil) {shareInstance = [[self alloc] init];}}return shareInstance; } 【+類方法 返回值】B、 static LOSingleton * shareInstance; - ( LOSingleton *)sharedInstance{@synchronized(self){if (shareInstance == nil) {shareInstance = [[self alloc] init];}}return shareInstance; }C、 + (LOSingleton *) sharedInstance {LOSingleton *sharedInstance = nil ;static dispatch_once_t onceToken; dispatch_once (& onceToken, ^ { sharedInstance = [[self alloc] init];});return sharedInstance; } 【少了static】D、 - (LOSingleton *) sharedInstance {static LOSingleton *sharedInstance = nil ;static dispatch_once_t onceToken; dispatch_once (& onceToken, ^ { sharedInstance = [[self alloc] init];});return sharedInstance; } 19、當應用程序將要進入非活動狀態執行,在此期間,應用程序不接收消息或事件,比如來電話了,此時會先執行以下哪個方法: 答案:(D)A、- (void)applicationDidBecomeActive:(UIApplication *)application{ }B、- (void)applicationDidEnterBackground:(UIApplication *)application{ }C、- (void)applicationWillTerminate:(UIApplication *)application{ }D、- (void)applicationWillResignActive:(UIApplication *)application{ } 20、應用程序啟動順序正確的是: ①在UIApplication代理實例中重寫啟動方法,設置第一個ViewController ②程序入口main函數創建UIApplication實例和UIApplication代理實例 ③在第一個ViewController中添加控件,實現對應的程序界面。 答案:(B)A、①②③B、②①③C、①③②D、③①② 【考察應用程序啟動流程】 21、對于UICollectionViewController,實現定義每個元素的margin(邊緣 上-左-下-右) 的方法是: 答案:(B)A、 - (CGSize)collectionView:(UICollectionView *)collectionViewlayout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { return CGSizeMake(); }B、 - (UIEdgeInsets)collectionView:(UICollectionView *)collectionViewlayout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { return UIEdgeInsetsMake(); }C、 - (CGSize)collectionView:(UICollectionView *)collectionViewlayout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section { return CGSizeMake(); }D、 - (CGSize)collectionView:(UICollectionView *)collectionViewlayout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section { return CGSizeMake(); } 【請熟悉集合視圖的代理方法】 22、以下對于UIScrollView的屬性,說法錯誤的是: 答案:(D)A、bounces 控制控件遇到邊框是否反彈B、pagingEnabled 控制控件是否整頁翻動C、scrollEnabled 控制控件是否能滾動D、contentInset 滾動范圍大小 【contentset 滾動范圍大小 contentInset設置邊框】 23、對于UIScrollViewController,監控目前滾動的位置的屬性是: 答案:(A)A、contentOffSet 偏移量B、contentSize 滾動范圍C、contentInset 設置邊框(上坐下右)D、scrollIndicatorInsets 滾動條的邊框內距 24、在MVC框架中,M與C通訊,通常使用什么方式? 答案:(A)A、KVO與通知B、協議-代理C、類目D、屬性 【協議-代理是C和V之間】 25、對于UILabel,設置單詞折行方式的屬性是: 答案:(B)A、textAlignmentB、lineBreakModeC、numberOfLines 【設置為0,自動換行】D、sizeToFit 【自適應label】 ※ 判斷題(共5題,每題5分) 1、UISlider、UISwitch、UITextField這些類都繼承于UIControl這個類。 答案:(T)正確錯誤 2、[textField resignFirstResponder]; 表示讓文本輸入框成為第一響應者, 彈出鍵盤進入編輯模式。 答案:(F)正確錯誤 【取消第一響應者】 3、[self.view popToViewController: animated: YES];表示彈出一個視圖控制器,到指定視圖控制器上。 答案:(F)正確錯誤 【pop 出棧 返回】 4、numberOfTapsRequired這個方法能獲取到的是有幾只手指點擊。 答案:(F)正確錯誤 【numberOfTapsRequired 輕拍幾次、 numberOfTouchesRequired 獲取到的是有幾只手指點擊】 5、[segmentedControl titleForSegmentAtIndex: ]表示指定索引文字的選項。 答案:(T)正確錯誤

    ?

    [關閉]

    轉載于:https://www.cnblogs.com/xjy-123/p/5163170.html

    總結

    以上是生活随笔為你收集整理的iOS开发知识点总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。