self-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 (尚未指派記憶體位置)
self-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 (尚未指派記憶體位置)
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/
做第一個自己的framework
來自 https://www.youtube.com/watch?v=TCnhvHUcjrY
可以當作做一個自己的第三方資料庫使用。
開一個project 例如: CoolUI
然後打包後,放到專案裡面,
** ARCHIVE SUCCEEDED **
import CoolUI 後就可以使用裡面方法。
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
…
Debug choose
This is from https://www.avanderlee.com/combine/runloop-main-vs-dispatchqueue-main/
receive(on:options:)
Same
Different
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?()
}}
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() vc2.onTap = { [weak self] (value) in self?.viewModel.callMom()}
When VC1 dismiss or popup, Your memory is free!!!
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 newLog
}
func save() {
let newLog = self.addNewLog(selectedTime, didSelectDate)
try! realm.write{
realm.add(newLog)
}
print(newLog)
}
增刪改檔案後記得下 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_members
##### Route Bug
-> php artisan serve 後連接有正常accept close,但是沒有畫面
-> 有重複的路徑 檢查Route 然後下 php artisan optimize 清掉cache
/## 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;
}
-(NSString*) name {
return _name;
}
Actually, run in Main.m
Person* p1 =[Person new];
[p1 setName:@”Dancer”];
NSLog(@”%ld”, [p1 age]);