面試題目解析-ios常見問題_第1頁
面試題目解析-ios常見問題_第2頁
面試題目解析-ios常見問題_第3頁
面試題目解析-ios常見問題_第4頁
面試題目解析-ios常見問題_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

常見問storyboard產(chǎn)生原因:將與storyboard關(guān)聯(lián)的屬性刪除了,但是storyboard中還保持之前所關(guān)聯(lián)的屬性。點(diǎn)擊viewcontroller發(fā)現(xiàn)感嘆號。點(diǎn)擊感嘆號的左邊的x二文本框中怎么輸入顯示類似輸入時(shí)候的東東X選 ,表示當(dāng)編輯的時(shí)候,會(huì)出出現(xiàn)X效果:常見問一.Storyboard報(bào)錯(cuò)原因:1.沒有實(shí)現(xiàn)btnClick這個(gè)方法。解決方式一:添加這個(gè)btnClick這個(gè)方法點(diǎn)擊viewcontroller發(fā)現(xiàn)感嘆號沒,和之前一樣,x了它,就哦了。;OC中冒號也算做方法名的一部分喔,記??!報(bào)錯(cuò)原因:OC語定:不允許直接修改某個(gè)對象的結(jié)構(gòu)體屬性的成_btnframeC語言中的,里面可以定義許多屬性,但是不能定義方法,而對象是即可以定義屬性又可//既然不能直接修改對象中的結(jié)構(gòu)體屬性成//先取出結(jié)CGRectframe=//修改結(jié)構(gòu)frame.origin.y-=//將修改后的結(jié)構(gòu)體重新賦值回_btn.frame=//先取出yCGFloaty=//修改yy-=//重新設(shè)置_btn的y值,其他屬性和_btn保持不_btn.frame=CGRectMake(_btn.frame.origin.x,y,三.Id報(bào)錯(cuò)原因:id類型不能使用點(diǎn)語法//利用get方法獲取tagNSIntegeri=[sender//將id強(qiáng)轉(zhuǎn)為UIButton*button=(UIButton//就能使用點(diǎn)語法獲取tag,編譯器很笨的,他只會(huì)根據(jù)當(dāng)前類型,去判斷是否能使用這個(gè)語法。一般強(qiáng)轉(zhuǎn)為對NSIntegeri=解決方法:將這個(gè)選項(xiàng)取消勾選_btn.transform=CGAffineTransformMakeTranslation(0,_btn.transform=CGAffineTransformMakeScale(1.2,這樣操作是創(chuàng)建新的ranform然后賦值,給按鈕的ranform,第二次賦值的會(huì)把之前賦值的給覆蓋,所以會(huì)達(dá)不到想要的效果。解決方法_btn.transform=CGAffineTransformMakeTranslation(0,//在之前的transform情況下,繼續(xù)添加縮放的形變_btn.transform=CGAffineTransformScale(_btn.transform,1.2,floati=//會(huì)自動(dòng)四舍五入,不保留NSLog(@"%0.f",i);//打印結(jié)果//強(qiáng)轉(zhuǎn)類型不會(huì)四舍五intj=NSLog(@"%d",j);//打印結(jié)果 intb= inta=4*(b==2? NSLog(@"%d",a);打印出 inta=4*b==2? NSLog(@"%d",a);打印出 由此得出*==優(yōu)先級高,先算*,在算解決方法九.打代碼時(shí),Xcode解決方法點(diǎn)擊AutolayoutView的UserInteractionEnabled勾選掉了。解決辦法:UserInteractionEnabled常見問一.權(quán)錯(cuò)誤會(huì) 錯(cuò)誤報(bào)錯(cuò)原因,利用下劃 了@package這個(gè)權(quán)限里的東西被@package修飾的成員屬性只能在同一個(gè)框架內(nèi)部才允許。否則會(huì)linkerro。@private實(shí)例變量只能被它的類@protected實(shí)例變量能被它的類和子類@public實(shí)例變量可以被任何類常見問解決方式二 將模擬器還二.2d表示保留兩位02d0三.Plist文件_dict=[NSArray這個(gè)pist文件是一個(gè)字典,正確的解析此plist//2.根據(jù)文件路徑加載字_dict=[NSDictionary四,給程序拖的時(shí)候,一定要注意,如下圖勾選的,都要勾選中 粘貼剪切等操有時(shí)候我們需要禁用UITextField的雙擊出現(xiàn)copypaste的功能,然而UITextField本身沒有直接設(shè)置用戶粘貼剪切操作等方法,但是可以重載canPerformAction方法來實(shí)現(xiàn)。UITextField,canPerformAction只需覆蓋canPerformAction:withSender方法就可以,canPerformAction:withSender屬于UIResponder類的。-(BOOL)canPerformAction:(SEL)actionwithSender:(id)sender Controller* Controller=[UI Controllershared if( Controller){ Controller Visible=}return}常見問UIButtonUILabel,UIButton原因:1.UILabel是繼承UIView的,默認(rèn)不能點(diǎn)擊事件。UIButton是繼承UIControl能夠點(diǎn)擊事件將UIButton添加到UILabel,他們之間的關(guān)系是UILabel是UIButton的父視圖,父視圖都不能點(diǎn)擊事件,自然而然不會(huì)將事件傳遞給子視圖,因此UIButton也不能點(diǎn)擊事件了。思維指導(dǎo):有些人會(huì)認(rèn)為UIControl不是繼承UIView的嗎,都是繼承UIView,為什么單獨(dú)繼承UIControl可以點(diǎn)擊事件,繼承UIControl的父類UIView不能事件了,這是因?yàn)槲覀円话阍诟割惱飳?shí)現(xiàn)的都是一些共用的屬性和方法,而在子類中具體實(shí)現(xiàn)子類特有的方法。因此在UIControl實(shí)現(xiàn)了點(diǎn)擊的特有方法,即繼承UIControl才能點(diǎn)擊事件。-{[super//Disposeofanyresourcesthatcanbe}大部分成員屬性的初始化應(yīng)該在viewDidLoad-{[super}最牛解決方法:在一開始就將didReceiveMemoryWarning這個(gè)方法刪掉。刪掉不會(huì)影響程序運(yùn)行常見問對象方法和類方法問題(此問題基礎(chǔ)好的,基礎(chǔ)稍微差的,可以先放著,以后回顧的//創(chuàng)建視圖的工廠方+(UIView*)rowViewInitWithicon:(UIImage*)iconshuju:(NSString{rowView*viewtext=[[NSBundlemainBundle]loadNibNamed:@"rowView"owner:niloptions:nil][0]; ouxiangsetBackgroundImage:iconforState:UIControlStateNormal];viewtext.mingzilablexiao.text=shuju;

