Dec 24, 2022GO fmt.Sprintfself-learning note int -> %d stinrg-> %s func foo(a int, b string) string { return fmt.Sprintf("%d %s", a, b) } *string -> %p var ptr *string // 宣告一個指向字串的指標變數ptr fmt.Printf("%p \n", ptr) // 印出: 0x0 (尚未指派記憶體位置)Go1 min readGo1 min read
Dec 23, 2022So, how you handle with SearchBar typing too fast?情境就是 每輸入一個字母,就打一次api,有沒有辦法優化? If you type too fast in search-bar API call errors out I have two questions here: One) as the user types in the search bar an api call fired updating the tableview. If the…stackoverflow.com 最直覺就是用UI擋XD 記住搜尋過的結果 _____________________________以下是比較好的解法 3. 用Timer 做 利用 debounce 優化 search 時發送的 request 當我們在 iOS App 搜尋資料時,常見的設計是每打一個字就更新搜尋的結果,比方下圖的 TV App。medium.com 4. 用線成控制 DispatchWorkItemSwift Programming4 min readSwift Programming4 min read
May 31, 2022iOS UIStackView shadow?iOS13 no shadow explain iOS14之前 UIStackView的layer是CATransformLayer. -> 陰影 無效 iOS14之後 UIStackView的layer是CALayer.-> 陰影 有效 可以在UIStackView外面包一層UIView 上陰影做舊版本支援 參考 https://useyourloaf.com/blog/stack-view-background-color-in-ios-14/IOS1 min readIOS1 min read
May 31, 2022iOS XCFrameWork做第一個自己的framework 來自 https://www.youtube.com/watch?v=TCnhvHUcjrY 可以當作做一個自己的第三方資料庫使用。 開一個project 例如: CoolUI 然後打包後,放到專案裡面, ** ARCHIVE SUCCEEDED ** import CoolUI 後就可以使用裡面方法。 Create framework 2. Add needed classes 3. Build Settings / Build Libraries for Distribution set YES 4. Build Settings / Skip Install set NO 5. Open termnial 6. cd and drag the folder with project 7. run three scripts in turn, which are located at the bottom (!) Don’t forget replace “PROJECTNAME_HERE” & “”FRAMEWORK_NAME” on your project name.IOS1 min readIOS1 min read
May 25, 2022Combine .receive(on: )?Debug choose This is from https://www.avanderlee.com/combine/runloop-main-vs-dispatchqueue-main/ receive(on:options:) RunLoop.main vs DispatchQueue.main Same > All work on main thread Different > RunLoop is binded with Object, maybe delay because of object with user interaction > DispatchQueue.main can react immediately.Combine1 min readCombine1 min read
Apr 17, 2022iOS MVVM My Concept#1under iOS13 class viewModel: { var reloadCount: Int = 0 //ViewModel send to View => react the event var reloadCollectionView: ( ()->() )? //View call ViewModel => user touch the Buttom (event) func onTapCellButton() { //changeDataFirst reloadCount += 1 self. reloadCollectionView?() } }Mvvm1 min readMvvm1 min read
Apr 15, 2022Swift ViewModel Memory Leak?It’s a true story. It happens by accident. class VC1 :UIViewController() { let viewModel = VC1ViewModel() func callVC2(){ let vc2 = UIViewController() vc2.onTap = { (value) in self.viewModel.callMom() } deinit(){ print("VC1 dead") } } So, When VC1 dismiss or popup. VC2 and viewModel still in alive. It prints nothing. Change callVC2 like this func callVC2(){ let vc2 = UIViewController()IOS App Development1 min readIOS App Development1 min read
Feb 14, 2022Swift Realm 筆記快速入門 use Realm let realm = try! Realm() Make a Model import Foundation import RealmSwift class LogData: Object{ @Persisted(primaryKey: true) var _id: ObjectId @Persisted var date: String? @Persisted dynamic var time: String? convenience init(content: String){ self.init() } } func addNewLog(_ time:String,_ date:String) -> LogData{ let newLog = LogData() newLog.time = time newLog.date = date return newLogRealm1 min readRealm1 min read
Feb 2, 2022# Laravel 簡易筆記1增刪改檔案後記得下 composer dump-autoload ### 顯示路由 php artisan route:list ### new 一個controller //做一個ProductController php artisan make:controller ProductController //做一個ProductController 包含基本的增刪修改 php artisan make:controller ProductController — resource ps: Laravel8 用router 要在RouteServiceProvider 裡面增加變數 protected $namespace = ‘App\Http\Controllers’; ### new 一個table //做一張表 members php artisan make:migration create_membersPHP1 min readPHP1 min read
Sep 3, 2021Objective C in New job #methodBig company has lots of ObjC code /## Swift class Person: NSObject { var _name: String init(name: String){ _name = name } function setName(name:String){ _name = name } } run in playground Person.setName(“Dancer”) /##ObjC @interface Person : NSObject { NSString* _name; } -(void)setName: (NSString*) name; -(NSString*) name; @end @Implementation Person -(void)setName: (NSString * )name { _name = name;IOS App Development1 min readIOS App Development1 min read