IOS面試(基礎(chǔ)問(wèn)題)

1、簡(jiǎn)述OC中內(nèi)存管理機(jī)制。與retain配對(duì)使用的方法是dealloc還是release吉捶,為什么?需要與alloc配對(duì)使用的方法是dealloc還是release皆尔,為什么呐舔?readwrite,readonly床佳,assign滋早,retain,copy砌们,nonatomic 杆麸、atomic、strong浪感、weak屬性的作用昔头?

OC使用了一種叫做引用計(jì)數(shù)的機(jī)制來(lái)管理對(duì)象,如果對(duì)一個(gè)對(duì)象使用了alloc影兽、[Mutable]copy揭斧,retain,那么你必須使用相應(yīng)的realease或者autorelease峻堰。也可以理解為自己生成的對(duì)象讹开,自己持有。非自己生成的對(duì)象捐名,自己也能持有旦万。不在需要自己持有的對(duì)象時(shí)釋放。非自己持有的對(duì)象無(wú)法釋放镶蹋。生成并持有對(duì)象成艘,持有對(duì)象,釋放對(duì)象,廢棄對(duì)象贺归。readwrite(默認(rèn)):可讀可寫还惠,表示既有g(shù)etter方法接奈,也有setter方法汇歹。readonly:表示只有g(shù)etter方法比原,沒有setter方法。nonatomic:不考慮線程安全婶熬。atomic(默認(rèn)):線程操作安全剑勾。strong(默認(rèn)):ARC下和MRC下retain一樣光坝,weak(ARC下):和(MRC下)assign類似,區(qū)別是當(dāng)weak指向的內(nèi)存釋放掉后自動(dòng)置為nil甥材,防止野指針盯另。unsafe_unretained聲明一個(gè)若引用,但不會(huì)自動(dòng)置為nil洲赵,可能會(huì)出現(xiàn)野指針鸳惯。線程安全下的setter和getter方法:-(NSString *)value{@synchronized(self){return [[_value retain] autorelease];}}-(void)setValue:(NSString *)aValue{@synchronized(self){[aValue retain];[_value release];_value = aValue;}}

2、類變量的@protected ,@private,@public,@package叠萍,聲明各有什么含義芝发?上面的幾個(gè)聲明表明的時(shí)類成員的作用域,

@private作用范圍只能在自身類(外界既不可訪問(wèn)苛谷,又不能繼承)辅鲸;@protected作用范圍在自身類和子類,如果什么都不加修飾腹殿,默認(rèn)是@protected(外界不可訪問(wèn)独悴,但是可以繼承);@public作用范圍最大锣尉,可以在任何地方被訪問(wèn)(外界即可訪問(wèn)刻炒,又可以繼承);@package作用范圍在某個(gè)框架內(nèi)

3自沧、線程是什么坟奥?進(jìn)程是什么?二者有什么區(qū)別和聯(lián)系拇厢?線程是CPU獨(dú)立運(yùn)行和獨(dú)立調(diào)度的基本單位(可以理解為一個(gè)進(jìn)程中執(zhí)行的代碼片段)爱谁,進(jìn)程是資源分配的基本單位(進(jìn)程是一塊包含了某些資源的內(nèi)存區(qū)域)。進(jìn)程是線程的容器孝偎,真正完成代碼執(zhí)行的是線程访敌,而進(jìn)程則作為線程的執(zhí)行環(huán)境。一個(gè)程序至少包含一個(gè)進(jìn)程邪媳,一個(gè)進(jìn)程至少包含一個(gè)線程捐顷,一個(gè)進(jìn)程中的多個(gè)線程共享當(dāng)前進(jìn)程所擁有的資源荡陷。

4雨效、談?wù)勀銓?duì)多線程開發(fā)的理解?ios中有幾種實(shí)現(xiàn)多線程的方法废赞?

