Skip to content

kiroru/tca_ver_verify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

tca_ver_verify

The Composable ArchitectureによるNavigationStack関連の挙動を確認するためのサンプルです。

概要

TCA ver 1.9においてNavigationStackを実装すると

Perceptible state was accessed but is not being tracked. Track changes to state by wrapping your view in a 'WithPerceptionTracking' view.

という警告が出て画面の操作が反映されない。なおこの問題はiOS17以降では発生しない。
そこでこのリポジトリではver1.6とver1.9の両方のアプリを作成して挙動の違いを確認する。

compilation_capture.mov

スクリーンショット 2024-03-29 14 00 05(3)

TCA ver 1.6

NavigationStackStoreによる挙動を確認できています。
確認手順は以下の通りです。

  1. 以下のコマンドを実行
$ git checkout -b v1.6.0 v1.6.0
$ open tca_ver_verify/tca_ver_verify.xcodeproj
  1. アプリを開いて"push nav"をタップする
  2. pushでカウンターをincreamentしながらナビゲーションに画面をpushする

ver1.6で生じる警告について

iOS16でアプリを動作するとカウンターのデモ画面において以下の警告が発せられます。

Publishing changes from within view updates is not allowed, this will cause undefined behavior.

ただこれは本家のアプリでも同様のことが起こっています。

$ git clone [email protected]:pointfreeco/swift-composable-architecture.git
$ git checkout -b 1.6.0 1.6.0
$ open swift-composable-architecture/Examples/CaseStudies/CaseStudies.xcodeproj

このアプリでの動作を確認するに異常な挙動を示すものがないため警告として留める。

TCA ver 1.9

NavigationStackによる挙動で不具体を確認できています。 確認手順は以下の通りです。

  1. 以下のコマンドを実行
$ git checkout -b v1.9.0 v1.9.0
$ open tca_ver_verify/tca_ver_verify.xcodeproj

不具合

  • push navをタップした後のデモ画面でpushをタップしても正常にナビゲーションがプッシュされない
  • ナビゲーションによるバックボタンで空白が表示される
  • デモ画面のdismissで一つ前の画面に戻りたいが積んでいるスタック全てが全てが破棄される

警告

Perceptible state was accessed but is not being trackeの警告が出る。
ただし上記の警告はViewStoreのパッチ 136~138行目を当てることでなくなる。

iOS17での挙動

TCA ver1.6, ver1.9のいずれにおいてもiOS17以上であれば不具合は生じない。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages