iOS面試 iOS面試經典題 NO 9

2021-06-29 01:39:30 字數 3216 閱讀 2106

1、上傳檔案中文檔名亂碼問題

在ios客戶端將檔名用url encode編碼,然後在服務端用url decode解碼。

客戶端:

nsstringencodingenc=nsutf8stringencoding;

[request setdata:datawithfilename [filename stringbyaddingpercentescapesusingencoding:enc]

服務端:

string filename=request.getparameter(「upload_file」);

filename=urldecode.decode(s,」utf-8」);

2、mac 64 bit device

有時從svn更新工程後,scheme會顯示為mac 64 bit device,並且不允許執行程式。這時只需要重新設定一下target的deploymenttarget就好(設定為模擬器或除錯裝置)。

3、去除除錯程式的nslog

編譯引數optimize level根據不同的版本設定。例如對於debug版本是none,對於release版本是fastest,smallest。這樣,我們可以根據這個引數來重新定義nslog函式:

#ifndef __optimize__

#define nslog(...)nslog(__va_args__)

#else

#define nslog(...) {}

#endif

4、設定 imagepicker 的大小

imagepicker 在 popover controller 總是以預設大小顯示,設定 popovercontentsize 屬性似乎無用。解決辦法是將imagepicker 「包含」到乙個定製的 viewcontroller 中,然後再 presentpopover 這個 viewcontroller :

uiviewcontroller *containercontroller = [[uiviewcontroller alloc] init];

containercontroller.contentsizeforviewinpopover = cgsizemake(600,self.view.frame.size.height);

[containercontroller.viewaddsubview:_imagepicker.view];

_popcontroller= [[uipopovercontroller alloc] initwithcontentviewcontroller:containercontroller];

cgpoint p=[self.view convertpoint:button.center

fromview:sender.superview];

[_popcontroller presentpopoverfromrect:(cgrect)

inview:self.view

permittedarrowdirections:uipopoverarrowdirectionany

animated:yes];

[_imagepicker.view setframe:containercontroller.view.frame];// 很重要

注意,popover的寬度最多600。此外,_imagepicker 每次 presentpopoverfromrect 之前都必須 init一次,否則顯示位置不正確。

5、警告:no previous prototye for function

根據c規範, 如果函式沒有引數,使用void作為函式引數。

函式宣告應使用 「void functiona(void);」,而不能是」void functiona();」.

6、陣列排序

方法一:

- (nscomparisonresult)compare:(person *)otherobject

nsarray *sortedarray;

sortedarray = [drinkdetails sortedarrayusingselector:@selector(compare:)]; 

方法二: 

nssortdescriptor *sortdescriptor;

sortdescriptor = [[[nssortdescriptor alloc]initwithkey:@"birthdate"

ascending:yes] autorelease];

nsarray *sortdescriptors = [nsarray arraywithobject:sortdescriptor];

nsarray *sortedarray;

sortedarray = [drinkdetails sortedarrayusingdescriptors:sortdescriptors];

方法三:

nsarray *sortedarray;

sortedarray = [drinkdetails sortedarrayusingcomparator:^(id a, id b) ];

7、xcode 4的build目錄在**?(較老的題,估計不會用到!)

8、警告:no rule to process file

xcode試圖偵測每一種檔案的型別。當它認為檔案屬於「原始檔」型別(比如.js檔案),總是試圖將它加到 compile sources中並試圖編譯。解決這個警告的辦法是,把這類檔案從build phases的 compile sources移到 copy bundle resources中。

9、警告:'initwithframe:reuseidentifier:'is deprecated

該方法在後續版本中將被拋棄。請使用

-  initwithstyle:reuseidentifier:

10、itms-services不工作

如果你處於intranet中,請檢查是否可訪問上述位址。如果不能,你將無法使用ota來安裝應用程式。要求ios 4.0以上。

注:上述位址不能訪問並不會影響安裝。但是ios會在執行時通過上述位址檢查證書是否合法,如果安裝是合法的,ios會快取檢查結果(7天)。

iOS面試常見題

1.耶穌有13個門徒,其中有乙個就是出賣耶穌的叛徒,請用排除法找出這位叛徒 13個人圍坐一圈,從第乙個人開始迴圈報數,數到三排除,最後剩下的人就是叛徒 int people 13 int count 0 用來記錄報數 int number 13 記錄活著的人數 int i 0 記錄第幾個人正在報數 ...

iOS經典面試題 二

ios經典面試題 二 1 kvo,nsnotification,delegate及block區別 kvo就是cocoa框架實現的觀察者模式,一般同kvc搭配使用,通過kvo可以監測乙個值的變化,比如view的高度變化。是一對多的關係,乙個值的變化會通知所有的觀察者。nsnotification是通知...

面試經典題

include include char strcpy char strdest,const char strsrc 將源字串加const表明為輸入引數 bool 型別 if var int 型別 if var 0 float型別 const float epsinon 0.00001 if x e...