好處:1徽龟、使用線程可以把程序中占據(jù)時(shí)間長(zhǎng)的任務(wù)放到后臺(tái)去處理,如圖片唉地、視頻的下載2据悔、發(fā)揮多核處理器的優(yōu)勢(shì)传透,并發(fā)執(zhí)行讓系統(tǒng)運(yùn)行的更快、更流暢极颓,用戶體驗(yàn)更好缺點(diǎn):1朱盐、大量的線程降低代碼的可讀性,2菠隆、更多的線程需要更多的內(nèi)存空間3兵琳、當(dāng)多個(gè)線程對(duì)同一個(gè)資源出現(xiàn)爭(zhēng)奪的時(shí)候要注意線程安全的問(wèn)題。

iOS有三種多線程編程的技術(shù):1骇径、NSThread(兩種創(chuàng)建方式)[NSThread detachNewThreadSelector:@selector(doSomething:) toTarget:self withObject:nil];NSThread *myThread = [[NSThread alloc] initWithTarget:self selector:@selector(doSomething:) object:nil];[myThread start];2躯肌、NSOperationQueueNSOperationQueue *oprationQueue = [[NSOperationQueue alloc] init];oprationQueue addOperationWithBlock:^{//這個(gè)block語(yǔ)句塊在子線程中執(zhí)行}http://alloc.sinaapp.com/wp/?p=2373、Grand Central Dispatch (GCD)dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{? ? // 耗時(shí)的操作? ? dispatch_async(dispatch_get_main_queue(), ^{? ? ? ? // 更新界面? ? });});PS:不顯示的創(chuàng)建線程的方法:用NSObject的類方法? performSelectorInBackground:withObject: 創(chuàng)建一個(gè)線程:[Obj performSelectorInBackground:@selector(doSomething)

5破衔、線程同步和異步的區(qū)別清女?IOS中如何實(shí)現(xiàn)多線程的同步?

同步:一個(gè)線程要等待上一個(gè)線程執(zhí)行完之后才能執(zhí)行當(dāng)前的線程晰筛,生活中的例子(上廁所)嫡丙。異步:同時(shí)去做兩件或者多件事。比如邊聽歌邊看報(bào)读第。原子操作(atomic)迄沫、加鎖(NSLock、NSRecursive卦方、NSConditionLock)羊瘩、@synchronized? GCD串行隊(duì)列,GCD當(dāng)中的屏障,NSOperationQueue設(shè)置最大并發(fā)數(shù)為1

6、假設(shè)有一個(gè)字符串a(chǎn)abcad盼砍,請(qǐng)寫一段程序尘吗,去掉字符串中不相鄰的重復(fù)字符串,即上述字符串處理之后的輸出結(jié)果為:aabcd.

本題的題意是以第一個(gè)出現(xiàn)的字母作為參照浇坐,只要之后出現(xiàn)相同的字母并且和第一個(gè)字母不相鄰睬捶,那么就刪除。為防止刪除某些字符之后近刘,把之前不相鄰的重復(fù)字符串轉(zhuǎn)化為相鄰字符串擒贸,所以可以先用空格替換掉需要?jiǎng)h除的字符,最后對(duì)數(shù)組里面的空格進(jìn)行處理觉渴。

-(void)removeRepeat:(NSString *)aNum{

? ? NSMutableArray *mArr = [[NSMutableArray alloc]initWithCapacity:10];?

? for (int i = 0;i < aNum.length;i++)? ? {? ? ? ? [mArr addObject:[aNum substringWithRange:NSMakeRange(i,1)]];? ? }? ? NSLog(@"- %@", mArr);? ? [self compareNum:mArr];? ? NSLog(@"%@",mArr);}//比較是否相等-(NSMutableArray *)compareNum:(NSMutableArray *)mArr{? ? int count = mArr.count;//重新定義了,count不會(huì)減一? ? for (int j = 0; j < count - 1; j++)? ? {? ? ? ? for (int i = j; i < count - 1-1-1; i++)? ? ? ? {? ? ? ? ? ? NSLog(@" %@? %@",[mArr objectAtIndex:j],[mArr objectAtIndex:i + 2]);? ? ? ? ? ? NSString *a = [mArr objectAtIndex:j];? ? ? ? ? ? NSString *b = [mArr objectAtIndex:i+2];? ? ? ? ? ? if ([a isEqualToString:b])? ? ? ? ? ? {? ? ? ? ? ? ? ? [mArr replaceObjectAtIndex:i + 2 withObject:@" "];? ? ? ? ? ? }? ? ? ? }? ? }? ? return mArr;}

