2011-11-01 22 views
5

Tôi đã phát triển ứng dụng của mình ban đầu cho iOS 4 và giờ đây iOS 5 đã hết, tôi đã quyết định phát triển SDK iOS 5 mà giờ đây dường như đã làm hỏng ứng dụng của tôi.Mục tiêu-C - Sự khác biệt trong các phương pháp khởi động ứng dụng từ iOS 4 đến iOS 5?

Tôi có ứng dụng thanh tab với bộ điều khiển điều hướng trong mỗi tab.

Trong iOS 4 mọi thứ trong phương thức -application:didFinishLaunchingWithOptions: được thực hiện trước sau khi khởi động. Sau khi phương thức đó được thực hiện, bộ điều khiển xem cho tab đầu tiên đã được tải.

Vì vậy, khi tôi đăng nhập quá trình ứng dụng khởi động của tôi (chạy mô phỏng cho iOS 4.3) nó trông như thế này:

-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 35] didFinishLaunchingWithOptions method running 
-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 60] This should be executed first // And it does as it should 
-[AcandoAppDelegate applicationDidBecomeActive:] [Line 254] applicationDidBecomeActive method running 
-[SeminarsViewController viewDidLoad] [Line 58] 2 - viewDidLoad method running 
-[SeminarsViewController viewDidLoad] [Line 60] This should be executed second // Also as it should 
-[SeminarsViewController viewWillAppear:] [Line 123] 3 - viewWillAppear method running 
-[SeminarsViewController viewDidAppear:] [Line 173] viewDidAppear running 

Bây giờ khi tôi đăng nhập quá trình ứng dụng khởi động của tôi (chạy mô phỏng cho iOS 5.0) có dạng như sau:

-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 35] didFinishLaunchingWithOptions method running 
-[SeminarsViewController viewDidLoad] [Line 58] 2 - viewDidLoad method running 
-[SeminarsViewController viewDidLoad] [Line 60] This should be executed second // So this should be executed second but is executed first 
-[SeminarsViewController viewWillAppear:] [Line 123] 3 - viewWillAppear method running 
-[AcandoAppDelegate application:didFinishLaunchingWithOptions:] [Line 60] This should be executed first // And this is executed second but should be executed first 
-[AcandoAppDelegate applicationDidBecomeActive:] [Line 254] applicationDidBecomeActive method running 
-[SeminarsViewController viewDidAppear:] [Line 173] viewDidAppear running 

Tôi có thiếu thứ gì đó hiển nhiên ở đây không? Đối với tôi, có vẻ như chúng tôi có hai tình huống khởi động khác nhau giữa iOS 4 và iOS 5?

+0

Nếu bạn kiểm tra điều này nhiều lần, các kết quả có giống nhau không? –

+0

Có kết quả giống nhau mỗi lần. Việc xử lý các tập tin .xib (MainWindow.xib trong trường hợp của tôi) khác nhau trong iOS 5 so với iOS 4? –

Trả lời

1

Tại sao khởi động thành công ứng dụng của bạn phụ thuộc vào một chuỗi các sự kiện cụ thể này? Không nên có gì trong các chuỗi trên mà nguyên nhân bạn đưa ra, mã của bạn không nên quên về trình tự khởi động chính xác.

Bạn có thể cung cấp một số mã để giải thích TẠI SAO điều này gây ra sự cố cho bạn?

+0

Tôi đang khởi tạo một số đối tượng trong phương thức '-application: didFinishLaunchingWithOptions:' mà tôi phụ thuộc vào nên được khởi tạo TRƯỚC KHI tải trình điều khiển xem (SeminarsViewController) trong tab đầu tiên. Đó là lý do tại sao khởi động là "thành công" (mã của tôi hoạt động như dự định) trong iOS 4, nhưng mã giống hệt nhau đang hoạt động khác i iOS 5. Vì vậy, bằng cách nào đó chúng đã thay đổi thứ gì đó theo cách '-ứng dụng: didFinishLaunchingWithOptions:' hoạt động từ iOS 4 đến iOS 5. –

+1

Ahh ok. Tôi sẽ có xu hướng treo lên bộ điều khiển xem của bạn thông qua mã thay vì giao diện Builder, nó sẽ cung cấp cho bạn toàn quyền kiểm soát khi bộ điều khiển xem được tạo ra (và xem tiếp theo được nạp). –

+0

Nhưng tại sao mã của tôi hoạt động khác nhau tùy thuộc vào việc nó chạy trên iOS 4 hay iOS 5? –

Các vấn đề liên quan