面試題總結(jié)

首先申明:以下題目答案,僅是自己的總結(jié)缀踪,如有錯(cuò)誤居砖,還請(qǐng)多多指正。

一驴娃,談一下對(duì)遠(yuǎn)程推送(蘋果推送機(jī)制)的理解
對(duì)于蘋果推送機(jī)制奏候,可分為大致5步:
1,手機(jī)應(yīng)用程序向蘋果服務(wù)器(APNs)發(fā)送ssl請(qǐng)求唇敞,請(qǐng)求注冊(cè)推送通知的服務(wù)(即獲取推送證書)
2蔗草,蘋果服務(wù)器(APNs)分配給應(yīng)用程序一個(gè)token值,生成了推送證書
3疆柔,應(yīng)用程序把APNs分配的token值咒精,發(fā)給自己的后臺(tái)
4,后臺(tái)把要推送的消息和token值發(fā)送給APNs
5旷档,APNs根據(jù)這個(gè)token值和BuddleId查找應(yīng)用程序模叙,把消息推送出去
以下是我做的一個(gè)圖,幫助大家理解

捕獲.PNG

二鞋屈,類別和類擴(kuò)展的區(qū)別
類別和類擴(kuò)展都可以用來為類擴(kuò)充的功能范咨。
類別:可以為有源代碼的類和無源代碼的類擴(kuò)充功能,而且只能添加方法(方法必須實(shí)現(xiàn))厂庇,子類可以繼承渠啊,可直接訪問。
類擴(kuò)展:只能為有源代碼的類擴(kuò)充功能权旷,不僅可以擴(kuò)充實(shí)例變量替蛉,也可以擴(kuò)充方法。但是方法和實(shí)例變量都是私有的,子類可繼承躲查,但不可直接訪問它浅。

三,self.name = nil 的機(jī)制熙含,以及 [ _name release] 的區(qū)別
self.name = nil 是調(diào)用屬性生成的setter方法罚缕,會(huì)將原有的對(duì)象釋放release,然后將實(shí)例變量的值置為空怎静,以后在訪問該實(shí)例變量不會(huì)出現(xiàn)任何內(nèi)存問題邮弹。
[ _name release] 只是簡單的將對(duì)象的引用計(jì)數(shù)減1,而指針變量中依然存儲(chǔ)該對(duì)象的地址蚓聘,如果此時(shí)該對(duì)象空間被系統(tǒng)回收了腌乡,再訪問實(shí)例變量,就會(huì)產(chǎn)生野指針異常夜牡。

四与纽,數(shù)據(jù)持久化有哪幾種
1,plist文件塘装,通常用于儲(chǔ)存用戶設(shè)置急迂,也可用于儲(chǔ)存捆綁的信息
2,preference蹦肴,偏好設(shè)置僚碎,常用于保存少量數(shù)據(jù)
3,NSKeyedArchiver阴幌,歸檔勺阐,將內(nèi)存中的對(duì)象實(shí)例保存成binary到磁盤并且可以逆向這個(gè)過程用來保存用戶操作狀態(tài)等
4,sqlite3矛双,使用數(shù)據(jù)庫進(jìn)行儲(chǔ)存
5渊抽,CoreData,它提供了對(duì)象----關(guān)系映射(ORM)的功能议忽,既能將OC對(duì)象轉(zhuǎn)化成數(shù)據(jù)保存在sqlite數(shù)據(jù)庫文件中懒闷,也能將保存在數(shù)據(jù)庫中的數(shù)據(jù)還原成OC對(duì)象。

五栈幸,:比較GCD和NSOperation異同
GCD和NSOperation都是蘋果提供的多線程實(shí)現(xiàn)方案愤估。GCD是基于C語言的API,使用起來方便在開發(fā)中大量使用侦镇,但是取消和暫停線程比較麻煩,另外蘋果專門對(duì)GCD做了性能上的優(yōu)化织阅;而NSOperation是基于OC的壳繁,面向?qū)ο螅旨嫒軰VO,取消和暫停線程容易闹炉。
iOS首先引入的是NSOperation蒿赢,在iOS4.0之后又引入的GCD和NSOperationQueue。
NSOperation:
1渣触,NSOperation擁有很多函數(shù)羡棵。
2,在NSOperationQueue中可以建立各個(gè)NSOperation之間的依賴關(guān)系嗅钻。
3皂冰,兼容KVO,可以監(jiān)測(cè)NSOperation是否正在執(zhí)行isExecuted养篓,是否結(jié)束isFinished秃流,是否取消isCanceled
4,NSOperationQueue可以方便的管理并發(fā)柳弄,NSOperation之間的優(yōu)先級(jí)
GCD:
一般結(jié)合block使用舶胀。

六:UIViewController的生命周期方法有哪些
視圖創(chuàng)建:
alloc-------創(chuàng)建對(duì)象,分配內(nèi)存空間
init----------初始化對(duì)象
loadView---------從nib載入視圖碧注,(這一步不需要去干涉嚣伐,除非沒有使用xib創(chuàng)建)
ViewDidLoad-------載入完成,可以進(jìn)行自定義數(shù)據(jù)以及動(dòng)態(tài)創(chuàng)建其他控件
ViewWillAppear-------視圖將要出現(xiàn)在屏幕上
ViewDidAppear-------視圖已經(jīng)在屏幕上
視圖銷毀:
viewWillDisappear----------視圖將要從屏幕上移除
viewDidDisappear----------視圖已經(jīng)從屏幕上移除
dealloc----------視圖被銷毀

七萍丐,代理為什么使用weak
屬性關(guān)系:
ARC MRC
strong-------retain 強(qiáng)引用 引用計(jì)數(shù)+1
weak--------assign 弱引用 直接賦值
只要存在一個(gè)強(qiáng)引用轩端,對(duì)象就會(huì)一直存在,不會(huì)被銷毀碉纺。在ARC下代理用weak要比用assign好船万,因?yàn)橛脀eak,最后會(huì)走self.delegate = nil,而assign還可以指向被釋放掉的內(nèi)存骨田,導(dǎo)致程序崩潰耿导;retain引用計(jì)數(shù)+1,容易出現(xiàn)內(nèi)存錯(cuò)誤态贤。

八舱呻,CALayer和UIView關(guān)系是怎樣的
1,UIView可以相應(yīng)事件悠汽,Layer不可以
UIView繼承于UIReponder箱吕,在UIResponder中系統(tǒng)定義處理各種事件和事件傳遞的接口,CALayer直接繼承于NSObject柿冲,沒有相應(yīng)的處理事件接口茬高。
2,View中的frame假抄,bounds怎栽,center方法丽猬,UIView并沒有做什么,只是調(diào)用了底層的CALayer的方法熏瞄。
3脚祟,UIView主要是對(duì)內(nèi)容的顯示管理,CALayer是內(nèi)容的繪制强饮。
每個(gè)UIView內(nèi)部都有一個(gè)CALayer對(duì)內(nèi)容進(jìn)行繪制顯示由桌。

九,imageNamed:和 imageWithContentOfFile:區(qū)別
imageNamed采用緩存機(jī)制邮丰,會(huì)把讀到的圖片緩存起來行您,第二次讀到的時(shí)候直接加載,但是對(duì)象銷毀的時(shí)候柠座,內(nèi)存不能釋放邑雅。
imageWithContentOfFile:會(huì)把圖片加載到內(nèi)存中,占用的內(nèi)存比較小妈经,對(duì)象銷毀的時(shí)候淮野,內(nèi)存可以釋放,但是會(huì)重復(fù)加載吹泡。

十骤星,常見的OC數(shù)據(jù)類型有哪些,和C語言的有啥區(qū)別
OC:NSString爆哑,NSNumber洞难,NSArray鸵熟,NSMutableArray验夯,NSData等都是class丽旅,創(chuàng)建之后便是對(duì)象乏屯。
C:int,一定字節(jié)的內(nèi)存空間栋烤,用來存放數(shù)值