7介劫、獲取一臺(tái)設(shè)備唯一標(biāo)識(shí)的方法有哪些?MAC地址案淋,udid座韵,keychain,open udid,廣告標(biāo)識(shí)IDFA-identifierForIdentifier

8、iOS類是否可以多繼承誉碴?如果沒有宦棺,那可以用其他方法實(shí)現(xiàn)嗎?簡(jiǎn)述實(shí)現(xiàn)過(guò)程黔帕。不可以代咸,可以通過(guò)消息轉(zhuǎn)發(fā)、delegate和protocol和類別來(lái)實(shí)現(xiàn)類似多繼承成黄。

9侣背、堆和棧的區(qū)別?棧區(qū)(stack)--由編譯器自動(dòng)分配釋放慨默,存放函數(shù)的參數(shù)值贩耐、局部變量的值。堆區(qū)(heap)--一般由程序員分配釋放厦取。全局區(qū)(靜態(tài)區(qū))(static)--全局變量和靜態(tài)變量潮太。程序結(jié)束后由系統(tǒng)釋放。? ? ? 文字常量區(qū)--常量字符串存放在這里虾攻。程序結(jié)束后由系統(tǒng)釋放铡买。? ? ? 程序代碼區(qū)—存放函數(shù)體的二進(jìn)制文件。棧:只要棧的剩余空間大于所申請(qǐng)空間霎箍,系統(tǒng)將為程序提供內(nèi)存奇钞,否則將報(bào)異常提示棧溢 出。堆:首先應(yīng)該知道操作系統(tǒng)有一個(gè)記錄空閑內(nèi)存地址的鏈表漂坏,當(dāng)系統(tǒng)收到程序的申請(qǐng)時(shí)景埃,會(huì)遍歷該鏈表,尋找第一個(gè)空間大于所申請(qǐng)空間的堆結(jié)點(diǎn)顶别,然后將該結(jié)點(diǎn)從空閑結(jié)點(diǎn)鏈表中刪除谷徙,并將該結(jié)點(diǎn)的空間分配給程序,另外驯绎,對(duì)于大多數(shù)系統(tǒng)完慧,會(huì)在這塊內(nèi)存空間中的首地址處記錄本次分配的大小,這樣剩失,代碼中的delete語(yǔ)句才能正確的釋放本內(nèi)存空間屈尼。另外,由于找到的堆結(jié)點(diǎn)的大小不一定正好等于申請(qǐng)的大小拴孤,系統(tǒng)會(huì)自動(dòng)的將多余的那部分重新放入空閑鏈表中脾歧。

10、iOS本地?cái)?shù)據(jù)存儲(chǔ)都有哪幾種方式乞巧?iOS如何實(shí)現(xiàn)復(fù)雜對(duì)象的存儲(chǔ)涨椒?

1摊鸡、NSKeyedArchiver(歸檔)采用歸檔的形式來(lái)保存數(shù)據(jù)绽媒,該數(shù)據(jù)對(duì)象需要遵守NSCoding協(xié)議蚕冬,并且該對(duì)象對(duì)應(yīng)的類必須提供encodeWithCoder:和initWithCoder:方法。

2是辕、NSUserDefaults:用來(lái)保存應(yīng)用程序設(shè)置和屬性囤热、用戶保存的數(shù)據(jù)。用戶再次打開程序或開機(jī)后這些數(shù)據(jù)仍然存在获三。NSUserDefaults可以存儲(chǔ)的數(shù)據(jù)類型包括:NSData旁蔼、NSString、NSNumber疙教、NSDate棺聊、NSArray、NSDictionary贞谓。

3限佩、Write寫入方式:永久保存在磁盤中。

4裸弦、SQLite(FMDB祟同、CoreData)

