Tag 'Swift'

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の場合には注意が必要です.