十一推掸,什么時(shí)候用delegate滔岳,什么時(shí)候用Notifaction
delegate針對(duì)一對(duì)一關(guān)系屯换,并且reciever可以返回值給sender编丘,所以delegate用于sender想要返回值的時(shí)候。
notifaction針對(duì)一對(duì)一或一對(duì)多彤悔,reciever無法返回值給sender嘉抓,notifaction用于通知多個(gè)對(duì)象的時(shí)候。

十二晕窑,屬性意義
readwrite:讀寫抑片,編譯器會(huì)自動(dòng)合成getter,setter方法
readonly:只讀杨赤,編譯器會(huì)自動(dòng)合成getter方法
assign(weak):弱引用敞斋,setter方法直接賦值级遭,一般用于基本數(shù)據(jù)類型和結(jié)構(gòu)體類型
retain(strong):強(qiáng)引用,引用計(jì)數(shù)加1渺尘,一般用于對(duì)象類型
copy:與retain一樣,會(huì)將對(duì)象復(fù)制一份说敏,引用計(jì)數(shù)會(huì)加1
atomic:原子屬性鸥跟,保證同一時(shí)刻只有一條線程修改,訪問對(duì)應(yīng)的實(shí)例變量
noatomic:非原子屬性盔沫,多線程并發(fā)訪問提高性能

十三医咨,什么時(shí)候用NSMutableArray,什么時(shí)候用NSArray
NSArray:靜態(tài)的架诞,不可變拟淮,一旦初始化,不能修改谴忧,可以讀取
NSMutableArray:動(dòng)態(tài)的很泊,可變,可以修改沾谓,可增加內(nèi)容

十四委造,KVO,NSNotification和代理均驶,KVC的區(qū)別
KVO:觀察者模式昏兆,被觀察者直接把消息發(fā)給觀察者,是對(duì)象之間的交互妇穴。
NSNotification:觀察者模式爬虱,被觀察者把消息發(fā)給通知中心,通知中心再把消息發(fā)給觀察者腾它,并不直接交互跑筝。
代理:代理只能一對(duì)一,一個(gè)對(duì)象只有一個(gè)代理
KVO和通知:可以一對(duì)多携狭,一個(gè)通知可以發(fā)給多個(gè)觀察者
KVC:鍵值編碼继蜡,一種間接訪問對(duì)象的屬性使用字符串來標(biāo)識(shí)屬性

十五,寫出NSTimer使用時(shí)注意事項(xiàng)
1逛腿,timer在不需要時(shí)稀并,一定要調(diào)用invalidate方法使他失效,否則不能釋放
timer要想銷毀单默,必須先將他置為失效碘举,否則timer會(huì)一直占用內(nèi)存不能釋放,造成內(nèi)存泄漏搁廓,且該內(nèi)存泄漏不能用xcode引颈,instruments檢測(cè)出來耕皮。
2,timer使用的時(shí)候需要加到runloop中

十六蝙场,列舉熟悉的cocoa touch框架
Core Audio :強(qiáng)大的音頻功能
CoreData :數(shù)據(jù)庫管理
cocoa touch一小部分框架:
音視頻:core Audio 凌停,Media library ,AV Foundation
數(shù)據(jù)管理:coreData售滤, sqlite
圖形動(dòng)畫:core Animation罚拟,OpenGl,Quartz 2D
網(wǎng)絡(luò)應(yīng)用:webKit完箩,BSD, sockets
用戶應(yīng)用:Address Book 赐俗,core Location ,Mapkit 弊知,storeKit

十七阻逮,iOS內(nèi)存管理
誰申請(qǐng),誰釋放
內(nèi)存管理主要要避免“過早釋放”和“內(nèi)存泄漏”秩彤。對(duì)于“過早釋放”叔扼,要注意使用@property設(shè)置特性時(shí),一定要用對(duì)特性關(guān)鍵字漫雷;對(duì)于“內(nèi)存泄漏”币励,申請(qǐng)了記得釋放。
alloc和new生成的對(duì)象需要手動(dòng)釋放珊拼。
設(shè)置@property正確的屬性食呻,retain在合適的地方釋放。

十八澎现,項(xiàng)目目錄結(jié)構(gòu)
一個(gè)合理的目錄結(jié)構(gòu)首先應(yīng)該是清晰的仅胞,讓人一眼看上去就能大概了解目錄的職責(zé),且容易應(yīng)對(duì)新的變化剑辫。

