跳到主要內容

發表文章

[iOs] SDWebImage 下載後 圖片上下留白

contentMode 設AspectFit 寬比高長 [ self . picImageView sd_setImageWithURL :[ NSURL URLWithString :url] placeholderImage :[ UIImage imageNamed : @"pic_offer_n" ] completed :^( UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {                          double width = image. size . width ;             double height = image. size . height ;             double apect = width/height;             double imageViewWidth = weakSelf. picImageView . frame . size . width ;             double nHeight = imageViewWidth /  apect;             [weakSelf. picImageView . heightAnchor constraintEqualToConstant :nHeight]. active = YES ;                      }]; 設定 height 的c...

[Android] 指紋辨識

Android 官方文件 https://developer.android.com/reference/android/hardware/fingerprint/FingerprintManager https://developer.android.com/reference/android/hardware/biometrics/BiometricPrompt Demo https://www.jianshu.com/p/1eae12582a31 https://tpu.thinkpower.com.tw/tpu/File/html/201712/20171219171112_f.html?f=3dj6j8kd38895ksgtdddd93865jhr9sn3rqkh https://xnfood.com.tw/android-fingerprintmanager-api/

iOS 性能優化

source: https://juejin.im/post/5b7a9c466fb9a019eb43b0d5 卡頓優化 -CPU  盡量用輕量級的對象,比如用不到事件處理的地方,可以考慮使用CALayer取代UIView 不要頻繁地調用UIView的相關屬性,比如frame、bounds、transform等屬性,盡量減少不必要的修改  盡量提前計算好佈局,在有需要時一次性調整對應的屬性,不要多次修改屬性  Autolayout會比直接設置frame消耗更多的CPU資源  圖片的size最好剛好跟UIImageView的size保持一致  控制一下線程的最大並發數量  盡量把耗時的操作放到子線程 卡頓優化 -GPU  盡量避免短時間內大量圖片的顯示,盡可能將多張圖片合成一張進行顯示  盡量減少視圖數量和層次  減少透明的視圖(alpha 盡量避免出現離屏渲染 離屏渲染  在OpenGL中,GPU有2種渲染方式  On-Screen Rendering:當前屏幕渲染,在當前用於顯示的屏幕緩衝區進行渲染操作  Off-Screen Rendering:離屏渲染,在當前屏幕緩衝區以外新開闢一個緩衝區進行渲染操作  離屏渲染消耗性能的原因  需要創建新的緩衝區  離屏渲染的整個過程,需要多次切換上下文環境,先是從當前屏幕(On-Screen)切換到離屏(Off-Screen);等到離屏渲染結束以後,將離屏緩衝區的渲染結果顯示到屏幕上,又需要將上下文環境從離屏切換到當前屏幕  哪些操作會觸發離屏渲染?  光柵化,layer.shouldRasterize = YES  遮罩,layer.mask  圓角,同時設置layer.masksToBounds = YES、layer.cornerRadius大於0 考慮通過CoreGraphics繪製裁剪圓角,或者叫美工提供圓角圖片  陰影,layer.shadowXXX 如果設置了layer.shadowPath就不會產生離屏渲染 優化方案...

優化記憶體管理

使用ARC 延遲加載懶加載 重用在正確的地方使用reuseIndentifier 緩存NSCache 保存計算數據 處理內存警告移除對緩存,圖片object 和其他一些可以重創建的objects 的強引用 5.1 app delegate 中使用`applicationDidReceiveMemoryWarning:` 的方法 5.2 自定義UIViewController 的子類(subclass)中覆蓋`didReceiveMemoryWarning` 5.3在自定義類中註冊並接收UIApplicationDidReceiveMemoryWarningNotification 的通知 重用大開銷對象NSDateFormatter和NSCalendar 懶加載/單例_formatter.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy”; 設置和創建速度一樣慢 自動釋放池手動添加自動釋放池 是否緩存圖片imageNamed imageWithContentOfFile 混編 循環引用delegate block nstimer 移除kvo nsnotificationcenter 並未強引用,只記錄內存地址,野指針報 UIViewController自動移除一般在dealloc中 performselector 延遲操作[NSObject cancelPreviousPerformRequestsWithTarget:self]

memory leak

1.打印殭屍對象,進行野指針的檢測   2.靜態檢測方法product->Analyze   3.動態檢測方法Build Setting -> Analyze During ‘Build’ ->Yes   4.xcode自帶工具instruments  5.dealloc 打印測試是否運行  6.第三方內存檢測工具 如:mleak

Block and copy

block也經常使用 copy 關鍵字,具體原因見官方文檔:Objects Use Properties to Keep Track of Blocks: block使用copy 是從MRC 遺留下來的“傳統”,在MRC 中,方法內部的block是在棧區的,使用copy 可以把它放到堆區.在ARC 中寫不寫都行:對於block使用copy還是strong 效果是一樣的,但寫上copy 也無傷大雅,還能時刻提醒我們:編譯器自動對block 進行了copy 操作。 如果不寫 copy ,該類的調用者有可能會忘記或者根本不知道“編譯器會自動對block進行了 copy 操作”,他們有可能會在調用之前自行拷貝屬性值。這種操作多餘而低效。

Objective-C extern

extern  下面的代碼聲明了一個全局變量,它用於告訴編譯器:“你現在編譯的文件中,有一個標識符雖然沒有在本文件中定義,但是它是在別的文件中定義的全局變量,你要在其它文件內查找!” #define ANIMATION_DURATION 0.5 // 替换成 static const NSTimeInterval kAnimationDuration = 0.5; // 全局常量 // QiShare.h extern const NSTimeInterval QiShareAnimationDuration; // QiShare.m const NSTimeInterval QiShareAnimationDuration = 0.3;

Print log in swift

Swift has  #file ,  #function ,  #line  and  #column . From  Swift Programming Language : #file  - String - The name of the file in which it appears. #line  - Int - The line number on which it appears. #column  - Int - The column number in which it begins. #function  - String - The name of the declaration in which it appears. 下log用。

View-Related Notifications in ViewController

A viewcontroller push b viewController B loadView() B viewDidLoad() A viewWillDisappear B viewWillAppear B viewWillLayoutSubviews() B viewDidLayoutSubviews() A viewDidDisappear B viewDidAppear B vc back to A vc B viewWillDisappear A viewWillAppear B viewDidDisappear A viewDidAppear 從來沒認真過這個順序,考過之後,才發現跟認知有點距離。我應該也背不下來。XD

[ios]UIImage 轉向

UIImage,的方向改變很簡單,但是存成檔案再讀,就出現問題。原因是png沒有紀錄方向資訊,得紀錄成jpg才可以。 [ UIImage imageWithCGImage :imageRef scale : 0.0 orientation : UIImageOrientationUp ];

[iOS]crash in main.m

如    [__NSArrayM insertObject:atIndex:]: 這種只會顯示在main 怎麼找出問題點 http://stackoverflow.com/questions/13929518/nsarraym-insertobjectatindex-object-cannot-be-nil-how-determine-where-i 1) goTo the breakpoint tab in Xcode. 2) click on the '+" button at the bottom. 3) Add Exception Breakpoint a) In the break tab select both: i ) on Throw ii ) on Catch and build and r un. 4) These breakpoints will give you exactly where your app is crashing 90% of the times.

[iOS]加入Parse symbol error

使用iOs的framework 首先要加入一堆有的沒有lib,不然會出現一堆找不到symbol的issue 以下是要載入的framework,fb的framework要去fb處抓下來。 parse 1.2.2版本  

[iOs]Distribution ipa 檔安裝失敗

其他同事安裝我給的ipa檔一直安裝失敗,可是本雞安裝是可以的,一直找不到原因, 後來在知道export選項時,我忘記調整profile的選項到distribution,她預設是appstore的版本, 花了不少時間,記一下 不然又忘了

[iOS]UIButton 設定字型,造成中文截字

下段程式碼是設定特殊英文字型 self.rateButton.titleLabel setFont:[UIFont fontWithName:@"Consolas" size:self.rateButton.titleLabel.font.pointSize]];  但是在中文版時,中文上方會有1-2pixel的截字。 找了很久找不到原因,想說是不是要設定content size。 解法很簡單的思維,判斷語言即可 NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0]; if (![language isEqualToString:@"zh-Hant"] && ![language isEqualToString:@"zh-Hans"]) { self.rateButton.titleLabel setFont:[UIFont fontWithName:@"Consolas" size:self.rateButton.titleLabel.font.pointSize]]; }