11、深拷貝和淺拷貝的理解理疙?深拷貝拷貝的是內(nèi)容晕城,淺拷貝拷貝的是指針。深拷貝和淺拷貝最大的區(qū)別就是子類對(duì)象的地址是否改變窖贤,如果子類對(duì)象的地址改變那么就是深拷貝砖顷。

12、怎樣實(shí)現(xiàn)一個(gè)singleton的類赃梧。static LOSingleton * shareInstance;+( LOSingleton *)sharedInstance{? ? @synchronized(self){//這個(gè)東西其實(shí)就是 一個(gè)加鎖择吊。如果self 其他線程訪問(wèn),則會(huì)阻塞槽奕。這樣做一般是用來(lái)對(duì)單例 進(jìn)行一個(gè)死鎖的保護(hù)? ? ?

? if (shareInstance == nil) {? ? ? ? ??

shareInstance = [[super allocWithZone:NULL] init];? ??

? }? ?

}return shareInstance;

}

//第二種方式

+ (LOSingleton *) sharedInstance{?

? static? LOSingleton *sharedInstance = nil ;??

static? dispatch_once_t onceToken;? // 鎖??

dispatch_once (& onceToken, ^ {? ? // 最多調(diào)用一次? ??

? sharedInstance = [[self? alloc] init];??

});

return? sharedInstance;}寫一個(gè)標(biāo)準(zhǔn)宏MIN几睛,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)?#define kMIN(X,Y)? ((X)? > (Y)) ? (Y) :(X)iphone os有沒有垃圾回收機(jī)制粤攒?簡(jiǎn)單闡述一下OC內(nèi)存管理所森。iphone os沒有垃圾回收機(jī)制。垃圾回收機(jī)制用于在空閑時(shí)間以不定時(shí)的方式動(dòng)態(tài)的回收無(wú)任何引用的對(duì)象占據(jù)的內(nèi)存空間夯接。簡(jiǎn)述應(yīng)用程序按Home鍵進(jìn)入后臺(tái)時(shí)的生命周期焕济,以及從后臺(tái)回到前臺(tái)時(shí)的生命周期?應(yīng)用程序的狀態(tài):Not running 未運(yùn)行盔几,程序沒啟動(dòng)Inactive? ? 未激活晴弃,程序在前臺(tái)運(yùn)行,不過(guò)沒接受到事件,沒有事件處理的狀態(tài)下通常處于這個(gè)狀態(tài)上鞠。Active? ? ? 激活? 程序在前臺(tái)并且接收到了事件Backgound? 后臺(tái)? 程序在后臺(tái)而且能執(zhí)行代碼际邻,大多數(shù)程序進(jìn)入這個(gè)狀態(tài)后會(huì)在在這個(gè)狀態(tài)上停留一會(huì)。Suspended? 掛起? 程序在后臺(tái)不能執(zhí)行代碼芍阎。ViewController 的 alloc世曾,loadView, viewDidLoad,viewWillAppear,viewDidUnload,dealloc、init分別是在什么時(shí)候調(diào)用的谴咸?在自定義ViewController的時(shí)候這幾個(gè)函數(shù)里面應(yīng)該做什么工作轮听?? ? ? ? alloc初始化當(dāng)前的ViewControllerloadView:沒有正在使用nib視圖頁(yè)面,子類將會(huì)創(chuàng)建自己的自定義視圖層viewDidLoad:試圖被加載后調(diào)用viewWillAppear:試圖即將出現(xiàn)的時(shí)候調(diào)用viewDidUnload:當(dāng)系統(tǒng)內(nèi)存吃緊的時(shí)候會(huì)調(diào)用該方法,釋放掉當(dāng)前未在window中顯示的試圖和對(duì)應(yīng)的控制器使用UITableView時(shí)候必須要實(shí)現(xiàn)的幾種方法岭佳?2個(gè)血巍。-(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section; 這個(gè)方法返回每個(gè)分區(qū)的行數(shù)-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath)indexPath;這個(gè)方法返回我們調(diào)用的每一個(gè)單元格UIImage初始化一張圖片有幾種方法?簡(jiǎn)述各自的優(yōu)缺點(diǎn)珊随。1藻茂、從資源讀取UIImage *image = [UIImage imageNamed:@”1.png”];2、從網(wǎng)絡(luò)讀取NSURL*url=[NSURL URLWithString:@"http://www.sinaimg.cn/qc/photo_auto/chezhan/2012/50/00/15/80046_950.jpg"];3.從手機(jī)本地讀取//讀取本地圖片非resourceNSString *aPath3=[NSString stringWithFormat:@"%@/Documents/%@.jpg",NSHomeDirectory(),@"test"];UIImage *imgFromUrl3=[[UIImage alloc]initWithContentsOfFile:aPath3]; 4.從現(xiàn)有的context中獲得圖像//add ImageIO.framework and #importCGImageSourceRef source = CGImageSourceCreateWithURL((CFURLRef)url, NULL);