目錄結(jié)構(gòu)
AppDelegate 這個(gè)目錄下放的是AppDelegate.h(.m)文件干旧,是整個(gè)應(yīng)用的入口文件,單獨(dú)拿出來妹蔽。

Models 這個(gè)目錄下放一些與數(shù)據(jù)相關(guān)的Model文件BaseModel.h BaseModel.m…….

View(視圖):
Controller(控制器):
Expand(拓展):
放一些工具類(Tool),宏
網(wǎng)絡(luò)(Network),
分類(Category),
數(shù)據(jù)庫(DataBase)等
Resource(資源):plist文件或者圖片之類
.pch:文件放的是一些宏定義一些接口之類

十九椎眯,常用的第三方框架
MBProgressHUD提示效果 支持各種狀態(tài)加載的提示效果,以及帶進(jìn)度的提示效果胳岂。
SDWebImage圖片異步加載及緩存SDWebImage用于異步下載網(wǎng)絡(luò)上的圖片编整,并支持對(duì)圖片的緩存等。
XMPP 實(shí)時(shí)聊天乳丰,XMPP協(xié)議算是很成熟的方案了掌测。使用XMPPFramework可以直接和OpenFire服務(wù)器打交道。
AFNetworking 網(wǎng)絡(luò)請(qǐng)求
FMDB 數(shù)據(jù)庫
Masonry 純代碼添加約束

二十产园,CoreData:
Core Data是iOS5之后才出現(xiàn)的一個(gè)框架汞斧,它提供了對(duì)象-關(guān)系映射(ORM)的功能夜郁,即能夠?qū)C對(duì)象轉(zhuǎn)化成數(shù)據(jù),保存在SQLite數(shù)據(jù)庫文件中粘勒,也能夠?qū)⒈4嬖跀?shù)據(jù)庫中的數(shù)據(jù)還原成OC對(duì)象竞端。在此數(shù)據(jù)操作期間,我們不需要編寫任何SQL語句庙睡,
1.Core Data 是數(shù)據(jù)持久化存儲(chǔ)的最佳方式
2.數(shù)據(jù)最終的存儲(chǔ)類型可以是:SQLite數(shù)據(jù)庫婶熬,XML,二進(jìn)制埃撵,內(nèi)存里,或自定義數(shù)據(jù)類型
在Mac OS X 10.5Leopard及以后的版本中虽另,開發(fā)者也可以通過繼承NSPersistentStore類以創(chuàng)建自定義的存儲(chǔ)格式
3.好處:能夠合理管理內(nèi)存暂刘,避免使用sql的麻煩,高效
4.構(gòu)成:
(1)NSManagedObjectContext(被管理的數(shù)據(jù)上下文)操作實(shí)際內(nèi)容(操作持久層)
作用:插入數(shù)據(jù)捂刺,查詢數(shù)據(jù)谣拣,刪除數(shù)據(jù)
(2)NSManagedObjectModel(被管理的數(shù)據(jù)模型)數(shù)據(jù)庫所有表格或數(shù)據(jù)結(jié)構(gòu),包含各實(shí)體的定義信息
作用:添加實(shí)體的屬性族展,建立屬性之間的關(guān)系
操作方法:視圖編輯器森缠,或代碼
(3)NSPersistentStoreCoordinator(持久化存儲(chǔ)助理)相當(dāng)于數(shù)據(jù)庫的連接器
作用:設(shè)置數(shù)據(jù)存儲(chǔ)的名字,位置仪缸,存儲(chǔ)方式贵涵,和存儲(chǔ)時(shí)機(jī)
(4)NSManagedObject(被管理的數(shù)據(jù)記錄) 相當(dāng)于數(shù)據(jù)庫中的表格記錄
(5)NSFetchRequest(獲取數(shù)據(jù)的請(qǐng)求)相當(dāng)于查詢語句
(6)NSEntityDescription(實(shí)體結(jié)構(gòu))相當(dāng)于表格結(jié)構(gòu)

