IOS-노트 10(View 라이프 사이클)

2874 단어
View Controller LifeCycle
이 뷰가 준비된 후에viewDidLoad () 방법을 사용합니다. 이 때 당신의 outlet 같은 것은 모두 초기화되었습니다. 이 방법을 복사해서 뷰를 초기화하는 것은 적당하지만, 슈퍼의 이 방법을 사용해서 원래 해야 할 일을 완성하는 것을 잊지 마십시오.주의해야 할 것은 이때 View의 기하학적 위치가 설정되지 않았다는 것이다. 기하학적 위치와 관련된 일을 하고 싶다면 여기서 하지 마라.전체 View의 라이프 사이클에서 load는 한 번만 나타납니다.
뷰가 화면에 나타날 때view Will Appear () 가 호출됩니다. 이 방법은 뷰의 생명 주기에 여러 번 나타나며, 뷰가 화면에 나타날 때마다 호출됩니다.이때 기하학적 위치가 이미 확정되었다.
뷰가 화면에 실제로 나타나면viewDidAppear () 가 호출됩니다.
view가 사라질 때viewWill Disapper(), 사라진 후에viewDid Disapper()가 있습니다.
시스템에서 뷰의 크기와 위치가 바뀌었다고 생각할 때view Will Layout Subview ()와view Did Layout Subview () 를 사용합니다. 수동으로 다시 그릴 작업이 있으면 여기서 완성합니다. 이 방법이 이상한 이름을 부르는 이유는 이 뷰의 하위 뷰를 다시 배열하는 것입니다.
화면이 회전할 때, 일반적으로 자동으로 작동하며, 당신이 개입하고 싶을 때도viewWillTransitionTosize () 방법을 사용하십시오
시스템 메모리가 부족할 때,didReceiveMemoryWarning () 을 호출합니다. 이 곳에서 필요하지 않은 자원을 방출하고, 그들을 가리키는 바늘을nil로 설정하면 됩니다.
awake FromNib () 이것은view Will Appear보다 일찍 발생했습니다. 가능하면 코드를 여기에 두지 마십시오. 그러나 자신의 에이전트를 설정할 때 여기에 두면 됩니다.
프로세스는 기본적으로 다음과 같습니다. Instantiated, awake FromNib, segue preparation happens, outlets get set,view Did Load.
사라짐과 관련된 네 가지 방법은 View가 사라질 때 모두 호출됩니다.나머지는 상응하는 시기에 중복 호출된다.
좀 천천히 무대 뒤로 들어오라고 요구할 수 있다.시스템에 시간을 더 요청하세요.하지만 이 시간이 연속적이라는 보장은 없다.AppDelegate에 할 일을 추가하려면 다음과 같이 하십시오.
    func applicationDidEnterBackground(application: UIApplication) {
        var backgroundTask : UIBackgroundTaskIdentifier! = nil
        //        ,                 
        backgroundTask = application.beginBackgroundTaskWithExpirationHandler() {
            //             
            //        endBackgroundTask        
            application.endBackgroundTask(backgroundTask)
            backgroundTask = UIBackgroundTaskInvalid
        }
        let backgroundQueue = NSOperationQueue()
        backgroundQueue.addOperationWithBlock() {
            NSLog("do somgthing")
            //   10         
            //        endBackgroundTask        
            application.endBackgroundTask(backgroundTask)
            backgroundTask = UIBackgroundTaskInvalid
        }
    }

       
너도 백스테이지에서 정해진 시간에 자동으로 깨우는 앱을 설정해서 일을 할 수 있다.이 기능을 수행하려면 먼저 프로젝트 설정에서Capabilities의 Background Modes의 Background Fetch를 사용해야 합니다.그리고 setminimumbackgroundfetchinterval 알림 시스템의 최소 간격을 설정합니다.마지막으로 AppDelegate에 할 일을 추가합니다.
    func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
        //         ,          
        let error = true
        if error {
            completionHandler(UIBackgroundFetchResult.Failed)
            return
        }
        return
    }

또는 백엔드에서 원격 알림을 받고 깨우는 앱은 위와 유사하게 실현하는 방법이 다르다.
어떤 앱들은 죽이지 않고 음악 재생 등 특수 앱을 이용한다.
16MB 이하로 메모리를 제어하면 메모리가 마운트될 때 메모리가 플래시 메모리에 저장됩니다.메모리가 부족할 때도 삭제되지 않습니다.

좋은 웹페이지 즐겨찾기