2009-04-01 2 views
0

내가 알기로 :은 applicationDidFinish입니다 UIImageView에 대한 이미지를 설정하기위한 잘못된 장소를 찾고 계십니까?

applicationDidFinishLaunching (UIApplicationDelegate Protocol의 대리자 메소드)은 nib 파일의 뷰가 완전히로드되기 전에 호출 된 것 같습니다. 그래서 iPhone 시뮬레이터에서 내 앱을 실행 한 직후에 UIImageView 이미지를 변경하려고 하루 종일 노력했지만 아무 일도 일어나지 않았습니다.

그런 다음 버튼을 눌러 호출하는 작은 동작 방법을 작성했습니다. 그리고 나서 그것은 일어났다 : 일한다!

그래서 applicationDidFinishLaunching 대리자 메서드는 앱이 실제로 "준비"된 후에 수행해야하는 작업에 적합한 장소가 아닙니다. 펜촉이 완전히 장착 될 때까지 기다리는 것이 더 좋습니다. 하지만 어디? 그리고 뭐?

답변

6

확인, 다른 응용 프로그램에서 다양한 논리 전역 변수를 채우는 기다립니다 더 나은 무언가가있다, 데이터베이스 연결을 열고, 데이터베이스 파일 검사와 같은 물건에 사용됩니다 펜촉을 완전히 넣으십시오. 하지만 어디? 그리고 뭐?

글로벌 설정, 환경 설정 등과 같이 특정 용도에 대해서는 -appDidFinishLaunching이 적합합니다.

UIView 관련 항목의 경우 일반적으로 UIVIewController 하위 클래스에서 -viewDidLoad 메서드를 사용합니다. 이것은 nib 파일이로드되고 IBOutlets가 초기화되고 IBActions가 첨부 된 유일한 장소입니다.

이것은 Mac OS X 세계와 다른 점입니다. -awakeFromNib이 그 곳이었습니다.

1

안녕하세요 여러분의 뷰와 뷰 컨트롤러가 인스턴스화 될 때까지 자신의 UI를 수정할 수 없습니다. 그러나 귀하의 문제를 위해서만 uiimageview를 app delegate 클래스의 속성으로 선언하고 appDidFinishLaunching 이벤트에서 초기화 할 수 있습니다. 그러나 그것은 최악의 관행입니다. 제한된 메모리를 가진 iPhone에서와 마찬가지로 항상 게으른로드 즉 : 객체가 UI에서 실제로 요구되기 바로 전에 객체를 초기화합니다. 그래서 이상적으로 UIImageView를 사용하고자하는 뷰의 viewDidLoad 이벤트에서이 작업을 수행해야합니다.

아래 applicationDidFinishLaunching 보통 내가 gues 가능한 인터넷 연결 등

관련 문제