CGImageRef img= CGImageSourceCreateImageAtIndex(source,0,NULL);

CGContextRef ctx=UIGraphicsGetCurrentContext();

CGContextSaveGState(ctx);

//transformCTM的2種方式

//CGContextConcatCTM(ctx, CGAffineTransformMakeScale(.2, -0.2));

//CGContextScaleCTM(ctx,1,-1);

//注意坐標(biāo)要反下,用ctx來(lái)作為圖片源

CGImageRef capture=CGBitmapContextCreateImage(ctx);

CGContextDrawImage(ctx, CGRectMake(160, 0, 160, 230), [image CGImage]);

CGContextDrawImage(ctx, CGRectMake(160, 230, 160, 230), img);

CGImageRef capture2=CGBitmapContextCreateImage(ctx);

5玫恳、用Quartz的CGImageSourceRef來(lái)讀取圖片

CGImageSourceRef source = CGImageSourceCreateWithURL((CFURLRef)url, NULL);

CGImageRef img= CGImageSourceCreateImageAtIndex(source,0,NULL);

截取字符串”20?|?http://www.baidu.com”中辨赐,”|”字符前面和后面的數(shù)據(jù),分別輸出它們京办。

NSString?*string?=?@”?20?|?http://www.baidu.com”;

[string?componentsSeparatedByString:@”|”];

用obj-c寫一個(gè)冒泡排序

NSMutableArray?*array?=?[NSMutableArray?arrayWithArray:@[@"3",@"1",@"10",@"5",@"2",@"7",@"12",@"4",@"8"]];

NSString??*tmp;

for?(int?i?=?0;?i?<?array.count;?i?++)?{

for?(int?j?=?0;?j?<?array.count??-?1?-?i;?j++)?{

if?([[array?objectAtIndex:j]?integerValue]?>?[[array?objectAtIndex:j?+?1]?integerValue])?{

tmp?=?[array?objectAtIndex:j];

[array?replaceObjectAtIndex:j?withObject:[array?objectAtIndex:j?+?1]];

[array?replaceObjectAtIndex:j?+?1?withObject:tmp];

}

}

}

分析json掀序、xml的區(qū)別?json惭婿、xml解析方式的底層是如何處理的不恭?

json底層原理遍歷字符串中的字符,最終根據(jù)各市規(guī)定的特助字符财饥,比如{}换吧,[],:號(hào)等進(jìn)行區(qū)分,{}是字典钥星,[]表示的時(shí)數(shù)組沾瓦,:號(hào)是字典的鍵和值的分水嶺,最總是將json數(shù)據(jù)轉(zhuǎn)化為字典谦炒。Xml兩種解析方式贯莺,DOM和SAX,DOM需要讀入整個(gè)XML文檔(文檔驅(qū)動(dòng)),SAX是事件驅(qū)動(dòng)的宁改,并不需要讀入整個(gè)文檔缕探,文檔的讀入過(guò)程也就是SAX的解析過(guò)程。

面向?qū)ο蟮娜筇卣骰苟祝⒆骱?jiǎn)單的介紹

