最近の記録
iOSシミュレーターとコピペができなくなった時対応方法
いつからかMacとiOSシミュレーターの間でコピペができなくなった。色々調べても古いautomatically sync pasteboard関連の内容ばかりで解決策は見つからなかったが、 TwitterでiOSシミュレーターの問題を解決する方法を発見したので試したらiOSシミュレーターとコピペができるようになった。
SwiftUIでビューが表示されたタイミングでasync functionを実行する
SwiftUIのViewのメソッドの.task()の中の処理はViewが表示されると非同期で実行されて、もしViewが非表示になるまでTaskが実行中ならそのTaskは自動でcancelされる。もし自動でcancelされないようにしたい場合は.onAppear()の中でTaskを直接に生成する。 サンプルコードのログをみるとTaskViewを表示してRequestが完了する前にビューを非表示にすると.task()からのTaskはcancelされるが.onAppear()からのTaskはcancelされないことがわかる。
XcodeとVSCodeで入力中に使いたいけどいつもわすれるショートカットキー
Xcode VSCode 行を上へ移動 ⌘⌥[ ⌥↑ 行を下へ移動 ⌘⌥] ⌥↓ マルチカーソル ⌃⇧↑ ⌘⌥↑ マルチカーソル(クリ
コマンドラインでiPhoneにプッシュ通知を送る方法
1. ファイルをダウンロード1234curl -o sender.sh https://gist.githubusercontent.com/hmhv/7ab39297bdb5efe8b63cd024d893f6bd/raw/29328be9e54a3c1fe36f97369bb1f5d13db286d4/sender.shchmod 755 ./sender.shcurl -o params.sh https://gist.githubusercontent.com/hmhv/dd37cd462a63fa34b588d0eea1eb698d/raw/3db9e1616daa29a13e8afd13e0a14079cba2e781/params.shchmod 755 ./params.sh
iOSシミュレーターのキーチェーン情報削除
何かしらの理由でiOSシミュレーターのキーチェーン情報を削除したい時のためのメモ シミュレーターのUUIDを取得
asdfを使ってみる
昨日新しいMacにrubyのインストールのためchrubyを利用したことをiOS開発環境作成のためのRuby設定で書いたけどnodejsやpythonもまた個別のバージョン管理ツールを導入しようとすると面倒くさくなり、以前聞いたことのある一つのツールで色々な言語のバージョン管理ができるanyenv調べてみると今はasdfの方がもっと使われてるっぽいのでasdfを使ってruby, nodejs, pythonを入れてみたのでメモ。 asdfをインストール
iOS開発環境作成のためのRuby設定
概要新しいMacにiOS開発環境を作成するのにRubyの準備をするの好きではないが、iOS開発で多くのプロジェクトがCocoaPodsやfastlaneなどの利用のためRubyを必要とする。それも同じバージョンで、
MobSの紹介
MobSとはMobSはMobX, RxSwift, Combineからインスピレーションを受け、__SIMPLE & SAFE__を目指したSwift製リアクティブライブラリです。
MobS 소개
MobS란?MobS는 MobX, RxSwift, Combine로부터 인스피레이션을 얻은、__SIMPLE & SAFE__을 목표로 하는 Swift 리엑티브 라이프러리 입니다.
AssociatedObjectOwnerでobjc_g(s)etAssociatedObjectを利用
AssociatedObjectOwnerの利用123456789101112131415161718class TestClass {}extension TestClass: AssociatedObjectOwner { private static var test1Key = 0 var test1: TestClass { get { getAssociatedObject(key: &TestClass.test1Key, initialObject: TestClass()) } set { setAssociatedObject(key: &TestClass.test1Key, object: newValue) } } private static var test2Key = 0 var test2: String { get { getAssociatedObject(key: &TestClass.test2Key, initialObject: "" ) } set { setAssociatedObject(key: &TestClass.test2Key, object: newValue) } }}