二十一,OC優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
1.Category是非常實(shí)用的擴(kuò)展機(jī)制恰画,可以很方便的為一個(gè)已有的類添加屬性或者方法宾茂,而不需要笨拙的去繼承。
2.運(yùn)行時(shí)多態(tài)的概念拴还,可以讓一個(gè)類的對(duì)象動(dòng)態(tài)的以其他類行為去執(zhí)行(OC中多了很多運(yùn)行時(shí)態(tài)的機(jī)制跨晴,其中id的特殊用途,可以通過id類型的變量片林,調(diào)用不同類的同名函數(shù)端盆,即使這些類沒有任何關(guān)系)。
3.ARC不用多講了吧
4.OC中成員變量也有三種訪問權(quán)限费封,@public,@protected,@private焕妙。但默認(rèn)的是@protected,而C++中默認(rèn)是private
5.OC中成員函數(shù)只有兩種弓摘,一種是實(shí)例函數(shù)访敌,一種是類函數(shù)。實(shí)例函數(shù)就是
C++中的Public函數(shù)衣盾,類函數(shù)就是public中的static函數(shù)寺旺。
6.OC中成員函數(shù)如果要接受多個(gè)參數(shù)爷抓,則需要每個(gè)參數(shù)前加冒號(hào)
7,OC還有protocol概念, 通過@protocol-@end來聲明protocol。類中通過<protocol1,protocol2,...>來表示支持某個(gè)協(xié)議阻塑。如@interface A : Object < NSCopying, NSTransform >-@end表明類A繼承與Object類蓝撇,并支持兩個(gè)協(xié)議(NSCopying, NSTransform )。
8.由于都是C衍生出的面向?qū)ο蟮恼Z言所以可以和C++混合編碼陈莽。(百度地圖API
就用到了)

缺點(diǎn):
1.不支持多重繼承

二十二渤昌,MVC設(shè)計(jì)模式是什么?你還熟悉什么模式走搁?
M:model独柑,負(fù)責(zé)儲(chǔ)存,定義私植,操作數(shù)據(jù)
V:view忌栅,展示數(shù)據(jù)給用戶,和用戶交互
C:controller曲稼,Model和View之間的協(xié)調(diào)者索绪,把model中的數(shù)據(jù)拿過來給View用。

代理模式:工廠生產(chǎn)了產(chǎn)品不直接賣贫悄,而是找代理商賣產(chǎn)品

單例模式:不通過alloc創(chuàng)建對(duì)象瑞驱,通過靜態(tài)方法返回這個(gè)類的對(duì)象,全局唯一窄坦。

觀察者模式:一個(gè)對(duì)象改變唤反,所有的觀察者都會(huì)做出反應(yīng)。

工廠模式:工廠加工產(chǎn)品

二十三鸭津,深拷貝拴袭,淺拷貝
淺拷貝:只復(fù)制對(duì)象的指針,(如人的影子)
深拷貝:復(fù)制對(duì)象(如人的克隆體)
以對(duì)象A為例:
淺拷貝后曙博,只是復(fù)制了A的指針拥刻,出現(xiàn)一個(gè)A_淺 ,指向同一塊內(nèi)存資源父泳,修改A_淺般哼,A也會(huì)改變。
深拷貝后惠窄,復(fù)制了對(duì)象蒸眠,出現(xiàn)一個(gè)A_深,內(nèi)存中就有了2個(gè)獨(dú)立的對(duì)象杆融,一個(gè)A楞卡,一個(gè)A_深,A_深改變,A不會(huì)改變蒋腮。

二十四淘捡,#import,#include池摧,@class焦除,#import<> ,#import""

import:OC中導(dǎo)入頭文件的關(guān)鍵字,只會(huì)導(dǎo)入一次作彤,不會(huì)重復(fù)導(dǎo)入

            #import<>導(dǎo)入系統(tǒng)的膘魄,#import“”導(dǎo)入非系統(tǒng)的

include:C語言導(dǎo)入頭文件的關(guān)鍵詞,會(huì)重復(fù)導(dǎo)入

