Tag 'Swift'

動的アクター分離チェックの調査方法

Swift6の動的アクター分離チェックによってクラッシュした場合、正しいコードに飛べず、原因が分かりにくい場合があります。 その場合の調査方法を紹介します。

[Swift6] アクター分離境界 (Actor isolation boundary) を考慮したcallback

この記事では、同期関数 (no-async) のcallbackにおけるアクター分離境界(以降、アクター境界)の考え方について解説します。

[Swift6] アクター分離境界 (Actor isolation boundary) を考慮したasync関数の定義パターン

アクター分離境界(以降、アクター境界とする)を意識しなければならない箇所はいくつかありますが、その際たる例はasync関数です。 この記事ではasync関数におけるアクター境界の考え方について解説します。

[Swift6] アクター分離境界 (Actor isolation boundary) を理解する

Swift6から本格導入された、Actor isolation boundaryについて解説します。 Swift5でもActorは導入されていましたが、Swift6がリリースされるまでの過程でいくつかの変更が入っており、それらを踏まえたものなので、Swift5のActorの説明とは異なる箇所がある点には注意してください。 また、それなりに調べた上で書いていますが、正確な情報を保証する物ではない為、必要に応じて公式ドキュメントを参照してください。この記事において参照したソースについては、末尾に記載しています。

Combineの実行タイミングについて理解する

delegateで自分で実装した場合は、実行の割り込みタイミングは自明だが、Combineについては今まで雰囲気で使っていたので、理解を深めつつ備忘録として調査内容を残す。

SwiftUIでPreviewの内容が実体と異なる場合がある話

SwiftUIにおいて、そのView(A)のPreviewでは正しいのに、Aを使ったView(B)のPreviewでは正しくないという現象に遭遇した。 まずは結論から。

iOS17 Simulatorだとin-app purchaseのテストでSKError.Code.unknownが返る問題の対策

SKTestSessionを用いたテストが、Xcode15になってからiOS17 Simulatorでのみテストが通らなくなった場合の対応方法を紹介する。

iOSアプリにビルドハッシュを組み込む方法

iOSアプリでビルドハッシュ (git hash)を含めるやり方はいくつかありますが、個人的に良いと思った「xcconfigとPre-actionsを用いた」方法を紹介します。

_UIResponderForwarderWantsForwardingFromResponderのクラッシュへの対応方法

iOS16になってから_UIResponderForwarderWantsForwardingFromResponderでクラッシュするケースが散見されるようになりました。 一例を上げると以下のようなクラッシュログのようなものが該当します。

UITableViewCell.accessoryViewに設定したUIButtonにtintColorを設定する

UITableViewCellの右側にボタンを配置する際にaccessoryViewを利用すると、ボタンではなくCellを誤タップすることが回避でき大変便利です。

associatedtypeを持つprotocolをクラスのメンバ変数として使う方法

Swiftのprotocolには, protocol版Genericsとでも言うべきassociatedtypeがあります.

UIViewの表示内容をCMSampleBufferにする

任意のUIViewをPinPに利用しようとすると、CMSampleBufferにUIViewの内容を変換する必要があります。 iOSで任意のUIViewをピクチャーインピクチャーするという素晴らしい記事と実装を公開してくださっているのですが、CMSampleBufferへの変換方法が少し微妙な気がしたので、そこの部分のみ実装を紹介しようと思います。

iOS15でUITableViewCell.isHiddenを使ってはいけない

iOS15/Xcode13に対応する季節になりました. 一般的に必要な対応についてはマネーフォワードの方が記事を公開しているので改めて触れる必要はないでしょう. (調べる手間が省けて大変助かりました) ここでは殆どの人が踏み抜かないであろうiOS15で変わった点を紹介したいと思います.

iOSでh264エンコード時にフリッカーが発生する問題への対応

iPhone11ぐらいからiOSでは特定条件でh.264エンコード後の映像にフリッカーが発生するという問題があります. この対処法について紹介します.

QuickでCIの時だけ特定のテストをスキップする

CI実行時のみなど, コマンドラインからの実行時のみ特定のテストを実行したい・実行したくない場合に使える方法を紹介します.

NSPointerArray.compactでnilがなくなるとは限らない

CI実行時だけ一定確率で失敗するというテストがあり, 長らく原因が分からず仕舞いだった. たまたま実機で特定の動作手順で確実に再現するバグがあり, それを直したところ上記の問題が解消されるということがあった. 今回はそれについて紹介する.

Xib攻略ガイド

XcodeにはInterface Builderと呼ばれるUI構築ツールがあります. Xibには色々な設定方法があり, 私が使う上で守っている自己ルールを紹介します.

~iOS13でURLSessionのcompletionHandlerが実行されない問題への対応

久しぶりに面白いバグに遭遇した. iOS14ではURLSession.dataTask(with:completionHandler:)のcompletionHandlerが実行されるが, それ以前のOSでは実行されないというものだ. それも全ての箇所ではなく, 1箇所だけ何故か常に実行されない.

SwiftとnilError

先日、AVAudioFile.read(into:frameCount:)の吐く例外がnilErrorという不可解なものになることがあることを知った. 最初は何故nilなのかと首を傾げたが、どうもnilErrorというエラーらしい. 不可解だったので調べてみることにした.

SwiftのDecodableなenumで将来的な値追加に対応する

Swift4から追加されたDecodableは, APIのレスポンスモデルを定義する際にとても便利な機能です. しかし, 将来的に値が増える可能性のあるenumの場合には注意が必要です.