在高中校園的樓層仰望天空,疏忽了身后的你
走進大學明知虛度光陰,卻執(zhí)意要忘掉你
現(xiàn)在,我來到你的城市,想要把你找尋
才發(fā)現(xiàn)你早已不需要我
也許,孤單的不只是漸晚城市
還有不知不覺長大的我們
三行情詩——詩專題詩人與你相約情詩盛會1. 君兮 我把真心入了青梅酒, 用深情釀了七個春秋, 你可愿,陪我醉這一生。 2. 楊又揚 你曾讓風告訴我 說你愛我 風都著了火 3. 程北 你才不是一座孤島 因為還有一尾...
一、什么是CocoaPods? 前言: 思考如何引入一個第三方框架。 例如: 百度地圖SDK、友盟、ShareSDK、 信鴿推送等。從github或某處下載第三方SDK工程中...
runtime會讓程序定義轉(zhuǎn)發(fā)函數(shù)(forwarding function)當message send找不到相應的對象,轉(zhuǎn)發(fā)函數(shù)就會被調(diào)用
iOS 面試題(一)基礎題:1.在oc中如何實現(xiàn)深度拷貝2.請描述什么是delegate、block、NSNotification,他們有什么作用 3.請寫出一個線程安全的單例模式 4.解釋屬性...
中級題目(僅供參考:我也是個渣渣
,,原諒我只是新手,答案不太齊全,大概看一下就行了 )
16.測試發(fā)現(xiàn)橫豎屏切換的時候,系統(tǒng)會響應一些函數(shù),其中 viewWillLayoutSubviews就是之一。
17.串行/并行
18
19>安全與不安全
20搜索二叉樹,詳見初級題目12題
21.需要變化的類
22.一對多,同步
23.KVO:鍵值監(jiān)聽,觀察某一屬性的方法
KVC:鍵值編碼,是一種間接訪問對象的屬性
24.UIControl UIVIew
25異步,多線程
26.
27.數(shù)據(jù)庫遷移
28.管理方式:對于棧來說,有編譯自動管理,無需我們手動管理;對于堆來說,釋放工作由程序員控制,最容易產(chǎn)生內(nèi)存泄露
申請大小:能從棧中獲取空間大小,堆是向高地址擴展的數(shù)據(jù)結(jié)構(gòu),是不連續(xù)的內(nèi)存區(qū)域.堆得大小受限于計算機系統(tǒng)中有效地虛擬內(nèi)存.由此可見,堆獲得的空間比較靈活,也比較大
碎片問題:對于堆來講,頻繁的new/delete勢必會造成內(nèi)存空間的不連續(xù),從而造成大量的碎片,使程序效率降低,對于棧來講,則不會造成這個問題,因為棧是先進后出的隊列,他們則是一一對應,以至于永遠不可能有一個內(nèi)存塊從棧中間彈出
分配方式:堆是動態(tài)分配的,棧有兩種分配方式;靜態(tài)和動態(tài).靜態(tài)分配是由編譯器完成的:比如局部變量的分配.動態(tài)分是由alloc函數(shù)進攻下那個分配的,但是棧的動態(tài)分配和棧是不同的,它的動態(tài)分配是由編譯器進行釋放的,無需我們手工實現(xiàn);
分配效率:棧是由機器系統(tǒng)提供的數(shù)據(jù)結(jié)構(gòu),計算機會在底層對棧提供支持,分配專門的寄存器存放棧的地址,壓棧出棧都有專門的執(zhí)行命令,這就決定棧的效率比較高,堆則是C/C++數(shù)據(jù)庫提供,機制很復雜.
值類型在棧上分配,引用類型在堆上分配
29.只需要在單層block中使用,嵌套時第二層需要用strong,即self
30.間歇性運行內(nèi)存
31.你猜
32.runLoop就是一個線程里面的運行的循環(huán)
NSThread *thread1 = [[NSThread alloc] initWithTarget:self selector:@selector(playerThread: ) object:nil];
[thread start];
//如果要利用NSOperation,原理類似。只需要加入到queue里面去就好了。。queue會在合適的時機調(diào)用方法,下面代碼作為參考。
- (void) playerThread: (void*)unused
{
audioRunLoop = CFRunLoopGetCurrent();//子線程的runloop引用
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];//子線程的
run loop [self initPlayer]; CFRunLoopRun(); //運行子線程的
run loop,這里就會停住了。 [pool release];
}
// 實現(xiàn)一個timer,用于檢查子線程的工作狀態(tài),并在合適的時候做任務切換?;蛘呤呛线m的時候停掉自己的
run loop-(void) initPlayer {
// 在這里你可以初始化一個工作類,比如聲音或者視頻播放
NSTimer *stateChange = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:
@selector(checkStatuserInfo:nil repeats:YES];
}
-(void) checkState:(NSTimer*) timer
{
if(需要退出自線程了) {
//釋放子線程里面的資源
CFRunLoopStop( CFRunLoopGetCurrent());//結(jié)束子線程任務
}
33.分為3中,@Protect @privite @public外部可以訪問
34.。runtime會檢測注冊列表里是否存在對應的函數(shù),類型是否正確,最后確定下來正確的函數(shù)地址,再進行保存寄存器狀態(tài),壓棧,函數(shù)調(diào)用等等實際的操作
iOS 面試題(一)基礎題:1.在oc中如何實現(xiàn)深度拷貝2.請描述什么是delegate、block、NSNotification,他們有什么作用 3.請寫出一個線程安全的單例模式 4.解釋屬性...
中級題目(僅供參考:我也是個渣渣
)
1.arc就是編譯器自動處理內(nèi)存管理引用計數(shù)的代碼
2.weak和assign都是引用計算不變,assign的變量在釋放后并不設置為nil(和weak不同),當你再去引用時候就會發(fā)生錯誤
block 會對對象強引用,引起retain-cycle,需要使用weak
3.不一樣,在非ARC下需要retain,否則會產(chǎn)生野指針
4.凡是都是相對的,沒有絕對的.(一個在寫,一個在讀隨機值,安全性能可能就會出現(xiàn)問題)最好用lock
5.retain cycle會造成內(nèi)存溢出(曾近自己寫過一個下拉刷新,那個view和vc互相強引用,導致了沒釋放。view回去調(diào)用vc的scrollview的content offset。
6.load是只要類所在的文件被引用就會被調(diào)用,而initialize是類或者其子類的第一個方法被調(diào)用前調(diào)用
7.發(fā)送消息最終會被轉(zhuǎn)化為函數(shù)調(diào)用,避免動態(tài)綁定的唯一辦法就是取得方法的地址,并且直接象函數(shù)調(diào)用一樣調(diào)用它。
8.Method swizzling 指的是改變一個已經(jīng)存在的選擇器對應的實現(xiàn)過程
9.CALayer用來繪制內(nèi)容,對內(nèi)容進行動畫處理,依賴UIview來顯示 UIView:用來系那是內(nèi)容,可以處理用戶事件
10.可以添加陰影和邊框
11.重繪機制,可進行繪圖,但是需要大量的坐標,詳細自己搜
12.異步加載,重用機制
13.尋找圖片,先在緩存中找,沒有的話在本地文件夾找,最后用網(wǎng)絡加載
14..Instruments是一個強大的工具,用來收集關于一個或者多個系統(tǒng)進程的行為和性能,并且能跟蹤隨時間產(chǎn)生的數(shù)據(jù) time profile時間分析工具用來檢測應用CPU的使用情況.
15.每次訪問UIViewController的view(比如controller.view、self.view)而且view為nil,loadView方法就會被調(diào)用
iOS 面試題(一)基礎題:1.在oc中如何實現(xiàn)深度拷貝2.請描述什么是delegate、block、NSNotification,他們有什么作用 3.請寫出一個線程安全的單例模式 4.解釋屬性...
新特性簡介:當?shù)谝淮蜗螺d打開程序后,會出現(xiàn)一組滑動圖片,然后才打開程序(只有滑動到最后一個頁面才能打開),以后打開軟件不會再出現(xiàn),更新版本后,仍然會出現(xiàn)滑動圖片組. 在app...
新特性簡介:當?shù)谝淮蜗螺d打開程序后,會出現(xiàn)一組滑動圖片,然后才打開程序(只有滑動到最后一個頁面才能打開),以后打開軟件不會再出現(xiàn),更新版本后,仍然會出現(xiàn)滑動圖片組. 在app...