封裝爹耗、繼承耙考、多態(tài)。封裝:是把客觀事物封裝成抽象的類潭兽,隱藏內(nèi)部的實(shí)現(xiàn)倦始,對(duì)外部提供接口。繼承:可以使用現(xiàn)有類的所有功能讼溺,并且在無(wú)需重新編寫原來(lái)的類的情況下對(duì)這些功能進(jìn)行擴(kuò)展楣号。多態(tài):不同的對(duì)象以自己的方式響應(yīng)相同的的消息的能力叫做多態(tài)最易,或者說(shuō)父類指針指向子類對(duì)象<如UITableView的怒坯,cellForRow方法,返回值類型是UITbaleViewCell藻懒,但是你返回的cell可以是你自定義的cell,在比如多個(gè)類里面都有同一個(gè)方法>

簡(jiǎn)述NotificationCenter剔猿、KVC、KVO嬉荆、Delegate归敬?并說(shuō)明它們之間的區(qū)別?

Notification:觀察者模式鄙早,controller向defaultNotificationCenter添加自己的 notification汪茧,其他類注冊(cè)這個(gè)notification就可以收到通知,這些類可以在收到通知時(shí)做自己的操作(多觀察者默認(rèn)隨機(jī)順序發(fā)通知給 觀察者們限番,而且每個(gè)觀察者都要等當(dāng)前的某個(gè)觀察者的操作做完才能輪到他來(lái)操作舱污,可以用NotificationQueue的方式安排觀察者的反應(yīng)順序,也 可以在添加觀察者中設(shè)定反映時(shí)間弥虐,取消觀察需要在viewDidUnload 跟dealloc中都要注銷)扩灯。

KVC鍵值編碼,可以直接通過(guò)字符串的名字(key)來(lái)間接訪問(wèn)屬性的機(jī)制霜瘪,而不是通過(guò)調(diào)用getter和setter方法訪問(wèn)珠插。

KVO:觀測(cè)指定對(duì)象的屬性,當(dāng)指定對(duì)象的屬性更改之后會(huì)通知相應(yīng)的觀察者颖对。

delegate:一對(duì)一捻撑,delegate遵循某個(gè)協(xié)議并實(shí)現(xiàn)協(xié)議聲明的方法。

屬性的聲明使用assign缤底,防止出現(xiàn)循環(huán)引用的問(wèn)題布讹。

Objective-C有私有方法么?私有變量呢训堆?如多沒有的話描验,有沒有什么代替的方法?

objective-c?–?類里面的方法只有兩種,?靜態(tài)方法和實(shí)例方法.

@private來(lái)修飾私有變量

OC中所有的實(shí)例變量默認(rèn)都是私有的坑鱼,所有的實(shí)例方法默認(rèn)都是公有的膘流。

#import絮缅、#include和@class有什么區(qū)別

#include c語(yǔ)言中引入一個(gè)頭文件,但是可能出現(xiàn)交叉編譯

#import在OC中引入自己創(chuàng)建的頭文件#import””或者系統(tǒng)框架#import<>呼股。#import不會(huì)出現(xiàn)交叉編譯

@class對(duì)一個(gè)類進(jìn)行聲明耕魄,告訴編譯器有這個(gè)類,但是類的定義什么的都不知道

談?wù)勀銓?duì)MVC的理解彭谁?為什么要用MVC吸奴?在Cocoa中MVC是怎么實(shí)現(xiàn)的?你還熟悉其他的OC設(shè)計(jì)模式或別的設(shè)計(jì)模式嗎缠局?

MVC是Model-VIew-Controller则奥,就是模型-視圖-控制器,?MVC把軟件系統(tǒng)分為三個(gè)部分:Model,View狭园,Controller读处。在cocoa中,你的程序中的每一個(gè)object(對(duì)象)都將明顯地僅屬于這三部分中的一個(gè)唱矛,而完全不屬于另外兩個(gè)罚舱。MVC可以幫助確保幫助實(shí)現(xiàn)程序最大程度的可重用性。各MVC元素彼此獨(dú)立運(yùn)作绎谦,通過(guò)分開這些元素管闷,可以構(gòu)建可維護(hù),可獨(dú)立更新的程序組建窃肠。