@class:聲明某個(gè)類竭讳,執(zhí)行時(shí)才去查看類的實(shí)現(xiàn)文件创葡,解決頭文件的相互包含

二十五,NSString *obj = [[NSData alloc] init];編譯绢慢,運(yùn)行時(shí)分別是什么樣的類型灿渴。
編譯是NSString,運(yùn)行是NSData

二十六呐芥,OC是動(dòng)態(tài)運(yùn)行時(shí)語言是什么意思
多態(tài),主要將數(shù)據(jù)類型的確定由編譯時(shí)推遲到運(yùn)行時(shí)奋岁。
運(yùn)行時(shí)機(jī)制使我們?cè)谶\(yùn)行時(shí)才去決定一個(gè)對(duì)象的類別思瘟,以及調(diào)用該類別對(duì)象的指定方法。
多態(tài):不同對(duì)象以自己的方式響應(yīng)同一個(gè)消息闻伶。因此滨攻,可以說運(yùn)行時(shí)機(jī)制是多態(tài)的基礎(chǔ)。

二十七蓝翰,frame和bounds有啥不同
frame光绕,參照的是父視圖,bounds畜份,參照的是自身

二十八诞帐,線程和進(jìn)程區(qū)別和聯(lián)系
1,線程和進(jìn)程都是操作系統(tǒng)運(yùn)行的基本單元爆雹,系統(tǒng)利用該基本單元實(shí)現(xiàn)并發(fā)性停蕉。
2,線程和進(jìn)程的主要差別在于他們不同的操作系統(tǒng)資源管理方式钙态。
進(jìn)程:有獨(dú)立的地址空間慧起,一個(gè)進(jìn)程崩潰,不會(huì)對(duì)其他進(jìn)程產(chǎn)生影響册倒。
線程:是進(jìn)程中不同的執(zhí)行路徑蚓挤,有自己的堆棧和局部變量,但線程之間沒有單獨(dú)的地址空間。一個(gè)線程死掉等于整個(gè)進(jìn)程死掉灿意。
3估灿,每個(gè)進(jìn)程之間是相互獨(dú)立的,1個(gè)進(jìn)程要想執(zhí)行任務(wù)脾歧,必須得有線程(每個(gè)進(jìn)程至少有一個(gè)線程)
線程-------》工人 進(jìn)程-------》車間

二十九甲捏,socket與http的區(qū)別
http:客戶端主動(dòng)向服務(wù)器發(fā)起http請(qǐng)求,一次連接之后立馬斷開
socket:客戶端和服務(wù)器使用“套接字”進(jìn)行連接鞭执,雙方都可以主動(dòng)發(fā)送數(shù)據(jù)司顿,一次連接之后可以保持聯(lián)通。

三十兄纺,block
1大溜,block是對(duì)象,他封裝了一段代碼估脆,這段代碼可以在任何時(shí)候執(zhí)行钦奋,
2,block可以作為函數(shù)或者函數(shù)的返回值經(jīng)常用于回調(diào)及傳值疙赠,而其本身又可以帶輸入?yún)?shù)或者返回值付材,他和傳統(tǒng)的函數(shù)指針類似,但有區(qū)別:block是inline的圃阳,并且他對(duì)局部變量是只讀的厌衔。
3,block是存在于棧中的捍岳,定義block是用copy富寿,從棧中copy到堆中。MRC下锣夹,用_ block,ARC下页徐,用 _weak .

三十一,堆和棧
1)管理方式
棧:編譯器自動(dòng)管理
堆:由程序員釋放
2)申請(qǐng)大幸肌:
棧:向低地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu)变勇,一塊連續(xù)的內(nèi)存區(qū)域。
堆:向高地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu)贴唇,不連續(xù)的內(nèi)存區(qū)域贰锁。
3)碎片:
棧:沒有
堆:不連續(xù),有大量的碎片
4)分配方式:
棧:靜態(tài)滤蝠,動(dòng)態(tài)兩種分配方式
堆:只有動(dòng)態(tài)分配
5)分配效率:
棧:棧是系統(tǒng)提供的豌熄,效率高
堆:C++函數(shù)庫提供的,效率低

