[iOS Application Develop] 프로젝트를 새로 만든 후 먼저 해야 할 일 (1) Scene Delegate 제거
프로젝트 새로 만들기 후 시작할 일
안녕하세요.이번이 첫 투고다.
iOS 애플리케이션에서 개발한 팁 등을 조금 썼으면 좋겠다고 생각했어요.
이번에는 iOS 앱(주로 아이폰용)을 새로 개발할 때 내가 해 왔던 일을 짧게 정리하고 싶다.
처음에 하는 것은 없애는 것이다
SceneDelegate
.SceneDelegate
는 한 화면에 여러 화면을 표시하는 iOS 13의 구조지만, 아이폰 앱은 아직 장면을 활성화할 수 있는 앱이 만들어지지 않아 필요할 때 추가할 수 있어 일단 취소했다.나는 그 절차를 총결산했다.
AppDelegate에서 Scene의 기술 삭제
프로젝트를 만들 때 기본 AppDelegate 소스 코드
// MARK: UISceneSession Lifecycle
이후 신속 삭제didFinishLaunchingWithOptions
의 방법 내의 주석도 사라진다import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
-
-
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
- // Override point for customization after application launch.
return true
}
-
- // MARK: UISceneSession Lifecycle
-
- func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
- // Called when a new scene session is being created.
- // Use this method to select a configuration to create the new scene with.
- return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
- }
-
- func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
- // Called when the user discards a scene session.
- // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
- // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
- }
-
-
}
이렇게 되면 소스 코드가 이런 느낌으로 변한다.AppDelegte.swift
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
return true
}
}
AppDelegate에 window 속성 추가
기본 소스 코드
SceneDelegate
에 배치된 UIWindow형 속성window
의 속성이 AppDelegate
로 이동합니다.AppDelegte.swift
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
+ var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
return true
}
}
Info.plist에서 UIAPplicationScenneManifest 를 모두 제거
Info.plist
소스 코드(Open As>Source Code)를 표시하고 UIApplicationSceneManifest
항목을 삭제합니다.물론 속성 목록 표시(Open As>Property List)도 가능합니다.
Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
:
(省略)
:
- <key>UIApplicationSceneManifest</key>
- <dict>
- <key>UIApplicationSupportsMultipleScenes</key>
- <false/>
- <key>UISceneConfigurations</key>
- <dict>
- <key>UIWindowSceneSessionRoleApplication</key>
- <array>
- <dict>
- <key>UISceneConfigurationName</key>
- <string>Default Configuration</string>
- <key>UISceneDelegateClassName</key>
- <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
- <key>UISceneStoryboardFile</key>
- <string>Main</string>
- </dict>
- </array>
- </dict>
- </dict>
:
(省略)
:
</dict>
</plist>
SceneDelegate.swift 파일 삭제
보통 왼쪽 창의 트리에서 파일을 삭제합니다.
총결산
프로젝트 완료 후
여기 빌딩까지 앱으로 작동하면 OK라고 생각해요.
※ 물론 아이패드 앱 개발과 앱의 필요에 따라 씬도 필요할 수 있습니다.꼭 지워야 할 것을 추천하는 것은 아니다.
여러가지 할 일이 더 있지만 그건 또 다른 기회야.
그럼 안녕히 계세요.
Reference
이 문제에 관하여([iOS Application Develop] 프로젝트를 새로 만든 후 먼저 해야 할 일 (1) Scene Delegate 제거), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/nkysyuichi/articles/c3c2a6a63e1404텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)