




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、頁碼:43/43面試題筆記注意事項:內存管理、多線程、核心動畫、表重用,推送,數據持久化。前程無憂、智聯招聘。1.編程題 寫一個View 從屏幕頂端動畫移動到底部interface TimingCurveViewController : UIViewController IBOutlet UIImageView *basketBall;- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event UIView beginAnimations:"movement" context:nil; UIView se
2、tAnimationCurve:UIViewAnimationCurveEaseIn; /<label id="code.timingcurve.easeIn"/> UIView setAnimationDuration:1.0f; UIView setAnimationRepeatCount:3; UIView setAnimationRepeatAutoreverses:YES; CGPoint center = basketBall.center; if(center.y > 85.0f) center.y -= 295.0f; basketBall
3、.center = center; else center.y += 295.0f; basketBall.center = center; UIView commitAnimations;2.寫一個內聯函數,將字符串“#ff3344”換成相應的UIColor對象- (UIColor *)getColor:(NSString*)hexColorunsigned int red,green,blue;NSRange range;range.length = 2; range.location = 0;NSScanner scannerWithString:hexColor substringWi
4、thRange:rangescanHexInt:&red; range.location = 2;NSScanner scannerWithString:hexColor substringWithRange:rangescanHexInt:&green; range.location = 4;NSScanner scannerWithString:hexColor substringWithRange:rangescanHexInt:&blue; return UIColor colorWithRed:(float)(red/255.0f)green:(float)(
5、green / 255.0f) blue:(float)(blue / 255.0f)alpha:1.0f;self.view setBackgroundColor:self getColor:"FF0000"3.將字符串“abcdefghijklmn”中的efg 截取出來替換攢成gfeNSString* str = "abcdefghij"str replace : "efg" ,“gfe”;4.寫一個取當前日期的方法,輸入字符串,格式如下2010-02-19/獲取當前時間 NSDate * nowDate = NSDate dat
6、e;/格式化日期,其實就是利用一個日期格式化對象把日期轉換成字符串了/先定義一個NSDateFormatter對象,然后給這個格式對象定義成自己想要的格式,然后用它去轉化其他日期即可 NSDateFormatter *format1=NSDateFormatter allocinit; format1 setDateFormat:"yyyy/MM/dd HH:mm:ss" NSString *str1=format1 stringFromDate:nowDate; NSLog(“%",str1);5.解釋類、對象、實例方法和實例成員 類:一類事物的抽象,有成員和方
7、法。 對象:類的實例化和具體化 實例方法:主要和類方法區別,類方法聲明時前面用加號,實例方法聲明時用減號 實例成員:主要和類成員區分,類成員加static,實例成員不需要。6.、類名、方法名、成員名、函數名、宏定義首字母哪些大寫,哪些小寫 大寫:類名,宏定義 小寫:方法名,成員名,函數名 7.public,protected,private區別 public:完全公開,在程序的任何地方都可以調用 private:和public相反,只能在該類內部調用 protected:只有自己和自己的子類可以調用 8.如何聲明一個帶兩個參數的實例方法和如何調用(舉例說明) 聲明:-(void)methodF
8、orParameter1:(NSString *)p1 Parameter2:(NSString *)p2; 調用:self methodForParameter1:"" Parameter2:"" 9.property (nonatomic, retain) Example *example; 寫出其setter和getter方法 getter - (Example *)example return _example; setter -(void)setExample:(Example *)aExample if (example != aExampl
9、e) example release; example = aExample retain; 10.static關鍵字的作用,extern關鍵字的作用 static:定義全局變量;定義類成員;定義內部函數 extern:聲明外部變量和外部函數,所聲明的變量和函數可能不在本文件內定義或實現 11.、解釋self self就是實例本身,在類里用self來調用自身的方法 12.什么時候使用繼承?什么時候使用類別 給一個類增加新的數據成員時用繼承,只是想擴展類的方法或覆蓋原來的方法時用類別 13.如何聲明一個類 class Example或者 interface Example end 14.寫出12
10、個與動態調用有關的方法 respondsToSelector 、performSelector、conformsToProtocol、isKindOfClass、isMemberOfClass 15.寫一個協議(舉例),協議有什么用 protocol ExampleProtocol <NSObject> - (void)exampleProtocol; end interface ExampleClass : NSObject id<ExampleProtocol> delegate; property (nonatomic,assign) id<ExampleP
11、rotocol> delegate; end 一個通過協議對外提供接口。 16.存放數字用哪個類,存放CGRect用什么類型 存放數字用NSNumber 存放CGRect用NSValue 17.快速枚舉(舉例) NSArray *array = NSArray array; for (id object in array) object test; 18.有哪些集合類可存放二進制數據類 NSArray/NSMutableArray,NSDictionary/NSMutableDictionary,NSSet/NSMutableSet/NSCountedSet,NSData存放二進制數據
12、19.文件處理用哪些類(寫12個) NSFileManagerNSUserDefaults open, fopen20.解釋retain、copy、assgin、autorelease retain,copy:計數器加一,區別是retain是原對象計數器加一,copy是創建一個新對象后,新對象計數器加一 assgin:簡單復制,計數器不變 autorelease:內存延遲釋放,計數器延遲減一 21.寫出歸檔相關類 NSKeyedArchiver、NSKeyedUnarchiver 22.寫出xml解析和網絡相關類 xml解析:NSXMLParser, kissXML GDATA網絡:NSCon
13、nection 23.常用的xml/json解析和http請求第三方包各寫出一個 xml:kissxml json:SBJSon http請求:ASIHttpRequest SDWebImage, 異步圖片加載器(界面流暢)異步mp3 異步video24.代理和通知的區別 代理是垂直的,通知可以平行的 25.寫出幾個常用的設計模式(兩個以上) MVC設計模式 單例模式 代理模式 通知模式 工廠模式26.新的關鍵字:class 類名;解決循環引用問題,提高性能class僅僅告訴編譯器,在進行編譯的時候把后面的名字作為一個類來處理。(1)class的作用:聲明一個類,告訴編譯器某個名稱是一個類(2
14、)開發中引用一個類的規范27.http和scoket通信的區別。 http是客戶端用http協議進行請求,發送請求時候需要封裝http請求頭,并綁定請求的數據,服務器一般有web服務器配合(當然也非絕對)。 http請求方式為客戶端主動發起請求,服務器才能給響應,一次請求完畢后則斷開連接,以節省資源。服務器不能主動給客戶端響應(除非采取http長連接技術)。iphone主要使用類是NSUrlConnection scoket是客戶端跟服務器直接使用socket“套接字”進行連接,并沒有規定連接后斷開,所以客戶端和服務器可以保持連接通道,雙方都可以主動發送數據。一般在游戲開發或股票開發這種要求即
15、時性很強并且保持發送數據量比較大的場合使用。主要使用類是CFSocketRef28.問,mvc設計模式是什么? 你還熟悉什么設計模式?設計模式:并不是一種新技術,而是一種編碼經驗,使用比如java中的接口,iphone中的協議,繼承關系等基本手段,用比較成熟的邏輯去處理某一種類型的事情,總結為所謂設計模式。面向對象編程中,java已經歸納了23中設計模式。mvc設計模式 ,可以將整個應用程序在思想上分成三大塊,模型,視圖,控制器,對應是的數據的存儲或處理,前臺的顯示,業務邏輯的控制。 Iphone本身的設計思想就是遵循mvc設計模式。代理模式:代理模式給某一個對象提供一個代理對象,并由代理對象
16、控制對源對象的引用.比如一個工廠生產了產品,并不想直接賣給用戶,而是搞了很多代理商,用戶可以直接找代理商買東西,代理商從工廠進貨.常見的如QQ的自動回復就屬于代理攔截代理模式在iphone中得到廣泛應用.單例模式,說白了就是一個類不通過alloc方式創建對象,而是用一個靜態方法返回這個類的對象。系統只需要擁有一個全局對象,這樣有利于我們協調系統整體的行為,比如想獲得UIApplication sharedApplication;任何地方調用都可以得到 UIApplication的對象,這個對象是全局唯一的。觀察者模式。 當一個物體發生變化時,會通知所有觀察這個物體的觀察者讓其做出反應。實現起來
17、無非就是把所有觀察者的對象給這個物體,當這個物體的發生改變,就會調用遍歷所有觀察者的對象調用觀察者的方法從而達到通知觀察者的目的。工廠模式public class Factorypublic static Sample creator(int which)if (which=1)return new SampleA(); else if (which=2)return new SampleB(); 29.代理模式和觀察者模式有什么區別?代理模式為兩個對象協同完成一個請求,代理模式常用于代理攔截,比如qq的自動回復。 觀察者模式則是一個對象發生變化,可以調用所有的觀察者對象的方法完成通知觀察者的
18、目的30.你在開發項目中時,用到了哪些數據存儲方式,iphone中常見的方式有哪些,各有什么區別?數據存儲五種形式的應用范圍和性能區別(core data, sqllite,對象序列化,文件直接讀寫,NSUserDefault(保存數據到temp文件夾中))性能比較:文件直接讀寫 >core data> 對象序列化> sqllite31.線程的常見方法有哪些,你是如何處理多線程的,多線程同步問題你了解么?線程創建的幾種方式,線程的加鎖,休眠,喚醒,解鎖,退出,多線程要考慮同步問題,解決同步問題的方式就是對某一資源加鎖,當一個線程操作本資源時,其他線程不能操作 。系統自帶線程池
19、(NSOpertionQueue)的作用凡是需要啟動多個線程的地方都可以使用NSOpertionQueue,加入到NSOpertionQueue中的對象都需要繼承NSOpertion。 NSOpertionQueue會在系統內部啟動一個獨立線程去執行這個被加入對象的main方法。常用的地方是用NSOpertionQueue 下載圖片,文件。如果是自己創建一個線程池,無非就是啟動多個線程的時候,把這些線程對象放到一個大數組中,如果需要啟動線程的時候,先從數組中找空閑線程來使用。自己管理線程池最大的難題是不好處理當啟動多個線程后,用戶在多個界面的跳轉的時候,對線程方法的回調管理。而NSOperti
20、onQueue可以很好的處理他。32.init和initwithobject區別(語法)init創建的對象不帶自動釋放33.你使用過json解析方式么,他們的底層是如何處理的你了解么?json解析的用法,用框架的用法簡單介紹:底層原理遍歷字符串中的字符,最終根據格式規定的特殊字符,比如號,號, : 號 等進行區分, 號是一個字典的開始,號是一個數組的開始, : 號是字典的鍵和值的分水嶺,最終乃是將json數據轉化為字典,字典中值可能是字典,數組,或字符串而已。34.xml解析的原理是什么,你還用過其他解析方式么?NSXMLParser。其他解析方式有自定義二進制解析,就是按字節去解析,電話會談
21、就是如此, 還可以是字符串之間用特殊符號連接的數據,將此數據用特殊符號可以分割成所用數據。35.協議是什么,有什么作用. 協議是通過網絡,計算機使用者進行通訊后,互相進行約定規定的集合。協議很像java中的接口,某個類實現協議后,就必須實現協議中規定的require的方法,比如一個類A, 一個類B都實現某“協議”后,這個類A的對象和B的對象都可以賦值給這個協議的類型變量,比如 id<協議> 變量名 = A類或B類的對象, 于是這個變量就36.類別有什么作用?類別的使用 。 類別有三大作用,1、 可以使本來需要在.h中聲明的方法放到.m文件中聲明,達到了可以使方法不對外公開。 2 、
22、可以方便的擴展類,甚至系統類都可以輕易擴展,維護了代碼原本的結構不受影響。3 、類別可以寫到不同的.h或.m文件中,可以分散代碼到跟類別的擴展功能相關聯的地方,方便查看。37.分線程回調主線程方法是什么,有什么作用? self performSelectorOnMainThread:selector(buttonGo2) withObject:nil waitUntilDone:YES;self performSelector:selector(buttonGo2) onThread:NSThread mainThread withObject:nil waitUntilDone:YES;需要
23、即時刷新ui控件的時候,經常使用。38.你說你做過iphone閱讀器,如果要讀取一個文本文件,請問你是如何處理編碼問題的?另外像pdf格式的文件,你如何讀取。iphone手機閱讀器中對于PDF格式的閱讀,可以直接用UIWebView控件顯示,也可以從網上下到很多直接讀取pdf格式的代碼直接從pdf中得到數據。Xcode4.1之后系統框架有所拓展。39.復雜表格動畫 -(void)insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; -(void)dele
24、teRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 40.你在開發大型項目的時候,如何進行內存泄露檢測的。 可以通過xcode的自帶工具run-start with performance tool里有instruments下有個leaks工具,啟動此工具
25、后,運行項目,工具里可以顯示內存泄露的情況,雙擊可找到源碼位置,可以幫助進行內存泄露的處理。41.你做iphone開發時候,有哪些傳值方式?View和view之間是如何傳值的? 對象的property屬性傳值。方法參數傳值。靜態方法傳值NSUserDefault傳值NSNotificationCenter還有用給指向指針的指針賦值的方式傳值。42.讓一個物體從界面中的一點運動到另外一點,有哪些方法?四種方式,1 beginAnimation(開始動畫) 2 線程 3 NSTimer(計時器) 4 圖層動畫(路徑),5 touch事件43.你了解哪些加密方式? Base64, MD5等常見加密方
26、式, 循環右移位等自定義加密方式45.NSNotificationCenter 的作用? 注冊方法,可以在不同的類中調用,常用于系統退出時調用方法保存系統狀態,有時可以用于界面之間的切換。46.問,軟件更新如果想增加原表字段的辦法? 軟件覆蓋更新可以保存上個軟件的數據庫,可以用sql語句增加原表中的字段。問,通信的同步異步問題,問,你下載電影的處理是同步還是異步。 通信則分為主線程中直接請求,服務器返回遲緩可導致程序卡死,如果啟動線程或線程隊列,則不影響主線程運行,說白了就是可以進行其他操作,可稱為異步。 下載電影用了對象池技術,為異步請求。問,線程同步是什么?如何實現? 多線程環境中,一個線
27、程訪問資源時,讓其他線程不能訪問此資源,表示同步。讓線程同步,就是對資源加鎖。NSCondition對象,調用lock方法。問,如果leaks不能檢測出內存泄露,還有什么其他的內存檢測工具。 Clang工具。問,軟件如何發布? 花99美元或299美元注冊個人或公司帳號后,可以下載開發者證書進行聯機調試(只需要把證書拖入xcode),選擇device進行編譯就可以在手機上運行。但如果想發布,還需要下載發布證書,添加到xcode編譯后app包上傳到蘋果官方網站審核,大約2個星期內可以發布成功。如果軟件內包含付費內容,則需要在程序中添加IAP,蘋果是要求付費分成。內存管理原則。1,誰創建誰釋放2,r
28、etain和release配對3,管理好自動釋放對象,用的時候加retain, 用完后release4,自動釋放池使用原則, 借鑒for循環1萬次不停創建自動釋放的對象的處理方式。-(void) threadAutoreleasePoolNSArray *someArray;NSAutoreleasePool *pool;pool = NSAutoreleasePool alloc init;int i;for(i = 0; i<1000000; i+)id object = someArray objectAtIndex:i;NSString *desc = object descri
29、ption;if(i%1000 = 0)pool release;pool = NSAutoreleasePool alloc init;問,iphone里是否支持try-catch支持,可以用于檢測異常,跟java的的try-catch的區別是多了個.問,你平時是如何學習iphone的,常去哪些外國網站。 (自己查)問,如果網絡出現問題,你連接通信的時候如何處理? 用NSError 判斷,如果不為空,則說明網絡開始連接就出現問題了。 如果是連接中出現了問題,則自動調用NSUrlConnection的錯誤處理的委托方法(最好記住方法是什么)。問,進度條在進度過程中如何過一會改變進度條的填充顏色
30、。 問,如何讓一個背景的顏色進行漸變。問,如何實現翻書特效,如何處理?問,你項目主要用哪些組件,(直接說出組件類名,顯得熟練)問,iphone和ipad里有什么區別,有哪些組件不一樣。問,你是從iphone幾開始做開發的,iphone3和iphone4 有什么區別。你如何做到兼容。iphone真機的內存是多少,iphone3,iphone4,ipad的分辨率都是多少?問,你的多方通話項目用的是發送音頻流技術么? 不是,我們用的電話回撥技術,服務器有聯通的接口,只需要把多個聯系人的電話發給服務器即可,為提高通信速度,使用二進制數據通信。問,xml,json,自定義而進制解析各自的特點和優勢劣勢。
31、問,你做過游戲開發么?熟悉opengl和coco2d技術么? 我做過游戲開發,比如j2me的飛機射擊,格斗等游戲。coco2d是一種大型開源2d游戲開發引擎,支持的功能更為豐富,如果游戲沒有用到太復雜的數理功能,可以把其中的部分功能處理提取出來,因為在iphone游戲開發中,只需要知道圖形處理(比如圖片的剪切和翻轉等)就可以實現把j2me的游戲轉為iphone游戲,把java代碼改變為c+即可(.mm或cpp文件),因為大多使用數組,所以改變起來差距不大,只是變語言而已。問: cell單元格中內容太多,以至于拖動時有卡的現象,如何處理? if(cell=nil) / 重復東西寫在內部 問:如何
32、讓tabbarController在屏幕右側顯示? 自定義tabbar問:如何處理iphone軟件升級問題iphone軟件新版本重新提交到app store之后,是可以自動給用戶提示信息的,如果你非要在軟件內加入升級按鈕可以在代碼中包含本版本的版本號,比如1.0,點升級按鈕后發送給服務器版本號,服務器檢測有新版本已經發布了,提示用戶可以升級并給用戶傳遞新版本的appstore鏈接地址,用戶確認后由固定的訪問appstore的代碼指定要相關地址,用戶即可在appstore頁面上確認下載。1、Objective-C的類可以多重繼承么?可以采用多個協議么?答:不可以多重繼承,可以采用多個協議。2、#
33、import和#include的區別是什么?import<> 跟 #import""有什么區別?#import能避免頭文件被重復包含的問題:1) 一般來說,導入objective c的頭文件時用#import,包含c/c+頭文件時用#include。使用include要注意重復引用的問題:class A,class B都引用了class C,class D若引用class A與class B,就會報重復引用的錯誤。2)#import 確定一個文件只能被導入一次,這使你在遞歸包含中不會出現問題。所以,#import比起#include的好處就是它避免了重復引用的問
34、題。所以在OC中我們基本用的都是import。import<> 包含iOS框架類庫里的類,#import""包含項目里自定義的類。3、Category是什么?擴展一個類的方式用繼承好還是類目好?為什么?答:Category是類目。用類目好,因為繼承要滿足a is a b的關系,而類目只需要滿足a has a b的關系,局限性更小,你不用定義子類就能擴展一個類的功能,還能將類的定義分開放在不同的源文件里, 用Category去重寫類的方法,僅對本Category有效,不會影響到其他類與原有類的關系。堆和棧的區別11、class的作用是什么?答:在頭文件中, 一般只
35、需要知道被引用的類的名稱就可以了。 不需要知道其內部的實體變量和方法,所以在頭文件中一般使用class來聲明這個名稱是類的名稱。 而在實現類里面,因為會用到這個引用類的內部的實體變量和方法,所以需要使用#import來包含這個被引用類的頭文件。 class的作用是告訴編譯器,有這么一個類,用吧,沒有問題 class還可以解決循環依賴的問題,例如A.h導入了B.h,而B.h導入了A.h,每一個頭文件的編譯都要讓對象先編譯成功才行,使用class就可以避免這種情況的發生12、KVC是什么?KVO是什么?有什么特點? KVC是鍵值編碼,特點是通過指定表示要訪問的屬性名字的字符串標識符,可以進行類的屬
36、性讀取和設置。可以通過訪問指定的字符串標識符,進行類屬性的讀取和設置 KVO是鍵值觀察,特點是利用鍵值觀察可以注冊成為一個對象的觀察者,在該對象的某個屬性變化時收到通知13、MVC是什么?有什么特性? MVC是一種設計模式,由模型、視圖、控制器3部分組成。 模型:保存應用程序數據的類,處理業務邏輯的類 視圖:窗口,控件和其他用戶能看到的并且能交互的元素 控制器:將模型和視圖綁定在一起,確定如何處理用戶輸入的類14、定義屬性時,什么情況使用copy、assign、retain?使用assign: 對基礎數據類型 (NSInteger,CGFloat)和C數據類型(int, float,doubl
37、e, char, 等等)使用copy: 希望獲得源對象的副本而不改變源對象內容時,對NSString使用retain: 希望獲得源對象的所有權時,對其他NSObject和其子類15.屬性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那種情況下用?assign用于簡單數據類型,如NSInteger,double,bool,retain和copy用于對象,readwrite是可讀可寫特性;需要生成getter方法和setter方法時readonly是只讀特性 只會生成getter方法 不會生成setter方法 ;不希望屬性在類外改變
38、assign是賦值特性,setter方法將傳入參數賦值給實例變量;僅設置變量時;retain表示持有特性,setter方法將傳入參數先保留,再賦值,傳入參數的retaincount會+1;copy表示賦值特性,setter方法將傳入對象復制一份;需要完全一份新的變量時。nonatomic非原子操作,決定編譯器生成的setter getter是否是原子操作,atomic表示多線程安全,一般使用nonatomic 16.id 聲明的對象有什么特性?答:Id聲明的對象具有運行時的特性,即可以指向任意類型的objcetive-c的對象; 17.Objective-C如何對內存管理的,說說你的看法和解決
39、方法?答:Objective-C的內存管理主要有三種方式ARC(自動內存計數)、手動內存計數、內存池。 18.內存管理的幾條原則時什么?誰申請,誰釋放遵循Cocoa Touch的使用原則;內存管理主要要避免“過早釋放”和“內存泄漏”,對于“過早釋放”需要注意property設置特性時,一定要用對特性關鍵字,對于“內存泄漏”,一定要申請了要負責釋放,要細心。19.哪些關鍵字生成的對象 需要手動釋放?答:關鍵字alloc 或new 生成的對象需要手動釋放 20在和property結合的時候怎樣有效的避免內存泄露?答:設置正確的property屬性,對于retain需要在合適的地方釋放 21.如何對
40、iOS設備進行性能測試?Profile-> Instruments ->Time Profiler22.Objectc的類可以多重繼承么?可以實現多個接口么?答:Object-c的類不可以多重繼承;可以實現多個接口,通過實現多個接口可以完成C+的多重繼承; 23.Category是什么?重寫一個類的方式用繼承好還是分類好?為什么?答:Category是類別,一般情況用分類好,用Category去重寫類的方法,僅對本Category有效,不會影響到其他類與原有類的關系。 24.描述一下iOS SDK中如何實現MVC的開發模式MVC是模型、視圖、控制開發模式,對于iOS SDK,所有的
41、View都是視圖層的,它應該獨立于模型層,由視圖控制層來控制。所有的用戶數據都是模型層,它應該獨立于視圖。所有的ViewController都是控制層,由它負責控制視圖,訪問模型數據 25. Object C中創建線程的方法是什么?如果在主線程中執行代碼,方法是什么?如果想延時執行代碼、方法又是什么?線程創建有三種方法:使用NSThread創建、使用 GCD的dispatch、使用子類化的NSOperation,然后將其加入NSOperationQueue;在主線程執行代碼,方法是 performSelectorOnMainThread,如果想延時執行代碼可以用performSelector:
42、onThread:withObject:waitUntilDone 26、iPhone5 的屏幕分辨率大小為 1136 640 ?答:屏幕分辨率:用于量度位圖圖像內數據量多少的一個參數。通常表示成ppi(每英寸像素Pixel per inch)。屏幕物理尺寸不變,分辨率越高,每單位面積內包含的細節(像素點)越多。 27、struct strA int a; float b; char c; expA; printf("%ld",sizeof(expA); 輸出結果為 12 ? 該問題涉及編譯器的“內存對齊”問題:現代計算機中內存空間都是按照byte(字節)劃分的,從理論上講
43、似乎對任何類型的變量的訪問可以從任何地址開始,但實際情況是在訪問特定變量的時候經常在特定的內存地址訪問,這就需要各類型數據按照一定的規則在空間上排列,而不是順序的一個接一個的排放,這就是對齊。對齊的作用和原因:各個硬件平臺對存儲空間的處理上有很大的不同。一些平臺對某些特定類型的數據只能從某些特定地址開始存取。其他平臺可能沒有這種情況, 但是最常見的是如果不按照適合其平臺的要求對數據存放進行對齊,會在存取效率上帶來損失。比如有些平臺每次讀都是從偶地址開始,如果一個int型(假設為 32位)如果存放在偶地址開始的地方,那么一個讀周期就可以讀出,而如果存放在奇地址開始的地方,就可能會需要2個讀周期,
44、并對兩次讀出的結果的高低 字節進行拼湊才能得到該int數據。顯然在讀取效率上下降很多。這也是空間和時間的博弈。通常,我們寫程序的時候,不需要考慮對齊問題。編譯器會替我們選擇適合目標平臺的對齊策略。當然,我們也可以通知給編譯器傳遞預編譯指令而改變對指定數據的對齊方法。但是,正因為我們一般不需要關心這個問題,所以因為編輯器對數據存放做了對齊,而我們不了解的話,常常會對一些問題感到迷惑。最常見的就是struct數據結構的sizeof結果,出乎意料。 對于結構體來說,按成員中所占字節最大的是float類型,占用4個字節,一共有3個成員,所以總的占用字節為:4 3 12. 可通過編譯器命令來設定: #p
45、rogma pack (2) 28、property語法中readonly/readwrite,atomic/nonatomic的作用,dynamic的作用? Property:Objective-C語言關鍵詞,與synthesize配對使用。xcode4.5以及以后的版本,synthesize可以省略。功能:讓編譯器自動編寫一對與數據成員同名的方法聲明來省去讀寫方法的聲明。聲明property的語法為:property (參數1,參數2) 類型 名字;如:property(nonatomic,retain) UIWindow *window; 其中參數主要分為三類:讀寫屬性: (readwr
46、ite/readonly)setter語意:(assign/retain/copy)原子性: (atomicity/nonatomic) 各參數意義如下:readwrite:同時產生settergetter方法readonly:只產生簡單的getter,沒有setter。 assign:默認類型,setter方法直接賦值,而不進行retain操作retain:setter方法對參數進行release舊值,再retain新值。copy:setter方法進行Copy操作,與retain一樣 atomic:原子性,它沒有一個如果你沒有對原子性進行一個聲明(atomic or nonatomic),那
47、么系統會默認你選擇的是atomic。原子性就是說一個操作不可以被中途cpu暫停然后調度, 即不能被中斷, 要不就執行完, 要不就不執行. 如果一個操作是原子性的,那么在多線程環境下, 就不會出現變量被修改等奇怪的問題。原子操作就是不可再分的操作,在多線程程序中原子操作是一個非常重要的概念,它常常用來實現一些同步機制,同時也是一些常見的多線程Bug的源頭。當然,原子性的變量在執行效率上要低些。關于異步與同步:并非同步就是不好,我們通常需要同時進行多個操作,這時使用異步,而對于程序來說,一般就是使用多線程,然而我們很多時候需要在多個線程間訪問共享的數據,這個時候又需要同步來保證數據的準確性或訪問的
48、先后次序。當有多個線程需要訪問到同一個數據時,OC中,我們可以使用synchronized(變量)來對該變量進行加鎖(加鎖的目的常常是為了同步或保證原子操作)。nonatomic:非原子性,是直接從內存中取數值,因為它是從內存中取得數據,它并沒有一個加鎖的保護來用于cpu中的寄存器計算Value,它只是單純的從內存地址中,當前的內存存儲的數據結果來進行使用。在多線環境下可提高性能,但無法保證數據同步。 29、OSI(Open System Interconnection)開放式系統互聯參考模型 把網絡協議從邏輯上分為了7層,試列舉常見的應用層協議。 注意問的是應用層協議,有些同學直接答了七層模
49、型。 在開放系統互連(OSI)模型中的最高層,為應用程序提供服務以保證通信,但不是進行通信的應用程序本身。Telnet協議是TCP/IP協議族中的一員,是Internet遠程登陸服務的標準協議和主要方式。它為用戶提供了在本地計算機上完成遠程主機工作的能力。FTP文件傳輸協議是TCP/IP網絡上兩臺計算機傳送文件的協議,FTP是在TCP/IP網絡和INTERNET上最早使用的協議之一,它屬于網絡協議組的應用層。 超文本傳輸協議 (HTTP-Hypertext transfer protocol) 是分布式,協作式,超媒體系統應用之間的通信協議。是萬維網(world wide web)交換信息的基
50、礎。SMTP(Simple MailTransfer Protocol)即簡單郵件傳輸協議,它是一組用于由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式,它幫助每臺計算機在發送或中轉信件時找到下一個目的地。時間協議(TIME protocol)是一個在RFC 868內定義的網絡協議。它用作提供機器可讀的日期時間資訊。DNS 是域名系統 (Domain NameSystem) 的縮寫,是因特網的一項核心服務,它作為可以將域名和IP地址相互映射的一個分布式數據庫。SNMP(Simple Network ManagementProtocol,簡單網絡管理協議)的前身是簡單網關監控協議(SG
51、MP),用來對通信線路進行管理。TFTP(Trivial FileTransfer Protocol,簡單文件傳輸協議)是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。端口號為69。 30、網絡傳輸層協議中,基于TCP/IP協議和UDP/IP的連接有什么區別?TCP:TransmissionControl Protocol 傳輸控制協議TCP是一種面向連接(連接導向)的、可靠的、基于字節流的運輸層(Transport layer)通信協議,由IETF的RFC 793說明(specified)。UDP 是User DatagramP
52、rotocol的簡稱, 中文名是用戶數據包協議,是OSI 參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務,IETF RFC 768是UDP的正式規范。 面向連接:是指通信雙方在通信時,要事先建立一條通信線路,其有三個過程:建立連接、使用連接和釋放連接。電話系統是一個面向連接的模式,撥號、通話、掛機;TCP協議就是一種面向連接的協議。面向無連接:是指通信雙方不需要事先建立一條通信線路,而是把每個帶有目的地址的包(報文分組)送到線路上,由系統自主選定路線進行傳輸。郵政系統是一個無連接的模式,天羅地網式的選擇路線,天女散花式的傳播形式;IP、UDP協議就是一種無連接協議。 3
53、1、簡述MVC模式中M、V、C分別指代什么及發揮的作用?MVC開始是存在于Desktop(桌面)程序中的,M是指數據模型,V是指用戶界面,C則是控制器,使用MVC的目的是將M和V的實現代碼分離。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。 視圖是用戶看到并與之交互的界面,視圖沒有真正的處理發生,不管這些數據是聯機存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數據并允許用戶操縱的方式。 模型表示企業數據和業務規則,模型返回的數據是中立的,就是說模型與數據格式無關,這樣一個模型能為多個視圖提供數據,由于應用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復
54、性。 控制器接受用戶的輸入并調用模型和視圖去完成用戶的需求,控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調用哪個模型構件去處理請求,然后再確定用哪個視圖來顯示返回的數據。 32、聲明property的語法中,retain、copy、assign的含義及作用?試寫出 property中帶retain和assign關鍵字,通過synthesize自動生成的的合成存取方法(set、get方法)的實現代碼。 getter分析:property (nonatomic, retain) test*aTest;property (nonatomic, copy) test*aTest;等效代碼:-(void)aTest return aTest; property (retain) test* aTest;prope
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年中國四苯硼鈉行業調查報告
- 2025年中國電網改造市場評估分析及投資發展盈利預測報告
- 2025年中國激光功率監視器行業市場發展前景及發展趨勢與投資戰略研究報告
- 腦梗死護理指南
- 理財培訓課件
- 2025-2030年中國140g瓦楞紙箱行業深度研究分析報告
- 中國濃縮魚油軟膠囊行業市場深度研究及投資戰略規劃建議報告
- 切樸機行業深度研究分析報告(2024-2030版)
- 中國六角鉆尾釘行業市場發展前景及發展趨勢與投資戰略研究報告(2024-2030)
- 2025年中國硅頻率控制器行業市場全景評估及投資前景展望報告
- 2025年度安全生產月培訓課件
- 2025春季學期國開電大本科《人文英語4》一平臺機考真題及答案(第七套)
- 2025年全國二卷高考英語作文深度解析及寫作指導
- 2025年河北省萬唯中考定心卷生物(一)
- 2025冬季四川成都湔江投資集團限公司招聘32人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年全國保密教育線上培訓考試試題庫帶答案(典型題)含答案詳解
- 甘肅蘭州2025年公開招聘農村(村務)工作者筆試題帶答案分析
- 大健康項目商業計劃書
- 2025全國交通運輸行業職業技能競賽學生組技術方案
- 常用儀表使用方法鐵道信號綜合實訓課件
- 2025云南黃金礦業集團股份限公司招聘114人易考易錯模擬試題(共500題)試卷后附參考答案
評論
0/150
提交評論