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