三十二,一個(gè)tableView是否可以關(guān)聯(lián)兩個(gè)不同的數(shù)據(jù)源?你會(huì)怎么處理?
答:首先我們從代碼來看物咳,數(shù)據(jù)源如何關(guān)聯(lián)上的锣险,其實(shí)是在數(shù)據(jù)源關(guān)聯(lián)的代理方法里實(shí)現(xiàn)的蹄皱。
因此我們并不關(guān)心如何去關(guān)聯(lián)他,他怎么關(guān)聯(lián)上芯肤,方法只是讓我返回根據(jù)自己的需要去設(shè)置如相關(guān)的數(shù)據(jù)源巷折。
因此,我覺得可以設(shè)置多個(gè)數(shù)據(jù)源啊崖咨,但是有個(gè)問題是锻拘,你這是想干嘛呢?想讓列表如何顯示,不同的數(shù)據(jù)源分區(qū)塊顯示?

三十三,xib和stroyboard的區(qū)別:
一個(gè)工程中可以有多個(gè)xib文件击蹲,一個(gè)xib文件對(duì)應(yīng)著一個(gè)視圖控制器和多個(gè)視圖署拟。而使用storyboard時(shí),一個(gè)工程只需要一個(gè)主storyboard文件就可以了歌豺。因此推穷,在包含多個(gè)視圖控制器的情況下,采用storyboard管理比較方便类咧,而且storyboard還可以描述界面之間的導(dǎo)航關(guān)系馒铃。

三十四,關(guān)于自動(dòng)釋放池是什么?怎么工作?
當(dāng)您向一個(gè)對(duì)象發(fā)送一個(gè)autorelease消息時(shí),Cocoa就會(huì)將該對(duì)象的一個(gè)引用放入到最新的自動(dòng)釋放池痕惋。它仍然是個(gè)正當(dāng)?shù)膶?duì)象区宇,因此自動(dòng)釋放池定義的作用域內(nèi)的其它對(duì)象可以向它發(fā)送消息。當(dāng)程序執(zhí)行到作用域結(jié)束的位置時(shí)值戳,自動(dòng)釋放池就會(huì)被釋放议谷,池中的所有對(duì)象也就被釋放。

  1. ojc-c是通過一種"referring counting"(引用計(jì)數(shù))的方式來管理內(nèi)存的,對(duì)象在開始分配內(nèi)存(alloc)的時(shí)候引用計(jì)數(shù)為一,以后每當(dāng)碰到有copy,retain的時(shí)候引用計(jì)數(shù)都會(huì)加一,每當(dāng)碰到release和autorelease的時(shí)候引用計(jì)數(shù)就會(huì)減一,如果此對(duì)象的計(jì)數(shù)變?yōu)榱?,就會(huì)被系統(tǒng)銷毀.

  2. NSAutoreleasePool就是用來做引用計(jì)數(shù)的管理工作的,這個(gè)東西一般不用你管的.

  3. autorelease和release沒什么區(qū)別,只是引用計(jì)數(shù)減一的時(shí)機(jī)不同而已,autorelease會(huì)在對(duì)象的使用真正結(jié)束的時(shí)候才做引用計(jì)數(shù)減一.

