Skip to content

[#172] 프로젝트 베이스를 iOS 16에서 iOS 17로 변경한다#173

Merged
opficdev merged 4 commits intodevelopfrom
chore/#172-iOS16to17
Mar 3, 2026
Merged

[#172] 프로젝트 베이스를 iOS 16에서 iOS 17로 변경한다#173
opficdev merged 4 commits intodevelopfrom
chore/#172-iOS16to17

Conversation

@opficdev
Copy link
Copy Markdown
Owner

@opficdev opficdev commented Mar 3, 2026

@opficdev opficdev self-assigned this Mar 3, 2026
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 Pull Request는 프로젝트의 iOS 배포 대상을 iOS 17로 업그레이드하고, 이에 맞춰 SwiftUI의 최신 상태 관리 패러다임인 @observable 매크로를 전반적으로 적용합니다. 이를 통해 기존의 @published 및 ObservableObject 기반의 ViewModel 및 라우터 구현을 개선하여, 코드의 가독성과 유지보수성을 높이고 iOS 17의 새로운 기능을 활용할 수 있도록 합니다.

Highlights

  • iOS 17 배포 대상 업데이트: 프로젝트의 배포 대상이 iOS 16에서 iOS 17로 업데이트되었습니다.
  • SwiftUI @observable 매크로 채택: iOS 17에서 도입된 @observable 매크로를 활용하여 ViewModel 및 NavigationRouter의 상태 관리 방식이 @published 및 ObservableObject에서 @observable로 전환되었습니다. 이는 SwiftUI 뷰의 성능 최적화 및 코드 간소화에 기여합니다.
  • SwiftUI .onChange 수정자 업데이트: iOS 17의 새로운 .onChange(of:perform:) 구문에 맞춰 이전 값과 새 값을 모두 받는 형태로 수정되었습니다.
  • 불필요한 Searchable 파일 제거: 더 이상 사용되지 않는 Searchable.swift 파일이 제거되었으며, 관련 TODO 주석도 삭제되었습니다.
Changelog
  • DevLog.xcodeproj/project.pbxproj
    • IPHONEOS_DEPLOYMENT_TARGET을 16에서 17로 업데이트했습니다.
  • DevLog/App/RootView.swift
    • viewModel 속성을 @StateObject에서 @State로 변경했습니다.
    • .onChange 수정자의 구문을 업데이트했습니다.
  • DevLog/Presentation/Protocol/Store.swift
    • Store 프로토콜이 ObservableObject 대신 AnyObject를 상속하도록 변경했습니다.
  • DevLog/Presentation/ViewModel/AccountViewModel.swift
    • AccountViewModel에 @observable 매크로를 적용하고 state 속성에서 @published를 제거했습니다.
  • DevLog/Presentation/ViewModel/HomeViewModel.swift
    • HomeViewModel에 @observable 매크로를 적용하고 state 속성에서 @published를 제거했습니다.
  • DevLog/Presentation/ViewModel/LoginViewModel.swift
    • LoginViewModel에 @observable 매크로를 적용하고 state 속성에서 @published를 제거했습니다.
  • DevLog/Presentation/ViewModel/ProfileViewModel.swift
    • ProfileViewModel에 @observable 매크로를 적용하고 state 속성에서 @published를 제거했습니다.
  • DevLog/Presentation/ViewModel/PushNotificationListViewModel.swift
    • PushNotificationListViewModel에 @observable 매크로를 적용하고 state 속성에서 @published를 제거했습니다.
  • DevLog/Presentation/ViewModel/PushNotificationSettingsViewModel.swift
    • PushNotificationSettingsViewModel에 @observable 매크로를 적용하고 state 속성에서 @published를 제거했습니다.
  • DevLog/Presentation/ViewModel/RootViewModel.swift
    • RootViewModel에 @observable 매크로를 적용하고 state 속성에서 @published를 제거했습니다.
  • DevLog/Presentation/ViewModel/SearchViewModel.swift
    • SearchViewModel에 @observable 매크로를 적용하고 state 속성에서 @published를 제거했습니다.
  • DevLog/Presentation/ViewModel/SettingViewModel.swift
    • SettingViewModel에 @observable 매크로를 적용하고 state 속성에서 @published를 제거했습니다.
  • DevLog/Presentation/ViewModel/TodoDetailViewModel.swift
    • TodoDetailViewModel에 @observable 매크로를 적용하고 state 속성에서 @published를 제거했습니다.
  • DevLog/Presentation/ViewModel/TodoEditorViewModel.swift
    • TodoEditorViewModel에 @observable 매크로를 적용하고 state 속성에서 @published를 제거했습니다.
  • DevLog/Presentation/ViewModel/TodoListViewModel.swift
    • TodoListViewModel에 @observable 매크로를 적용하고 state 속성에서 @published를 제거했습니다.
  • DevLog/Presentation/ViewModel/TodoManageViewModel.swift
    • TodoManageViewModel에 @observable 매크로를 적용하고 state 속성에서 @published를 제거했습니다.
  • DevLog/UI/Common/Component/Toast.swift
    • .onChange 수정자의 구문을 업데이트했습니다.
  • DevLog/UI/Common/NavigationRouter.swift
    • NavigationRouter에 @observable 매크로를 적용하고 path 속성에서 @published를 제거했습니다.
  • DevLog/UI/Common/Searchable.swift
    • 파일을 제거했습니다.
  • DevLog/UI/Home/HomeView.swift
    • router와 viewModel 속성을 @StateObject에서 @State로 변경했습니다.
    • .environmentObject를 .environment로 업데이트했습니다.
  • DevLog/UI/Home/TodoDetailView.swift
  • DevLog/UI/Home/TodoEditorView.swift
    • viewModel 속성을 @StateObject에서 @State로 변경했습니다.
    • .onChange 수정자의 구문을 업데이트했습니다.
  • DevLog/UI/Home/TodoListView.swift
    • viewModel 속성을 @StateObject에서 @State로 변경했습니다.
    • router 환경 객체를 @EnvironmentObject에서 @Environment로 변경했습니다.
  • DevLog/UI/Home/TodoManageView.swift
  • DevLog/UI/Login/LoginView.swift
  • DevLog/UI/Profile/ProfileView.swift
    • viewModel과 router 속성을 @StateObject에서 @State로 변경했습니다.
    • .environmentObject를 .environment로 업데이트했습니다.
    • .onChange 수정자의 구문을 업데이트했습니다.
  • DevLog/UI/PushNotification/PushNotificationListView.swift
  • DevLog/UI/Search/SearchView.swift
    • router와 viewModel 속성을 @StateObject에서 @State로 변경했습니다.
    • .onChange 수정자의 구문을 업데이트했습니다.
    • 불필요한 TODO 주석을 제거했습니다.
  • DevLog/UI/Setting/AccountView.swift
  • DevLog/UI/Setting/PushNotificationSettingsView.swift
  • DevLog/UI/Setting/SettingView.swift
    • viewModel 속성을 @StateObject에서 @State로 변경했습니다.
    • router 환경 객체를 @EnvironmentObject에서 @Environment로 변경했습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

이 Pull Request는 프로젝트의 최소 지원 버전을 iOS 16에서 iOS 17로 상향 조정하는 변경 사항을 담고 있습니다. 주요 변경점은 SwiftUI의 Observation 프레임워크 도입으로, 기존 ObservableObject를 따르던 ViewModel들이 @Observable 매크로를 사용하도록 수정되었습니다. 이와 함께 @StateObject@State로, @EnvironmentObject는 새로운 @Environment 구문으로 대체되었고, onChange 등 iOS 17에서 변경된 API들이 코드 전반에 걸쳐 적용되었습니다. 변경된 코드에 대한 검토를 완료했으며, 별도의 수정 제안 사항은 없습니다.

@opficdev opficdev merged commit 65f15db into develop Mar 3, 2026
1 check passed
@opficdev opficdev deleted the chore/#172-iOS16to17 branch March 3, 2026 12:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

프로젝트 베이스롤 ios 16에서 17로 올린다

1 participant