[iOS Application Develop] 프로젝트를 새로 만든 후 먼저 해야 할 일 (1) Scene Delegate 제거

16749 단어 iOSSwiftXcodetech

프로젝트 새로 만들기 후 시작할 일


안녕하세요.이번이 첫 투고다.
iOS 애플리케이션에서 개발한 팁 등을 조금 썼으면 좋겠다고 생각했어요.
이번에는 iOS 앱(주로 아이폰용)을 새로 개발할 때 내가 해 왔던 일을 짧게 정리하고 싶다.
처음에 하는 것은 없애는 것이다SceneDelegate.SceneDelegate는 한 화면에 여러 화면을 표시하는 iOS 13의 구조지만, 아이폰 앱은 아직 장면을 활성화할 수 있는 앱이 만들어지지 않아 필요할 때 추가할 수 있어 일단 취소했다.
나는 그 절차를 총결산했다.

AppDelegate에서 Scene의 기술 삭제


프로젝트를 만들 때 기본 AppDelegate 소스 코드
  • // MARK: UISceneSession Lifecycle 이후 신속 삭제
  • didFinishLaunchingWithOptions의 방법 내의 주석도 사라진다
  • 쓸데없는 공행 제거
  • AppDelegte.swift
    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 파일 삭제


    보통 왼쪽 창의 트리에서 파일을 삭제합니다.

    총결산


    프로젝트 완료 후
  • AppDelegate에서 Scene에 대한 설명 삭제
  • AppDelegate에 창 속성 추가
  • Info.plist에서 UIApplicationScenneManifest 제거
  • SceneDelegate.swift 파일 삭제
  • 이런 느낌으로 Scene과 관련된 것을 항목에서 제거한다.
    여기 빌딩까지 앱으로 작동하면 OK라고 생각해요.
    ※ 물론 아이패드 앱 개발과 앱의 필요에 따라 씬도 필요할 수 있습니다.꼭 지워야 할 것을 추천하는 것은 아니다.
    여러가지 할 일이 더 있지만 그건 또 다른 기회야.
    그럼 안녕히 계세요.

    좋은 웹페이지 즐겨찾기