-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
session 9 の実装 #10
session 9 の実装 #10
Conversation
@@ -44,6 +46,8 @@ final class HomeViewController: UIViewController { | |||
} | |||
|
|||
func loadWeatherData() { | |||
indicator.startAnimating() | |||
reloadButton.isEnabled = false |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
データロード中はタップを防ぐ
@@ -44,6 +46,8 @@ final class HomeViewController: UIViewController { | |||
} | |||
|
|||
func loadWeatherData() { | |||
indicator.startAnimating() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[imo] MVPはPassive Viewパターンなので、Passive ViewはViewが受動的(Passive)で能動的ではない
あくまでViewは受け身でありPresenterがViewに値をセットしたりする、自分で値をセットしたりしない方針かと思います
ただ、研修としての課題ではないので対応自体はどちらでもOKです 🙇
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
インジケーターの表示開始が HomePresenter から HomePresenterOutput に showLoadingUI
で直接的に指示されるのに対して、その非表示が HomePresenterOutput の updateInfoDisplay
と showAlertControllerByError
内で自発的に(感じる)タイミングで実施されるのが、なんとなく気になりました。
上記で登場したどのメソッドも HomePresenterOutput に規定されているものであるのを踏まえると、現状の動きも自分がただ違和感を覚えるだけで妥当なのかもしれないですが、自分なりに考えてみると —
たとえば HomePresenterOutput の定義を、次のようなものにしてみる手もあるかもしれません。こうすると対がわかりやすくなりそうなのと、どこか iOS でいう Delegate パターンで馴染みある見た目にも近づきます。
protocol HomePresenterOutput {
func weatherDidStartLoading()
func weatherDidFinishLoading(_ result: Result<WeatherResponse, Error>)
}
ただ、MVP として見たときには View に対する指示が不明瞭な感じもするので、上記も少しばかり考慮しつつ、適切な方法を模索してみても良いかもしれない印象でした。現状と同じように HomePresenterOutput に hideLoadingUI
を定義してそれを HomePresenter から適切なタイミングで指示する方法もあるかもしれないです。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
テストパスすることの確認をお願いします!
(すみません、課題の内容にその旨追記するようにしました)
@ykws また、テストを毎回確認するより CI がいた方が良さそうだったので、 actions を使うことをやってみました。 https://zenn.dev/yumemi_inc/articles/xctest-github-actions |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 👍
非同期を先取りして実装されているため無意味な指摘になりますけれど、HomePresenter の ただし仮に「スレッドブロック」の課題に純粋に取り組んだとしたとき、 問題はないのですが、一般的な視点で「非同期処理を必要としない |
@es-kumagai |
@novr @ykws @es-kumagai |
概要
session 9 の課題を実装しました。
セッションリンク
https://github.com/yumemi-inc/ios-training/blob/main/Documentation/ThreadBlock.md
変更点
スクリーンショット