開發(fā)問題匯總和筆記

一 在蘋果的api中,NSInteger是個封裝,它會自動識別當(dāng)前操作系統(tǒng)的位數(shù),返回最大數(shù)據(jù)類型,CGFloat在32位數(shù)是float 在64位位double,對于需要兼容的程序而言,需要用到CGFloat ,當(dāng)然從長久考慮盡量使用CGFloat 盡管32位上相比float增加了一些menory footprint的銷毀

二 CFindex;在core Foundation 框架中一般用于數(shù)組的序號和參數(shù)的返回值的大小,位數(shù)隨著機器的位數(shù)增加而增加,和int位數(shù)無關(guān)

三 iOS- "_OBJC_CLASS_$_WKWebView", referenced from:

解決方法: 在對ios8以上系統(tǒng)引進WK框架時候,還需要適配ios7出現(xiàn)的錯誤,若最低版本試ios8,沒有這個錯誤,解決辦法是需要導(dǎo)入webkit框

四 Swift Struct 和 Class相同點和不同點

相同點:

1 定義屬性用于存儲值

2 定義方法用于提供功能

3 定義附屬腳本用于訪問值

4 定義構(gòu)造器用于生成初始值

5 通過擴展以增加默認(rèn)實現(xiàn)的功能

6 通過協(xié)議以對某類提供標(biāo)準(zhǔn)功能

Class附加的功能

1 類允許被繼承

2 類型轉(zhuǎn)換允許在運行時檢查和解釋一個類實例的類型

3 允許一個類實例釋放任何所被分配的資源

4 引用計數(shù)允許對一個類的多次引用

與 Objective-C 語言不同的是夭委,Swift 允許直接設(shè)置結(jié)構(gòu)體屬性的子屬性

在 Swift 中,所有的結(jié)構(gòu)體和枚舉類型都是值類型由驹。這意味著它們的實例赋朦,以及實例中所包含的任何值類型屬性,在代碼中傳遞的時候都會被復(fù)制。

Swift 中摇天,許多基本類型,諸如String恐仑,Array和Dictionary類型均以結(jié)構(gòu)體的形式實現(xiàn)泉坐。這意味著被賦值給新的常量或變量,或者被傳入函數(shù)或方法中時裳仆,它們的值會被拷貝腕让。

Objective-C 中NSString,NSArray和NSDictionary類型均以類的形式實現(xiàn)歧斟,而并非結(jié)構(gòu)體纯丸。它們在被賦值或者被傳入函數(shù)或方法時,不會發(fā)生值拷貝静袖,而是傳遞現(xiàn)有實例的引用觉鼻。

在 Objective-C 中,你只能為 Objective-C 的類類型(classes)定義類型方法(type-level methods)队橙。在 Swift 中滑凉,你可以為所有的類统扳、結(jié)構(gòu)體和枚舉定義類型方法。每一個類型方法都被它所支持的類型顯式包含畅姊。

Swift 中的錯誤處理和其他語言中用try咒钟,catch和throw進行異常處理很像。和其他語言中(包括 Objective-C )的異常處理不同的是若未,Swift 中的錯誤處理并不涉及解除調(diào)用棧朱嘴,這是一個計算代價高昂的過程。就此而言粗合,throw語句的性能特性是可以和return語句相媲美的萍嬉。

五 Taggend Pointer

在2013年9月,蘋果推出iPhone5s,與此同時,5s搭載采用64位的a7處理器 為了節(jié)省內(nèi)存和執(zhí)行效率,蘋果推出Taggend Pointer概念,對于64位系統(tǒng),引入Tagged Pointer后,相關(guān)邏輯內(nèi)存減少一半內(nèi)存,以及3倍的速度.就是把一個對象拆分成2部分,一部分直接保存數(shù)據(jù),另一部分作為特殊標(biāo)記,表示一個特殊的指針,不指向任何地址 在Taggend Pointer 對象中沒有isa指針,因為它沒有真正對象.

六 Multiple methods named 'count:' found with mismatched result, parameter type or attributes,意思是方法命名沖突,編譯器找不到合適的方法用在這里隙疚,這是在ARC環(huán)境下才會出現(xiàn)的問題壤追,非ARC就沒有這個問題,解決的方法有兩個供屉,1行冰,把程序改成非ARC,但是這樣工作量會很大伶丐,尤其是對一些大的項目來說很難實現(xiàn)悼做,2,在函數(shù)前面強轉(zhuǎn)一下哗魂,告訴編譯器到什么地方調(diào)用合適的方法肛走,比如在這個程序里我的解決辦法就是[(NSMutableArray*)[LetterResultArr objectAtIndex:section] count],這樣就沒錯了

七 label同時設(shè)置sizeToFit录别,NSTextAlignmentCenter不起作用

入坑好長時間原因詳見:https://stackoverflow.com/questions/28579776/nstextalignmentcenter-for-uilabel-not-working/35066864#35066864?newreg=725179871da349d698d31b72bdbb3565

解決辦法:

sizeTofit方法調(diào)用必須在創(chuàng)建label frame之前,不能調(diào)換位置,alignment屬性同樣也是寫在frame之前,具體寫法詳見如下:

NSMutableAttributedString * attributedString = [[NSMutableAttributedString alloc] initWithString:tcinfo];? ? ? ? NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];? ? ? ? paragraphStyle.alignment = NSTextAlignmentCenter;? ? ? ? [paragraphStyle setLineSpacing:4];? ? ? ? [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [tcinfo length])];? ? ? ? ? ? ? CGRect cardRect = [tcinfo boundingRectWithSize:CGSizeMake(self.frame.size.width - 10, MAXFLOAT) options: NSStringDrawingUsesLineFragmentOrigin |NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:gxAlterconectLable.font} context:nil];? ? ? ? [gxAlterconectLable sizeToFit];? ? ? ? gxAlterconectLable.frame = CGRectMake(5, self.frame.size.height/3.0, self.frame.size.width - 10, cardRect.size.height);? ? ? ? [self addSubview:gxAlterconectLable];? ? ? ? [gxAlterconectLable setAttributedText:attributedString];

八 ?iOS 常見的卡頓:

1 CPU卡頓:

? 原因:App主線程在CPU中顯示內(nèi)容,比如布局計算,圖形解碼,文本繪制等,隨后CPU把計算好的結(jié)果提交給GPU(圖形處理器),由GPU進行交換,合成,渲染,隨后GPU會把渲染結(jié)果提交到幀緩沖區(qū),等待下個垂直同步信號到來時顯示到屏幕上,由于垂直同步機制,在垂直同步機制時間內(nèi),CPU或者GPU沒有完成提交,則那一幀會被丟棄,等待下一次機會顯示,則這個時候顯示屏因為沒有新的刷新,會保留之前的內(nèi)容不變,就會造成卡頓.

優(yōu)化

* 盡量使用輕量級的對象.

* 不要頻繁使用UIView的相關(guān)屬性,如frame,bounds,transform等屬性,測試發(fā)現(xiàn)在UITabView上頻繁的創(chuàng)建視圖,修改視圖的frame等會造成32位系統(tǒng)機器卡頓,64位系統(tǒng)的不怎么明顯,UITabView使用頻繁,各種奇葩的需求,我們是在使用它時往往忽略了UITabView的性能.找工作面試官會問到UITabView的性能優(yōu)化相關(guān)的問題.

* 圖片的size最好和UIimageView的size保持一致,盡量不要做等比例壓縮等操作.

* 盡量把耗時的操作放在子線程中,比如網(wǎng)絡(luò)請求用block輕量級子線程完成,UI在主線程刷新.

2 GPU卡頓優(yōu)化

* 盡量避免在短時間內(nèi)加載大量的圖片,盡可能將多張圖片合成一張圖片顯示

* 盡量減少視圖層級和數(shù)量

* 減少透明的視圖(alpha<1),不透明的設(shè)置opaque為YES

* 盡量避免初選離屏渲染:

在openGL中,GPU渲染有2種渲染方式

(1) On - Screen Rendering :當(dāng)前屏幕渲染

(2) Off - Screen Rendering : 離屏渲染?

離屏渲染消耗的原因:

(1) 需要創(chuàng)建新的緩沖區(qū)

(2) 離屏渲染需要多次切換上下文環(huán)境朽色,先是從當(dāng)前屏幕(On-Screen)切換到離屏(Off-Screen);等到離屏渲染結(jié)束以后组题,將離屏緩沖區(qū)的渲染結(jié)果顯示到屏幕上纵搁,又需要將上下文環(huán)境從離屏切換到當(dāng)前屏幕.

那些操作會引起離線渲染?

* 光柵化:layer.shouldRasterize = YES

* 遮罩:layer,mask

*圓角,同時設(shè)置masksToBounds = YES

*陰影:layer.shadow,但是設(shè)置了layer.shadowPath就不會產(chǎn)生離屏渲染

九 WKWebview返回h5首頁

[self.webView goToBackForwardListItem:self.webView.backForwardList.backList.firstObject];

入坑記:

參考安卓的方法:

while (self.webView.canGoBack) { [self.webView goBack]; }

測試發(fā)現(xiàn)while為死循環(huán)

十 特殊閃退問題

malloc: *** error for object 0x7f9776e12150: double free*** set a breakpoint in malloc_error_break to debug?


十一 圖片的解壓縮

將壓縮圖片數(shù)據(jù)解碼成未壓縮圖片的位圖形式,這是個一個非常耗時的cpu操作,而且默認(rèn)是在主線程中進行,在界面滑動中,可能會內(nèi)存會飆升,引起出現(xiàn)閃退,甚至手機機身發(fā)燙的惡劣情況.

UIwebvie因彈出PickView引起的崩潰

十二 UIwebview因PickView的數(shù)組越界崩

? ? ?最近有用戶反饋,h5界面常有有些選擇器(如地市的選擇),當(dāng)h5界面異常的時候,點擊彈出選擇器,滑動PickView會崩潰,發(fā)現(xiàn)這是UIwebview的引起數(shù)組越界的bug,UIwebview內(nèi)部閃退;客戶端沒法捕捉這個異常,待著好奇心,用WK,發(fā)現(xiàn)沒有閃退,更換WK;沒有對比,就沒有傷害,更換WK看樣子已經(jīng)迫在眉睫了