單例模式包个,delegate設(shè)計(jì)模式,target-action設(shè)計(jì)模式

舉出5個(gè)以上你所熟悉的ios??sdk庫(kù)有哪些和第三方庫(kù)有哪些铭拧?

UIKit,MapKit,CoreLocation,CFNetWork,MessageUI,ImageIO,CoreData赃蛛,

AFNetWorking,MKNetWorkKit,ASIHttpRequest,FMDB,ZXing,ZBar,SDWebImage

你做iphone開發(fā)時(shí)候,有哪些傳值方式搀菩,view和view之間是如何傳值的呕臂?

屬性、delegate肪跋、KVO歧蒋、blocks

描述上拉加載、下拉刷新的實(shí)現(xiàn)機(jī)制州既?

根據(jù)下拉或者上拉的距離來(lái)判斷是否進(jìn)行網(wǎng)絡(luò)請(qǐng)求

什么是沙盒(sandbox)谜洽?沙盒包含哪些文件,描述每個(gè)文件的使用場(chǎng)景吴叶。如何獲取這些文件的路徑阐虚?如何獲取應(yīng)用程序包中文件的路徑?

iOS應(yīng)用程序只能在為該改程序創(chuàng)建的文件系統(tǒng)中讀取文件蚌卤,不可以去其它地方訪問(wèn)实束,此區(qū)域被成為沙盒奥秆,所以所有的非代碼文件都要保存在此,例如圖像咸灿,圖標(biāo)构订,聲音,映像避矢,屬性列表悼瘾,文本文件等。

默認(rèn)情況下审胸,每個(gè)沙盒含有3個(gè)文件夾:Documents, Library 和 tmp亥宿。

Documents:蘋果建議將程序中建立的或在程序中瀏覽到的文件數(shù)據(jù)保存在該目錄下,iTunes備份和恢復(fù)的時(shí)候會(huì)包括此目錄Library:存儲(chǔ)程序的默認(rèn)設(shè)置或其它狀態(tài)信息歹嘹;

Library/Caches:存放緩存文件箩绍,iTunes不會(huì)備份此目錄孔庭,此目錄下文件不會(huì)在應(yīng)用退出刪除

tmp:提供一個(gè)即時(shí)創(chuàng)建臨時(shí)文件的地方尺上。

iTunes在與iPhone同步時(shí),備份所有的Documents和Library文件圆到。iPhone在重啟時(shí)怎抛,會(huì)丟棄所有的tmp文件。

介紹一下XMPP芽淡?有什么優(yōu)缺點(diǎn)嗎马绝?

XMPP:基于XML的點(diǎn)對(duì)點(diǎn)的即時(shí)通訊協(xié)議。

XMPP?協(xié)議是公開的挣菲,XMPP?協(xié)議具有良好的擴(kuò)展性富稻,安全性

缺點(diǎn)是只能傳輸文本

談?wù)剬?duì)性能優(yōu)化的看法,如何做白胀?

從用戶體驗(yàn)出發(fā):1椭赋、程序logging不要太長(zhǎng)、2或杠、相同數(shù)據(jù)不做重復(fù)獲取哪怔、3、昂貴資源要重用(cell向抢、sqlite认境、date),4挟鸠、良好的編程習(xí)慣和程序設(shè)計(jì):選擇正確的集合對(duì)象和算法來(lái)進(jìn)行編程叉信、選擇適合的數(shù)據(jù)存儲(chǔ)格式(plist、SQLite)艘希、優(yōu)化SQLite查詢語(yǔ)句5硼身、數(shù)據(jù)資源方面的優(yōu)化(緩存和異步加載)

解決方案:

? 能夠發(fā)現(xiàn)問(wèn)題

? 利用log或工具分析問(wèn)題原因

? 假設(shè)問(wèn)題原因

改進(jìn)代碼和設(shè)計(jì)

