技術-網上收集百道面試題_第1頁
技術-網上收集百道面試題_第2頁
技術-網上收集百道面試題_第3頁
技術-網上收集百道面試題_第4頁
技術-網上收集百道面試題_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

IOS面試題匯Differencebetweenshallowcopyanddeepcopy?淺和深的區(qū)別?答案:淺層:只指向對象的指針,而不對象本身。:對象本身。意思就是說我有個A對象一后到A_op對后對淺說,和Aopy向是一內資,只不過是個針對本資源還只一,如我對A_op執(zhí)了改作,么現(xiàn)的對同被改這實背我拷的個想就理了,存存了兩獨象身。用上哥通的將是:好你的你你也深Whatisadvantageofcategories?Whatisdifferencebetweenimplementingacategoryandinheritance?類別的作用?繼承和類別在實現(xiàn)中有何區(qū)別?答案:category可以在不獲悉,不改變原來代碼的情況下往里面添加新的方法,只能添加,不能刪除修改。并且如果類別和原來類中的方法產生名稱,則類別將覆蓋原來的方法,因為類別具有更高的優(yōu)先級。類別主要有3個作用:(1)將類的實現(xiàn)分散到多個不同文件或多個不同框架中。(2)創(chuàng)建對私有方法的前向。(3)向對象添加非正式協(xié)議。繼承可以增加,修改或者刪除方法,并且可以增加屬性。Differencebetweencategoriesandextensions?類別和類擴展的區(qū)別。答案:category和extensions的不同在于的。extensions可以認為Differencebetweenprotocolinobjectivecandinterfacesinjava?obc中的協(xié)議和java中的接口概念有何不同?答案:OBC中的有2層含義,定義為formal和informalprotocol。前者和Java接口一樣。informalprotocol中的方法屬于設計模式考慮范疇,不是必須實現(xiàn)的,但是如果有實現(xiàn),就會改變類的屬性。其實關于正式協(xié)議,類別和非正式協(xié)議我很早前學習的時候大致看過,也寫在了學習里“非正式協(xié)議概念其實就是類別的另一種表達方式“這里有一些你可能希望實現(xiàn)的方法,你可以使用他們更好的完成工作”。這個意思是,這些是可選的。比如我門要一個更好的方法,我們就會申明一個這樣的類別去實現(xiàn)。然后你在后期可以直接使用這些更好的方法。這么看,總覺得類別這玩意兒有點像協(xié)議的可選協(xié)議。實protocal已經開始對兩者都統(tǒng)一和規(guī)范起來操作,因為資料中說“非正式協(xié)議使用interface修飾“,現(xiàn)在我們看到協(xié)議中兩個修飾詞:“必須實現(xiàn)WhatareKVOandKVC?答案:kvc:鍵-值編碼是一種間接對象的屬性使用字符串來標識屬性,而不是通過調用存取方法,直接或通過實例變量的機制。很多情況下可以簡化程序代碼。apple文檔其實給了一個很好的例子。kvo:鍵值觀察機制,他提供了觀察某一屬性變化的方法,極大的簡化了代碼。具體用看到嗯哼用到過的一個地方是對于按鈕點擊變化狀態(tài)的的。比如我自定義的一個button[cpp][selfaddObserver:selfforKeyPath:@"highlighted"options:0context:nil];#pragmamark-(void)observeValueForKeyPath:(NSString*)keyPathofObject:(id)object*)changecontext:(void if([keyPathisEqualToString:@"highlighted"] [self }對系是據(jù)kepat去的相的發(fā)改,論來是和v制道是樣。對于vc機如通ey找vale:當KV調對時比:[slfaluForey:”smeK”]時程會動圖過種同方解這調。查對是帶有somKey這方,如果找,繼查對是帶有omeey個例量Va,果沒找,序繼試圖調用-(i)vlueorUdefnedey這方。果個還沒被現(xiàn)話程會出個NSUnefiedKyExepton異錯。 ( :Ke-Vaueodig找法時,僅僅查omeey個法還查getomeey個法前加個ge,_omeey 有很多好處,下面的兩個例子說明了這樣做的好處。“來至cocoa,這個說法應該挺有道理。因為我們知道button卻是存在一個highlighted實例變量.因此為何上面我們只是add一個相關的keypath就行了,Whatispurposeofdelegates?的作用?答案:的目的是改變或傳遞控制鏈。允許一個類在某些特定時刻通知到其他類,而不需要獲取到那些類的指針??梢詼p少框架復雜度。另外一點,WhataremutableandimmutabletypesinObjectiveC?obc中可修改和不可以修改類型。答Whenwecallobjectivecisruntimelanguagewhatdoesitmean?obc是動態(tài)運行時語言是什么意思?答案:多態(tài)。主要是將數(shù)據(jù)類型的確定由編譯時,推了運行時。這個問題其實淺涉及到兩個概念,運行時和多態(tài)。簡單來說,運行時機制使我們直到運行時才去決定一個對象的類別,以及調用該類別對象指定方法。多態(tài):不同對象以自己的方式響應相同的消息的能力叫做多態(tài)。意思就是假設生物類(life)都用有一個相同的方法-eat;了life后,實現(xiàn)各自的eat,但是調用是我們只需調用各自的eat方法。也就是不同的對象以自己的方式響應了相同的消息(響應了eat這個選擇器)。因此也可以說,運行時機制是多態(tài)的基礎?~~~whatisdifferencebetweenNSNotificationandprotocol?通知和協(xié)議的不同之處?答案:協(xié)議有控制鏈(has-a(專業(yè)術語了~)。但是簡單分析下通知和的行為模式,我們大致可以有自己的理解簡單來說,通知的話,它可以一對多,一條消息可以發(fā)送給多個消息接受者。按我們的理解,到不是直接說不能一對多,比如我們知道的經濟人,很多時候一個經濟人負責好幾個的事務。只是對于不同間,的事物后,別稱B的發(fā)布會了。但是通知就不一樣,他只關心發(fā)出通知,而不關心多少接收到感要處理。WhatispushnotificationPolymorphism?態(tài)性答案:多態(tài),子類指針可以賦值給父類。切面向對象語言中料上寫的能背出來。最重要的是轉化成自我理解。Singleton理解答案:11,12題目其實出的有點泛泛的感覺了,可能說是編程語言需要或是必備的基礎?;灸苡檬煜さ恼Z言寫出一個單例,以及可以運用到的場景或是你編碰到過運用的此種模式的框架類等。進一步點,考慮下如何在多線程單例時的安全性。Whatisresponderchain?說說響應鏈答案:事件響應鏈。包括點擊事件,畫面刷新事件等。在視圖棧內從上至下,或者從下之上。可以說點事件的分發(fā),傳遞以及處理。具體可以去看下touch事件這塊。因為問的太抽象化了嚴重懷疑題目出到越后面就越籠統(tǒng)。Differencebetweenframeandbounds?frame和bounds有什么不同?答案:frame指的是:該view在父view坐標系統(tǒng)中的位置和大小。(參照點是父親的坐標系統(tǒng))bounds指的是:該view在本身坐標系統(tǒng)中的位置和大小。(參照點是本身坐標系統(tǒng))Differencebetweenmethodandselector?同?答案:selector是一個方法的名字,method是一個組合體,包含了名字.詳情可以看apple文檔。IsthereanygarbagecollectionmechanisminObjectiveC.?OBC的回收機制?答案:OBC2.0有Garbagecollection,但是iOS解的objective-c對于內存管理都是手動操作的,但是也有自動釋放池。但是差了大部分資料,貌似不要和arc機制搞混就好了。求~~SOpratonueu?NSpertiojv線程的念用處理o線開的題。部資提一是雖是quu但是funBfuc,Afnc但是BfunAfuc,B概。是念實以考行取和號統(tǒng)。因對A比先隊票是率執(zhí)中有一句提到得這個queue名字有點人了,還不如pool~綜合一點,我們知道他可以比較大的用處在于可以幫組多線Whatislazyloading?答案:懶漢模式,只在用到的時候才去初始化。我覺得最好也最簡單的一個列子就是tableView中的加載顯示了。一個延時載,避免內存過高,一Canweusetwotableviewcontrollersononeviewcontroller?個tableview控制器?答案:一個視圖控制只提供了一個View視圖,理論上一個tableViewController也tableview視圖。當然,題目本身也有歧義,如果不是我們定性思維認為的UIViewController,而是宏觀的表示視圖控制者,那我們倒是可以把其看成一個視圖控制者,它可以控制多個視圖控制器,比如TabbarController那樣的感覺。Canweuseonetableviewwithtwodifferentdatasources?Howyouwillachievethis?一個tableView是否可以關聯(lián)兩個不同的數(shù)據(jù)源?你會怎么處理?答案:首先我們從代碼來看,數(shù)據(jù)源如何 方法里實現(xiàn)的。因此我們并不關心如何去關聯(lián)他,他怎么關聯(lián)上,方法只是讓我返回根據(jù)自己的需要去設置如相關的數(shù)據(jù)源Objective-c只支持單繼承,如果要實現(xiàn)多繼承的話,可以通過類別和協(xié)議的方式來實現(xiàn),cocoa中所有的類都是NSObject的子類,多繼承在這里是用protocol委托來實現(xiàn)的。#import#include區(qū)別import<>import""@class一般用于頭文件中需要該類的某個實例變量的時候用到,在m文件中還是需要使用#import而#import比起類變量的@protected,@private,@public,@package各有什么含義id的對象有什么特性?答案:id是個很重要的類型,是個可以指向任何類型的指針或者可以理MVC是什么?有什么特性?為什么在上被廣泛運用?答案:MVC設計模式考慮三種對象:模型對象、視圖對象、和控制器對象。模型對象代表特別的知識和專業(yè)技能,它們負責保有應用程序的數(shù)據(jù)控制器對象是應用程序的視圖對象和模型對象之間的協(xié)調者。對于語句NSString*testObjectNSDataallocinit];testObject為什么有些4.0獨有的objective-c3.1上運行時會報錯.而4.0獨有的類在3.1上分配內存時不怎么捕獲?不同的自動釋放池跟GC(回收)有什么區(qū)別?上有GC么?[poolrelease]和[pooldrain]有什么區(qū)別?上沒有GC。開發(fā)的時候沒有回收機制。在回收環(huán)境中,release是一值)。因此,在通常情況下,您應該使用drain而不是release來銷毀自動釋放池。for(intindex=0;index<20;index++){NSString*tempStr=@”tempStr”;NSLog(tempStrNSNumber*tempNumberNSNumbernumberWithInt:2];NSLog(tempNumber段遵循CocoaTouch的使用原則一定要用對特性關鍵字,對于“內存泄漏”,一定要申請了要負責釋放,要細心。關鍵字alloc或new生成的對象需要手動釋放;在一個對象釋放前.如果他被加到了notificationCenter.不在notificationcenter中remove這個對singleton的類.給出思路線程與進程的區(qū)別和聯(lián)系?答案:進線程都是由操作系統(tǒng)所體會的程序運行的基本單元,系統(tǒng)利用該基本單元實現(xiàn)系統(tǒng)對應用的并發(fā)性。線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方進的不同執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死率要差一些。但對于一些要求同時進行并且又要共享某些變量的并發(fā)操作,只能用線程,不能用進程。iOS中可以有四種持久化數(shù)據(jù)的方式:屬性列表、對象歸檔、3和CoreData;coredata可以使你以圖形界面的方式快速的定義app的數(shù)據(jù)模型,同時在你的代碼中容易獲取到它。coredata提供了基礎結data的時候,你不用安裝額外的數(shù)據(jù)庫系統(tǒng),因為coredata使用內置的數(shù)據(jù)庫。coredata將你app的模型層放入到一組定義在內存中的數(shù)據(jù)對象。coredata會追蹤這些對象的改變,同時可以根據(jù)需要做相反的改變,例如用戶執(zhí)行撤銷命令。當coredata在對你app數(shù)據(jù)的改變進行保存的時候,coredata會把這些數(shù)據(jù)歸檔,并永久性保存。macosx中庫,它是一個輕量級功能強大的關系數(shù)據(jù)引擎,data框架不同的是,是使用程序式的,sql的主要的API來直接操作數(shù)據(jù)表。CoreData不是一個關系型數(shù)據(jù)庫,也不是關系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)。雖然CoreDta支持 不能使用任意的數(shù)據(jù)庫。CoreData在使用的過程種自己創(chuàng)建這個數(shù)據(jù)庫。CoreData支持對一、對闡述一個nil對象從interfacebulider產生,到載入程序運行空間,最后被釋放時所經歷的生命周UIResponderUIKIT事件響應的基類。窗口上的所有事件觸發(fā),都由該類響應(即事件處理)。所以,窗口上的View及控制器都是派生于該類的,例如UIView、UIViewController等。調用UIResponder。使用事件響應,最典型的場景就是頁面導航了。我們知道,一個UIView,是不能直接嵌入UINavigationController(UIViewController),這就意味著,如果當前的頁面是一個UIView(例如自定義的UITableViewCell),當前頁面就無法使用pushViewController調用UIResponder的nextResponder前的事件響應類。最終交由UIViewController響應,這時UIView可以使用pushViewController法4、直到遇到響應者才會停止,否則事件將一直上傳,直到UIWindow通信的雙方通過查找特定下特定類型的文件(稱鎖文件)來完成進程間對臨界資源時 {intint*ptr=(int*)(&a+1);}答*(a+1)就是a[1],*(ptr-1)就是a[4],執(zhí)行結果是2.5,&a+1不是首地址+1,系統(tǒng)會認為加一個a數(shù)組的偏移,是偏移了一個數(shù)組的大?。ū纠?個int,int*ptr=(int*)(&a+1);則ptr實際是&(a[5]),也就是a+5原因如下:&aint*)[51要根據(jù)指針類型加上一定的值,不同類型的指針+1之后增加的大小不同。a是長度為5的int數(shù)組指針,所以要加5*sizeof(int)所以ptr實際是a[5],但是prt與(&a+1)類型是不一樣的(這點很重要),所以prt-1只會減去sizeof(int*),a,&a的地址是一樣的,以下為WindowsNT下的32位C++程序,請計算sizeof的值voidFunccharstr[100] sizeof(str) void*p=malloc(100);sizeof(p)=答案:這題很常見了,Func(charstr[100])函數(shù)中數(shù)組名作為函數(shù)形參時,在函數(shù)體內,數(shù)組名失去操作,可以被修改。WindowsNT32位平臺下,指針的長度(占用內存的大?。?字節(jié),故sizeof(strsizeof(p為455.-(void)*getNSString(constNSString inputString=@"Thisisamaintest\n";return;}-{NSStringNSString*aString=[NSStringstringWithString:@"%@",getNSString(a)];NSLog(@"%@\n",aString);}最后問輸出的字符串:NULL,output在放 死鎖的4個必要條件 制,容易產生memoryleak。Windows下,棧是向低地址擴展的數(shù)據(jù)結構,是一塊連續(xù)的內存的區(qū)域。這句話的意思是一個編譯時就確定的常數(shù)),如果申請的空間超過棧的剩余overflow。因此,能從棧效率降低。對于棧來講,則不會存在這個問題,因為棧是先進后出的隊列,他們是如此的一一對應,以2alocC/()它一間對屬的制。相關以指定對象圖中的一個任意深度的路徑,使其指向相關對象的特定屬性。碼,但cpp文件必須只能用c/c++代碼,而且cpp文件include的頭文件中,也不能出現(xiàn)objc的代碼,因為cpp只是cpp2)mm文件中混用cpp直接使用即可,所以obj-c混cpp不是問題3)在cpp中混用objc其就是使用obj-c編寫的模塊是我們想要的。如果模塊以類實現(xiàn),那么要按照cppclass的標準寫類的定義,頭文件中不能出現(xiàn)obj-c的東西,包括#importcocoa的。實現(xiàn)文件中,即類的實現(xiàn)代碼中可以使用obj-c的東西,可以import,只是后綴是mm。如果模塊以函數(shù)實現(xiàn),那么頭文件要按c的格式函數(shù),實現(xiàn)文件中,c++函數(shù)內部可以用obj-c,但后綴還是mm或m??偨Y:只要cpp文件和cppinclude的文件cpp混用的是obj-c編譯后的o文件,這個東西其實是無差別的,所以可以用。obj-c的編譯器支持cpp.OS應用程序的基礎CocoaTouch框架重用了許多Mac系統(tǒng)的成熟模式,但是它地專注于觸摸的接口和優(yōu)化。UIKit為您提供了在OS上實現(xiàn)圖形,事件驅動程序的基本工具,其建立在和MacOSX中一樣的Foundation框架上,包括文件處理,網絡,字符串操作等。CocoaTouch具有和用戶接口一致的特殊設計。有了UIKit,您可以使用OS上的獨特的各色俱全的框架除了UIKit外,CocoaTouch包含了創(chuàng)建世界一流應用程序需要的所有框架,從三維圖形,到專業(yè)音效,甚至提供設備API以控制頭,或通過GPS獲知當前位置。CocoaTouch既包含只需要幾行代碼就可以完成全部任務的強大的Objective-C框架,也在需要時提供基礎的C語言API來直接系統(tǒng)。這些框架包括:通過CoreAnimation,您就可以通過一個基于組合獨立圖層的簡單的編程模型來創(chuàng)建豐富的用戶體驗。CocoaTouch架CoreMediaAVCoreCoreOpenGLQuartzBSDAddressCoreMapStore如果您通過分配和初始化(比如[[MyClassalloc]init])的需要負責該對象的釋放。這個規(guī)則在使用NSObject的便利方法new時也同樣適用.如果您從其它對象那里接收到一個對象,則您不擁有該對象,也不應該釋放它(當您向一個對象發(fā)送一個autorelease消息時,Cocoa就會將該對象的一個放入到的自動釋放1.ojc-c是通過一種"referringcounting"(計數(shù))的方式來管理內存的,對象在開始分配內存(alloc)的時候計數(shù)為一,以后每當碰到有copy,retain的時候計數(shù)都會加一,每當碰到release和autorelease的時候計數(shù)就會減一,如果此對象的計數(shù)變?yōu)榱?,就會被系統(tǒng)銷毀.2.NSAutoreleasePool就是用來做計數(shù)的管理工作的,這個東西一般不用你管的.3.autorelease和類工廠方法的實現(xiàn)是為了向客戶提供方便,它們將分配和初始化合在一個步驟中對象type)className...(其中className不包括任何前類工廠方法的另一個目的是使類(比如NSWorkspace)init類工廠方法則可以避免為可能沒有用的對象盲目分配內存。Foundation和ApplicationKit框架中的一些類只允許創(chuàng)建單件對象,即這些類在當前進的唯一實例。舉例來說,NSFileManager和NSWorkspace類在使用時都是基于進程進行單件對象的實例化。當向這配和初始化。單件對象充當控制中心的角色,負責指引或協(xié)調類的各種服務。如果類在概念上只有一個實例(NSWorkspace),就應該產生一個單件實例,而不是多個實例;如果將來某一天可能有多個實例,您可以使用單件實例機制,而不是工廠方法或函數(shù)。的結果。運行時因子負責確定消息的接收者和被調用的方法。運行時的消息分發(fā)機制為動態(tài)綁定提供支類,并以此為起點確定被調用的方法,方法和消息是動態(tài)綁定的。而且,您不必在Objective-C做 2) 3)動態(tài)識 4)指標計 6)不是一個過度復雜的C衍生語言 7)Objective-C與C++可混合編程 1)不支援命名空間 屬性的作用?@property是一個屬性,擴號內支持以下幾個屬性:1,getter=getterName,setter=setterName,設置setter與getter的方法名2,readwrite,readonly,設置可供級別2,assign,setter方法直接賦值,不進行任何retain操作,為了解決原類型與環(huán)循問題3,retain,setter方法對參數(shù)進行release舊值再retain新值,所有現(xiàn)都是這個順序(CC上有相關資料4,copy,setter方法進行Copy操作,與retain處理流程一樣,先舊值release,再Copy出新的對象,retainCount為1。這是為了減少對上下文的依賴而引入的機制。5,nonatomic,非原子性,不加同步,多線程ViewControllerdidReceiveMemoryWarning(87題談談你對ARC解ARC是iOS5ARC(AutomaticReferenceCounting)。簡單地說,就是代碼中自動加管理部分代碼。有一點,ARC并不是GC,它只是一種代碼靜態(tài)分析(Staticyzer)工具?;镜腁RC代碼中不能使用retainrelease,retain, [superdealloc])不能使用NSAllocateObject,不能在Cidvoid*間的如果cast(bridge不能使用NSAutoReleasePool、而需要@autoreleasepool 不能使用“new(如果使用會有下面的編譯錯誤”Property’ssynthesizedgetterfollowsCocoanamingconventionforreturning‘owned’ARCxCode內存操作的代碼(如:retain,releaseARC能在iOS4iOS5weakrefrences能在iOS5程在去掉所有的assign性變?yōu)槭褂肁RC不能直接調用dealloc能調用retain,release,autorelease,reraubCount括@selector(retain)的方式也不行也不能在dealloc去掉[superdealloc]ARC父deallocCoreFoundation可以用CFRetain,CFRelease不能在使用NSAllocateObjectNSDeallocateObject不能在c建一個Objective-idvoid*之間沒有簡便的轉換方法,同樣在Objective-ccoreFoundation函數(shù)不能再使用NSAutoreleasePoolARC了@autoreleasepool代替 區(qū)(不能再使用outlet當使用weakStoryBoardnib層對象要用strongweak本的assign,strong當于alloc與dealloc語意相反,alloc是創(chuàng)建變量,dealloc是釋放retain應release,retain留證(void)setName:(NSString*)name{[nameretain];[mynamerelease];myname=name;}NSString*newname=[[NSStringalloc]initWithString:@"John"];[aClasssetName:newname];我們來看一看newname的計數(shù)是怎么變化的。首先,它被alloc,count=1;然后,在setName中,它被retain,count=2;最后,用戶自己釋放newname,count=1,myname指向了newname。這也解釋了為什么需要調用[mynamerelease]。我們需要在給myname賦新值的時候,釋放掉以前老的變量。retain之后直接dealloc對象計數(shù)器沒有釋放。alloc與release配對使用,因為alloc量的計數(shù)加1。所以在調用alloc之后,一定要調用對應的release。另外,在release一個變量之后,他的值仍然有效,所以最好是后面緊接著再var=nil。<>=“object”;name=”object”@implementation(void)setAge:(int)newAge{self.age=newAge;}什么是retainCount返回當前內存的計數(shù)值。當內存被開辟后,默認的計數(shù)為1以下每行代碼執(zhí)行后,對象的retaincount分別是多少*=[[alloc]init];[[[比如說它是否已經被釋放,做一些操作。但是實際上它retainCount還是1,沒有被釋放掉,要在UITableViewController的dealloc里面才被釋放掉(這里舉個例子,一般retain的對象都是在assi于單據(jù)型如NSnteer,oube,bol,eta和co戶象,op用當指一對象,也指同的象時,果assgna果,調用會cash如cpy的式a和b自自的存就以決個題retin會數(shù)加,可解決ssin問。另外: onaomi用決編器成getesetr是為子作在線環(huán)下原子操是要,則可引錯的果加了tom,tte函會成面樣:if(property!=newValue){ property= 答:utoeleserelasAuoreeasOjectAutrelaseoooooObecelesRulooAutrelaseooreeaspooCalStakRunooAutoelesepolpoolbjetutoelese)rleaRulooUITimrcal,deegaecll,unlopunloU,Tmercal,deleatecal,Ruloo。for(inti=0;i<someLargeNumber;{NSString*string=@”Abc”;string=[stringlowercaseString];string=[stringstringByAppendingString:@"xyz"];NSLog(@“%@”,string);}autorelease和回收機制(gc)有什么關系?OS有沒有回收ObjectiveC中的protocal@protocalobj里面的協(xié)議就如同java里面的interfaceObjectiveC中的selector么你可以理解@selector()就是取類方法的編號,他的行為基本可以等同C語言的中函數(shù)指針,只不過C語言中,可以把函數(shù)名直接賦給一個函數(shù)指針,而Objective-C的類不能直接應用函數(shù)指針,這樣只能做一個@selector語法來取.它的結果是一個SEL類型。這個類型本質是類方法的編號(函數(shù)地址)。ObjectiveC中的category添加方法(Methods)。你只需要知道這個類的公開接口,不需要知道類的源代碼。需要注意的是,類別不能為已存在的類添加實例變量(InstanceVariables)。的功能(沒有包含類A的.h文件),也就不會看到依附類A存在的類別。iOSSDK中廣泛運用這種類別定義法觀者式ontollr向efaltNtifcatonCnte添自的noifiatin其類個notiicaio(icaionueuwDiUnladdealo。什么是KVCKVO?Notification、delegateKVO同?KVOObjCKVC,即是指NSKeyValueCoding,一個非正式的Protocol,提供一種機制來間接對象的屬性。KVOKVCKey-ValueObservingKVO)KVC對象的KVCkeypath值的變化。delegatenotification,delegate值就是delegate果。和delegate一樣,KVO和NSNotification的作用也是類與類之間的通信,與delegate不同的是1)這兩個都是負責發(fā)出通知,剩下的事情就不管了,所以沒有返回值;2)delegate以ViewControllerloadView,viewDidLoad,viewDidUnload定答:viewDidLoad在viewnib文件初始化時調用,loadView在controller的view為nil時調用。此方法在編程實現(xiàn)view時調用,view控制器默認會memorywarningnotification,當viewcontroller的任何view沒有用的時候,viewDidUnload會被調用,在這里實現(xiàn)將retain的viewrelease,如果是retain的IBOutletview屬性則不要在這里release,IBOutlet會負責release。ViewControllerdidReceiveMemoryWarning?UIViewController類cell的時候,程序會首先通過調用dequeueReusableCellWithIdentifier:cellType方法,到復用隊列中去尋找標示符為“cellType”的cell,如果找不到,返回nil,然后程序去通過調用[[[UITableViewCellalloc]initWithStyle:stylereuseIdentifier:cellType]autorelease]來創(chuàng)建標示符為“cellType”的UIViewCALayer別UIViewanimateWithDuration:animations簡述UIView理UIView對象中支持動畫的幾個屬性 iosUIViewUIKit每個視圖對象的背后都有一個CoreAnimation是一CALayer渲和MacOS不同的是,ios將CoreAnimation集成到視圖渲染實現(xiàn) 。由于SDK中UIKit提供了透的接口,開發(fā)者大部分情況下,不必去關心和直接CoreAnimation。但是如果要實現(xiàn)特別復雜的渲染和動畫,就需要使用到CoreAnimationCoreAnimation基當視圖的drawRectCoreAnimation把和視圖對象相關聯(lián)的層在層樹的層次結構中??梢栽趯訕渲刑砑犹厥鈱樱瑢崿F(xiàn)態(tài)渲染樹:運行在單獨的線程上,不影響app程缺點:由于層需要額外的緩存數(shù)據(jù),因此會耗費的內存補充面ObjectC中創(chuàng)建線程的方法是什么?如果在主線執(zhí)行代碼,方法是什么?如果想延時執(zhí)行代線程創(chuàng)建有三種方法:使用NSThread創(chuàng)建、使用的dispatch、使用子類化的NSOperation,然后將其加入NSOperationQueue;在主線程執(zhí)行代碼,方法是performSelectorOnMainThread,如果想延時執(zhí)行代碼可以用performSelector:onThread:withObject:waitUntilDone:2、做過的項目是否涉及網絡功能,使用什么對象完成網絡功能?答案:ASIHTTPRequestNSURLConnection3、介紹下NSURLConnection及+sendSynchronousRequest:returningResponse:error:與–initWithRequest:delegate:兩個方法的區(qū)別?答案 +sendSynchronousRequest:returningResponse:error:是同步數(shù)據(jù),即當前線程會阻塞,并等待request的返回的response,而–initWithRequest:delegate:使用的是異步加載,當其完成網絡后,會通過delegate4、iOS試在項目什么時候選擇使用,什么時候選擇項目中使用NSOperation優(yōu)點是NSOperation的高度抽象,在項目中使用它,會使項目的程序面試時,面試官會先問一些,是否了解block,是否使用過block,這些問題相當于開場白,往往是下面使用block使用delegate首先要了解什么是委托模式,委托模式在iOS其在設計模式中是適配器模式中的對象適配器,Objective-Cid節(jié): 使用block回調的block定義在委托對象函數(shù)內部,使代碼更為緊湊;適配對象不再需要實現(xiàn)具體某個protocol,代碼更為簡潔。多線程與Block使用dispatch_async編程實例dispatch_asyncvoiddispatch_async(dispatch_queue_tqueue,dispatch_block_t功能:在指定的隊列里提交一個異步執(zhí)行的block通過queue控制blockfinishBlock6、在應用中如何保存數(shù)據(jù)?通過或CoreData保存在文件數(shù)據(jù)庫7、什么是答案:coredata架是apple、持補充答案:上面是翻譯的,按我個人理解coredata提供一種一機制,讓我們可以方便的把內存中對象,及對象間的關系,映射到coredata,然后由它為我們持久化數(shù)據(jù)。相比普通的文件數(shù)據(jù)庫 功能更強大,不需要我們先將對象數(shù)據(jù)format成SQL句,存入數(shù)據(jù)庫,再用select語句讀出,而現(xiàn)在是從內存到coredatacoredatamanaged的對象,這里是coerdata框架的實現(xiàn)細節(jié)。BTW:其他常用的持久化方法:存入到文件、存入到NSUserDefaults(系統(tǒng)plist)。9、什么是NSManagedObject

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論