三十五,app升級(jí)要改變數(shù)據(jù)庫結(jié)構(gòu)怎么辦?
數(shù)據(jù)庫升級(jí)流程
1.每一次運(yùn)行程序述寡,判斷數(shù)據(jù)庫是否存在柿隙。如果不存在叶洞,創(chuàng)建數(shù)據(jù)庫鲫凶。如果存在,進(jìn)行其他后續(xù)處理衩辟。
2.第一次安裝app螟炫,創(chuàng)建數(shù)據(jù)庫,并將版本號(hào)存入數(shù)據(jù)庫中艺晴。同時(shí)保存一個(gè)當(dāng)前版本號(hào)加1的字段到數(shù)據(jù)庫中昼钻。
3.更新app,從數(shù)據(jù)庫中讀取到上一次保存的版本號(hào)字段封寞。比如要升級(jí)為2然评,會(huì)直接從case2開始執(zhí)行。修改完數(shù)據(jù)結(jié)構(gòu)后狈究,再一次將版本號(hào)字段存入數(shù)據(jù)庫碗淌。
4.每一次數(shù)據(jù)庫結(jié)構(gòu)有更新,直接在后面加case語句即可。
三十六,沙盒目錄結(jié)構(gòu)
/Documents/ 保存應(yīng)用程序的重要數(shù)據(jù)文件和用戶數(shù)據(jù)文件等亿眠。iTunes 同步時(shí)會(huì)備份該目錄碎罚。
/Library/Caches 保存應(yīng)用程序使用時(shí)產(chǎn)生的支持文件和緩存文件,還有日志文件最好也放在這個(gè)目錄纳像。iTunes 同步時(shí)不會(huì)備份該目錄荆烈。
/Library/Preferences 保存應(yīng)用程序的偏好設(shè)置文件(使用 NSUserDefaults 類設(shè)置時(shí)創(chuàng)建,不應(yīng)該手動(dòng)創(chuàng)建)竟趾。
/tmp/ 保存應(yīng)用運(yùn)行時(shí)所需要的臨時(shí)數(shù)據(jù)憔购,iphone 重啟時(shí),會(huì)清除該目錄下所有文件潭兽。


三十七,單例模式
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
if (_instance == nil) {
_instance = [super allocWithZone:zone];
}
});
return _instance;
}
//全局變量
static id _instance = nil;
//單例方法
+(instancetype)sharedSingleton{
return [[self alloc] init];
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末倦始,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子山卦,更是在濱河造成了極大的恐慌鞋邑,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件账蓉,死亡現(xiàn)場(chǎng)離奇詭異枚碗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)铸本,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門肮雨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人箱玷,你說我怎么就攤上這事怨规。” “怎么了锡足?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵波丰,是天一觀的道長。 經(jīng)常有香客問我舶得,道長掰烟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任沐批,我火速辦了婚禮纫骑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘九孩。我一直安慰自己先馆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布躺彬。 她就那樣靜靜地躺著煤墙,像睡著了一般缤底。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上番捂,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天个唧,我揣著相機(jī)與錄音,去河邊找鬼设预。 笑死徙歼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鳖枕。 我是一名探鬼主播魄梯,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼宾符!你這毒婦竟也來了酿秸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤魏烫,失蹤者是張志新(化名)和其女友劉穎辣苏,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哄褒,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡稀蟋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呐赡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片退客。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖链嘀,靈堂內(nèi)的尸體忽然破棺而出萌狂,到底是詐尸還是另有隱情,我是刑警寧澤怀泊,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布茫藏,位于F島的核電站,受9級(jí)特大地震影響包个,放射性物質(zhì)發(fā)生泄漏刷允。R本人自食惡果不足惜冤留,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一碧囊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纤怒,春花似錦糯而、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽像寒。三九已至,卻和暖如春瓜贾,著一層夾襖步出監(jiān)牢的瞬間诺祸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國打工祭芦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留筷笨,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓龟劲,卻偏偏與公主長得像胃夏,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子昌跌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 把網(wǎng)上的一些結(jié)合自己面試時(shí)遇到的面試題總結(jié)了一下仰禀,以后有新的還會(huì)再加進(jìn)來。 1. OC 的理解與特性 OC 作為一...
    AlaricMurray閱讀 2,564評(píng)論 0 20
  • 1.objective-c常見面試題:1蚕愤、**OC **語言的基本特點(diǎn)OC 語言是 C 語言的一個(gè)超集,只是在 C...
    LZM輪回閱讀 964評(píng)論 0 3
  • 1答恶、#import跟 #include 有什么區(qū)別?@class有什么作用萍诱?#import<> 跟 #import...
    SuAdrenine閱讀 545評(píng)論 0 5
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,140評(píng)論 30 470
  • 當(dāng)我靜下心亥宿,發(fā)現(xiàn)了好多被自己忽略的細(xì)節(jié),很多砂沛,很多烫扼。 那天晚上,窗外無節(jié)操的兩人碍庵,是你映企,慕翔,還有那個(gè)被自己打傷的...
    千幻舞閱讀 178評(píng)論 0 0