iOs issue

紀錄幾個debug issue 1.使用addsubview,在離開該頁面,要使用removefromSuperview,不然該頁面不會釋放 2.NSLog有時候會造成memory leak,用instrument才看得出來。應該是用法有錯。有時間再回頭看。 幾個之後可以問的面試問題 1. 遇到recieve memory pressure如何處理 2. 如何trace 是哪個method 造成效率的問題 3. 如果crash 顯示在int main 你會怎麼處理? 4. 如果使用者回報crash,你會怎麼找出錯誤? 5. xcode 與 CI? 還蠻進階,真不曉得我們公司找得到回答的了這些問題的人嗎? 這種薪水這種環境,請有經驗的人員,會不會太緣木求魚?

Personal Legacy

You cannot choose how long you will live, but you can choose how well you will live. 我會留給朋友、後代,非財富的遺產是什麼?如果能寫些什麼,而他們真的能獲得什麼,或許這才是人生更有意義的事,我的人生經驗,帶給他們更好的起步! 我的人生連成功的邊的算不上,現在談這個或許太遠,但是或許我能夠談談這30年來,人生的經驗。我犯了許多錯,如果能重來,我能不能避免呢? 讓我想起之前看的穿越小說,小說主角被預先告知她要穿越到某個朝代,他會失去所有記憶,但是他有特別優惠,不能透漏這朝代即將會發生的事,只能以準則的方是烙印在自己的靈魂裡。讓他能夠更有機會生存下來。 如果我的人生能夠重來,而我可以烙印一些觀念,我會告訴自己,那些事呢? 1. 表現自己很重要,要學會如何表現,表達自己的意念! 2. 想要的東西就要積極,不能告訴自己沒有也沒有關係,想要就會有力量,跨出那一步,你才會獲得 3. 努力地學習可以增進效率的方法,實踐他,改善他,事前準備、事後改進是節省時間的不二法門。 4. 行動,行動,再行動,空想不會改變事實,只有行動才能改變現狀。 5. 結交好友,真心的好友,一輩子的知己,不要錯過人生中的任何一人! 6. 在一個新環境,盡力去做,發揮自己百分之兩百的能力,榨乾自己的時間,前面幾個月的努力,可以讓後幾年輕鬆! 7. 運動,定期定量的運動會越健康,越健康做事越有效率,人事間太短了,任何提升效率的方法都別放過 8. 如果你想要那樣的結果,但是去做會不舒服,那要趕快去做,突破了就會感到成長的喜悅! 或許現在我也很多點還做不到,但是希望能夠把這些烙印在自己的腦海裡,成為我時時刻刻提醒的準則。