十三 iframe標(biāo)簽在ios失效和界面閃動問題

?詳見博客:https://blog.csdn.net/qq_28292937/article/details/78853921

https://blog.csdn.net/XinZhongYi/article/details/5518860

十四?引述cnBeta的消息,蘋果今天在其WebKit博客上宣布往踢,他們將從2020年3月開始終止對TLS 1.0和1.1的支持腾誉。


js方法

?十五 ?window.histroy.back 在iOS上無法后退

參考文章:http://www.it1352.com/550444.html ?https://bbs.csdn.net/topics/392067078?page=1

十六 ?iOS11 app內(nèi)自動連接WiFi?

?ios11 提供了NEHotspotConfigurationManager類直連周邊WiFi

引入:NetworkExtension?

Xcode - Capabilities - Hostpot Configuration 勾選

if (@available(iOS 11.0, *)) { NEHotspotConfiguration * hotspotConfig = [[NEHotspotConfiguration alloc] initWithSSID:@"Deli_L1050ADNW_1B0000"]; // 開始連接 (調(diào)用此方法后系統(tǒng)會自動彈窗確認(rèn)) [[NEHotspotConfigurationManager sharedManager] applyConfiguration:hotspotConfig completionHandler:^(NSError * _Nullable error) { NSLog(@"%@",error); if (error && error.code != 13 && error.code != 7) { }else if(error.code ==7){//error code = 7 :用戶點擊了彈框取消按鈕 }else{// error code = 13 :已連接 } }]; } else { // iOS11以下版本邏輯 }

十七

sms://106585185001&body=32018132;2;1:1:1;02,14,15,16,18,21^04

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:nil]]無法打開短信,原因是特殊字符^造成的需要將^編碼即可

十八 ?

檢測ios工程是否有p3照片或者16-bit照片的方法

1 .ipa文件解壓得到Payload文件夾

2 終端cd your.app

3 用find命令定位Assert.car文件:終端輸入:find . -name 'Assets.car'

4 assertutil 命令知道包含16-bit or p3的資源

? sudo xcrun --sdk iphoneos assetutil --info ./Assets.car > /tmp/Assets.json

? 5 打開/tmp/Assets.json open /tmp/Assets.json

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市峻呕,隨后出現(xiàn)的幾起案子利职,更是在濱河造成了極大的恐慌,老刑警劉巖瘦癌,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猪贪,死亡現(xiàn)場離奇詭異,居然都是意外死亡讯私,警方通過查閱死者的電腦和手機热押,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門西傀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人桶癣,你說我怎么就攤上這事拥褂。” “怎么了牙寞?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵饺鹃,是天一觀的道長。 經(jīng)常有香客問我间雀,道長悔详,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任惹挟,我火速辦了婚禮茄螃,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘连锯。我一直安慰自己归苍,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布萎庭。 她就那樣靜靜地躺著,像睡著了一般齿拂。 火紅的嫁衣襯著肌膚如雪驳规。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天署海,我揣著相機與錄音吗购,去河邊找鬼。 笑死砸狞,一個胖子當(dāng)著我的面吹牛捻勉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播刀森,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼踱启,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了研底?” 一聲冷哼從身側(cè)響起埠偿,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎榜晦,沒想到半個月后冠蒋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡乾胶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年抖剿,在試婚紗的時候發(fā)現(xiàn)自己被綠了朽寞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡斩郎,死狀恐怖脑融,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情孽拷,我是刑警寧澤吨掌,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站脓恕,受9級特大地震影響膜宋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜炼幔,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一秋茫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乃秀,春花似錦肛著、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至刀脏,卻和暖如春局荚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背愈污。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工耀态, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人暂雹。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓首装,卻偏偏與公主長得像,于是被迫代替她去往敵國和親杭跪。 傳聞我的和親對象是個殘疾皇子仙逻,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

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

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明先生_X自主閱讀 15,980評論 3 119
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,101評論 1 32
  • 的確是吃了讀書少的虧!我讀書少涧尿,別騙我~不是腦子不夠用桨醋,是知識。啊呀! 雖然立夏了现斋,傍晚的風(fēng)還是很涼喜最。若不是咬咬牙...
    眾知閱讀 158評論 0 0
  • 《我不過低配的人生》讀后感系列之(三) 前兩天寫的那個《你窮你活該,我富我有理》庄蹋,很多朋友都認(rèn)為是三觀不正瞬内,宣揚拜...
    持續(xù)深入學(xué)習(xí)閱讀 1,153評論 -1 5
  • 大數(shù)據(jù)是我們現(xiàn)在經(jīng)常聽到的一個詞迷雪,在互聯(lián)網(wǎng)時代迅速發(fā)展的今天,大數(shù)據(jù)的應(yīng)用范圍越來越廣虫蝶,但是深度學(xué)習(xí)這個詞...
    數(shù)據(jù)分析師閱讀 1,479評論 0 1