새로운 iOS 8 Today 위젯에 코드를 작성하고 있지만 widgetPerformUpdateWithCompletionHandler:
이 호출 될 때마다 (즉, @property
에서 생성 된) my ivars가 재설정된다는 사실을 알았습니다. 새보기 컨트롤러가 인스턴스화 될 때마다 마찬가지입니다.오늘 연장판 Ivars가 지속적으로 재설정됩니까?
위젯에 대한 업데이트 (예 : 백그라운드에있는 동안 및 콘텐츠 업데이트를 위해 호출 됨) 사이에 데이터를 메모리에 저장할 수 없습니다.
정상적인 동작입니까, 아니면 버그입니까? 재설정되는 메모리 기반 데이터에 의존하는 대신 간단한 번호를 NSUserDefaults
에 저장해야합니까?
저는 이것을 너무 철저히 들여다 보지 않았지만, 확장 된 '생존 프로세스는 짧지 만, 단 하나의 작업을 수행하는 데 절대적으로 필요하지는 않습니다. 예 : [문서의 라이프 사이클 다이어그램] (https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionOverview.html#//apple_ref/doc/uid/)을 참조하십시오. TP40014214-CH2-SW2). –
감사합니다. @ JoshCaswell. 나는 그 섹션을 보았지만 다양한 확장 타입에 대해서는 의미가 있지만, 패널이 닫히면 위젯 라이프 사이클이 끝난다는 것이 이상하게 보입니다 (그렇게 일어나는 것처럼 보입니다). 패널이 열릴 때마다 새 위젯이 인스턴스화 된 다음 해당 메소드의 목적을 다시 조사해야합니다. – sidyll
확장자가'widgetPerformUpdateWithCompletionHandler :'를 호출하는 사이에 실행되지 않습니다. iOS가 새 데이터를 가져올 수 있도록 백그라운드에서 확장 프로그램을 실행하면 해당 메소드가 호출됩니다. 그런 다음 OS는 확장 프로그램의 이미지 (완료 핸들러가 제공하는 이미지)를 확장을위한 일종의 "실행 화면"으로 표시합니다 (알림 센터가 시작될 때 확장 프로그램을 사용할 수 없을 때까지 _immediately_). 그것은). 업데이트 된 데이터가 서버에서 오기를 기다리는 동안 캐시 된 데이터를 저장하기 위해 NSUserDefaults를 사용하려고합니다. –