[食記]旭昌南方黑鮪專賣店-明華店

餐廳名稱:旭昌南方黑鮪專賣店-明華店   消費時間:2010年/12月07    地址:高雄市左營區明華一路205號    電話:(07)557-6111    營業時間:週一至週日11:00AM ~ 9:30PM    每人平均價位:120元起    可否刷卡:可    有無包廂:無    推薦菜色:特選鮪魚炙燒『脂』壽司 話說當天女友,一早大電話過來,叫我趕快買Gomaji的特惠,想說是什麼店家,讓他那麼怕團購結束,因為他是用iphone,所以通常是他來買優惠,因為簡訊可以管理,免得買了之後忘了去吃。原來這家南方黑鮪她超愛,他已經用他自己的帳號買兩張,給他爸媽去吃,所以打電話叫我趕快我自己的帳號去買。女王有命,莫敢不從,其實對黑鮪我是感到還好,因為看起來是一人份,優惠後竟然還要250,覺得不便宜啊! 這次的優惠套餐是特選鮪魚炙燒『脂』壽司八貫 + 炸鮪膠 + 鮪魚蒸蛋 + 蔥花鮪魚泥手捲一支 + 鮪魚味增湯(免費續碗)。 這間餐廳前方裝潢看起一點都不日式,到像是一般的簡餐餐廳。還是最近的日式料理都走這種風格XD。那天中午到時,前面已經沒位置,沒想到後面穿過去還有位置,只是佈置更簡約-_-|||。女友一坐下來就說,這間店只要裝潢好一點,價位翻一倍都沒問題。我心想,已經不便宜,還可以賣更貴喔??我們說明我們是用團購後,服務生說,這是兩人份,雖然我有點不相信,但上次女友家人去吃,有送烤竹筴魚兌換卷,多一條竹筴魚,想說如果還不夠再加點好了,因為味增湯免費續碗,所以又加了20元再加一碗味增湯。 先上手卷,還蠻新鮮的,沒有腥味,口感也不錯,但其實我沒有很愛... 味增湯,鮪魚多,新鮮香甜好吃,又免費續碗,讓我一碗又喝一碗,總共喝了三碗,20元超值! 炸鮪膠,原本想說只是單純的炸魚塊,一入口,竟然多了幾份嚼勁,黑鮪肉肉汁喔~~在加上獨特的醬料,很推的一道菜! 布滿鮪魚的蒸蛋,蒸蛋很滑嫩,而且毫問氣泡,相對一般日本料理店而言,是上品的蒸蛋,但相對於這次吃的其他菜色而言,表現就不怎樣了。 新鮮的烤竹筴魚,魚肉新鮮緊實,新鮮的魚,...