//重點(diǎn)是這 這是往通知中心添加一條通知指定通知名稱為 當(dāng)觀察者self到back通知是就調(diào)[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(callback) 以下是報(bào)錯(cuò)信息+[rowViewcallback]:unrecognizedselectorsenttoclass2013-11-2615:31:02.581lianxirenlianxi[1266:c07]***Terminatingappduetouncaughtexception'NSInvalidArgumentException',reason:'+[rowViewcallback]:unrecognizedselectorsenttoclass0x79d8'reasonrowViewcallback]:看到報(bào)錯(cuò)原因里的+就想到?jīng)]有實(shí)現(xiàn)callback這個(gè)類方法//由于self這個(gè)觀察者是在類方法中添加的,指的是一個(gè)類,所以在調(diào)用方法的時(shí)候,他會(huì)去類方法中找有沒//由于實(shí)現(xiàn)的callback為對象方法所以會(huì)報(bào) 解決方法把 寫成類方 供觀察者調(diào)return}//callback方-{}解決方法,將callback//callback方+{}Viewclassclass。Xib中owner的class是用來告訴xib中的Viewdogdog步驟二:添加控件就跟xib中的view連線。添加一些事件就給xib中的File’sOwner[UIViewanimateWithDuration:0.5 tmpFrame=sender.superview.frame;tmpFrame.origin.x=self.view.frame.size.width;sender.superview.frame=tmpFrame;sender.superview.alpha=0;}completion:^(BOOLfinished)intindex=[self.view.subviewsindexOfObject:sender.superview];[sender.superviewremoveFromSuperview];[UIViewanimateWithDuration:0.2for(inti=index;i<self.view.subviews.count;{UIView*chlid=self.view.subviews[i];CGRecttmp=chlid.frame;tmp.origin.y-=kViewH+1;chlid.frame=tmp;}//在這判斷刪除按鈕是否允許點(diǎn)中,會(huì)在動(dòng)畫執(zhí)行完畢的時(shí)候,判斷_removeIteam.enabled=//而在執(zhí)行代碼塊之外,判斷刪除按鈕是否允許點(diǎn)中是不對的,因?yàn)閯?dòng)畫是在運(yùn)行的,所以在執(zhí)行動(dòng)畫的時(shí)候,就已經(jīng)執(zhí)行完判斷語句了,而這時(shí)最后一個(gè)視圖還沒銷毀掉,因此刪除按鈕不會(huì)不允許選中,也就不能//_removeIteam.enabled=1.出現(xiàn)的問題,創(chuàng)建xib#pragmamark- :(UIBarButtonItem*)senderNSString*imgName=[NSStringNSString*labelName=RowView*rowView=[RowViewrowViewWithIcon:imgNameUIView*lastView=[self.view.subviewsintnextY=lastView.frame.origin.y+kSpace+kItemHW//設(shè)置rowViewCGRectcg=CGRectMake(0,nextY,kItemHW,kItemHW);[self.view}錯(cuò)誤原因:設(shè)置rowView的寬度為kItemHW,因此會(huì)有以上的出現(xiàn)的子視圖不能點(diǎn)擊事件。還有一點(diǎn)需要注意,將子視圖添加到父視圖尺寸之外的位置,只要還在屏幕上就會(huì)顯示子視圖,解決方法:CGRectcgCGRectMake(0nextY,rowView.frame.size.width注意UIToolBar中不能使用viewWithTag這個(gè)方法,獲取UIToolBar里的子視圖。因?yàn)閁IToolBar里的子視圖都是UIBarButtonItem,UIBarButtonItem是繼承NSObject的,因此不能使用viewWithTag獲取UIToolBar里的子視圖,-(UIView{1.如果當(dāng)前tag和當(dāng)前視圖tag相同,直接返回if(self.tag==tag)returnself;2.如果和當(dāng)前視圖tag不相同,遍歷當(dāng)前視圖的所有子控件,查找對應(yīng)的tag。for(UIView*viewinself.subviews){3.如果view不是UIView類或者UIView的子類直接返回nilif(![viewisKindOfClass:[UIViewclass]])returnnil;if(tag==view.tag) 4.返回有相匹配的視r(shí)eturn}}5.如果都沒有找到,返回nil.returnnil;}常見問//這樣定義是錯(cuò)的,結(jié)構(gòu)體不是對象, CGRect*frame=self.view.frame;結(jié)構(gòu)體變量正確定CGRectframe=self.view.frame;CGPointcenter=self.view.center;CGSizesize=正確打印當(dāng)對象被銷毀,一定會(huì)調(diào)用的方法,可以用這個(gè)方法,判斷對象在什么時(shí)候銷毀,//工廠方法,簡化對象的實(shí)例+(id)provinceWithName:(NSStringARC有些同學(xué)在創(chuàng)建項(xiàng)目的時(shí)候忘記點(diǎn)ARC了,導(dǎo)致一些成員屬性都莫名其妙的釋放了。然后出現(xiàn)了一系列莫名其妙的錯(cuò)誤。在滾動(dòng)UITableView的時(shí)候出現(xiàn)野指針錯(cuò)誤。馬上想到很可能是非ARC弄的。下圖為怎么查看項(xiàng)目是否是非ARC。在非ARC中沒有強(qiáng)的概念,因此下圖的成員變量是沒有被強(qiáng)的在看看下圖,allPro數(shù)組沒有通過alloc調(diào)用,沒有調(diào)用alloc kFooter:@"不錯(cuò)kFooter:@"很好}所以在滾動(dòng)的時(shí)候會(huì)出現(xiàn)野指針錯(cuò)誤,因此需要將項(xiàng)目改成ARC兩個(gè)勾都得選中,然后一直點(diǎn)確認(rèn)就OK6.assigncopy,其他對象類型strong。而控制器中視圖采用的策略需要根據(jù)情況而定。11.29常見問想在點(diǎn)擊cell時(shí)做些操作,方法了下面兩個(gè)方法太相似了,很容易//當(dāng)點(diǎn)擊一行cell時(shí),會(huì)調(diào)用這個(gè)方(void)tableView:(UITableView*)tableViewdidSelectRowAtIndexPath:(NSIndexPath//當(dāng)取消選擇一行cell時(shí),會(huì)調(diào)用這個(gè)方(void)tableView:(UITableView*)tableViewdidDeselectRowAtIndexPath:(NSIndexPathNSString*str=@"NSIntegeri=[strintegerValue];碰到這種情況,可以在打印字符串的時(shí)候在占位符兩邊各加一個(gè)數(shù)字//-(NSString*)stringByTrimmingCharactersInSet:(NSCharacterSetNSCharacterSet對象可以通過類方法//創(chuàng)建空格和換行字符[NSCharacterSet//創(chuàng)建空格字符[NSCharacterSet下圖的警告意思是:初始化時(shí),類型指向不匹配,應(yīng)該用NSArray*而不是YZ找到原因后,然后 方法是怎么解決方式:將NSArray*改成id11.30常見問錯(cuò)誤原因:說YZViewController-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPathtableView內(nèi)部自動(dòng)會(huì)調(diào)用以下方法添加cell。[tableViewaddSubview:cell];如果返回的cell為空,也就意味著生成下面一行代碼addSubview是將右邊參數(shù)添加到數(shù)組中保存起來,而數(shù)組是不能添加空值的。所有集合對象都不能出傳空。例如數(shù)組,字tableView的數(shù)據(jù)源必須實(shí)現(xiàn)兩個(gè)方法。-(NSInteger)tableView:(UITableView*)tableView-(UITa

溫馨提示

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

評論

0/150

提交評論