以.mm為拓展名的文件里鉴未,可以包含的代碼有哪些?c和obj-c如何混用

obj-c的編譯器處理后綴為m的文件時(shí)鸠姨,可以識(shí)別obj-c和c的代碼铜秆,?處理mm文件可以識(shí)別obj-c,c,c++代碼,但cpp文件必須只能用c/c++代碼讶迁,而且cpp文件include的頭文件中连茧,也不能出現(xiàn)obj-?c的代碼,因?yàn)閏pp只是cpp

2)?在mm文件中混用cpp直接使用即可巍糯,所以obj-c混cpp不是問(wèn)題

3)在cpp中混用obj-?c其實(shí)就是使用obj-c編寫的模塊是我們想要的啸驯。

如果模塊以類實(shí)現(xiàn),那么要按照cpp?class的標(biāo)準(zhǔn)寫類的定義祟峦,頭文件中不能出現(xiàn)obj-c的東西罚斗,包括#import?cocoa的。實(shí)現(xiàn)文件中宅楞,即類的實(shí)現(xiàn)代碼中可以使用obj-c的東西针姿,可以import,只是后綴是mm。

如果模塊以函數(shù)實(shí)現(xiàn)厌衙,那么頭文件要按?c的格式聲明函數(shù)距淫,實(shí)現(xiàn)文件中,c++函數(shù)內(nèi)部可以用obj-c婶希,但后綴還是mm或m

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末榕暇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子喻杈,更是在濱河造成了極大的恐慌彤枢,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筒饰,死亡現(xiàn)場(chǎng)離奇詭異缴啡,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)龄砰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門盟猖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人换棚,你說(shuō)我怎么就攤上這事式镐。” “怎么了固蚤?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵娘汞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我夕玩,道長(zhǎng)你弦,這世上最難降的妖魔是什么惊豺? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮禽作,結(jié)果婚禮上尸昧,老公的妹妹穿的比我還像新娘。我一直安慰自己旷偿,他們只是感情好烹俗,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著萍程,像睡著了一般幢妄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上茫负,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天蕉鸳,我揣著相機(jī)與錄音,去河邊找鬼忍法。 笑死潮尝,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缔赠。 我是一名探鬼主播衍锚,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼友题,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嗤堰!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起度宦,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤踢匣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后戈抄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體离唬,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年划鸽,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了输莺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡裸诽,死狀恐怖嫂用,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丈冬,我是刑警寧澤嘱函,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站埂蕊,受9級(jí)特大地震影響往弓,放射性物質(zhì)發(fā)生泄漏疏唾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一函似、第九天 我趴在偏房一處隱蔽的房頂上張望槐脏。 院中可真熱鬧,春花似錦撇寞、人聲如沸准给。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)露氮。三九已至,卻和暖如春钟沛,著一層夾襖步出監(jiān)牢的瞬間畔规,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工恨统, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叁扫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓畜埋,卻偏偏與公主長(zhǎng)得像莫绣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子悠鞍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法对室,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法咖祭,繼承相關(guān)的語(yǔ)法掩宜,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,587評(píng)論 18 399
  • 從三月份找實(shí)習(xí)到現(xiàn)在么翰,面了一些公司牺汤,掛了不少,但最終還是拿到小米浩嫌、百度檐迟、阿里、京東码耐、新浪追迟、CVTE、樂(lè)視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,194評(píng)論 11 349
  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,125評(píng)論 29 470
  • 1.項(xiàng)目經(jīng)驗(yàn) 2.基礎(chǔ)問(wèn)題 3.指南認(rèn)識(shí) 4.解決思路 ios開發(fā)三大塊: 1.Oc基礎(chǔ) 2.CocoaTouch...
    陽(yáng)光的大男孩兒閱讀 4,969評(píng)論 0 13
  • 今天是參加訓(xùn)練營(yíng)的第三周,周二,這周的主題是“如何用正確的方式堅(jiān)持寫”每瞒,感覺目前的我就是既找不到正確的方式金闽,也有點(diǎn)...
    幾何文閱讀 215評(píng)論 7 1