6

Có an toàn để giả định rằng một thuộc tính, cụ thể là fetchedResultsController, của chatViewController, một thể hiện của một lớp con của UITableViewController, luôn nil khi viewDidLoad được gọi là, giả định rằng nó là thiết lập để nil trong viewDidUnload? Phew!Khi nào viewDidLoad được gọi?

Nếu trường hợp đó xảy ra, thì tôi không thấy cần phải xác định lại chức năng truy cập như trong ứng dụng ví dụ Xcode CoreDataBooks. Tôi chỉ muốn đặt tất cả các mã trong viewDidLoad thay vì trong một chức năng riêng biệt bởi vì đó là nơi duy nhất tôi sẽ sử dụng nó.

Trả lời

3

chế độ xemDidLoad được gọi sau khi chế độ xem của bạn được tải. Có hay không fetchedResultsController là nil hay không phụ thuộc vào cách viewController được khởi tạo. Ví dụ, khi tạo detailViewController, bạn có thể thiết lập nó fetchedViewController trước viewDidLoad được gọi là:

RecipeDetailViewController *detailViewController = [[RecipeDetailViewController alloc] initWithStyle:UITableViewStyleGrouped]; 
    detailViewController.fetchedResultsController = fetchedResultsController; 

    [self.navigationController pushViewController:detailViewController animated:animated]; 
    [detailViewController release]; 

Điều đó nói rằng, sau đó nil'ing fetchedResultsController trong viewDidUnload sẽ đảm bảo rằng đó là con số không.

+0

Tuyệt. Cảm ơn. Tôi nghĩ câu cuối cùng của bạn đã trả lời câu hỏi của tôi. Đó là điều tốt để biết! :) – ma11hew28

2

Bạn phải giả định rằng viewDidLoad có thể được gọi nhiều lần. Nếu có cảnh báo bộ nhớ được gửi, bộ điều khiển chế độ xem của bạn sẽ xóa chế độ xem khỏi bộ nhớ và lần tiếp theo cần có viewDidLoad sẽ được gọi.

+2

Chỉ cần rõ ràng, 'viewDidLoad' sẽ không được gọi nhiều lần liên tiếp. –

+2

Điều đó có ý nghĩa. Vì vậy, tôi có thể giả định rằng nếu tôi đặt 'fetchedResultsController' trong' viewDidLoad' và 'nil' nó trong' viewDidUnload', thì tôi sẽ không cần thiết phải thiết lập lại nó trong 'viewDidLoad'? Nói cách khác, 'viewDidUnload' luôn được gọi trước một lệnh gọi' viewDidLoad' khác, đúng không? – ma11hew28

3

viewDidLoad gọi trong Những Secnarion: -

1.when chúng tôi đẩy điều khiển xem sau khi tạo nó đối tượng bằng cách segue hoặc bằng bảng id stoary.

2.Được gọi là nhiều hơn một trong trường hợp tạo ví dụ thêm thời gian trong ứng dụng và đẩy nó một lần nữa và một lần nữa. Ví dụ: -Nếu bạn thực hiện như coaursal (có yêu cầu để điều khiển bổ sung trong khi cuộn) như nó cần phải có thể gọi nhiều lần viewDidLoad.

3. nó được gọi khi tất cả bộ nhớ (uiviewcontroller và phân lớp của nó được khởi tạo) có nghĩa là khi chế độ xem của chúng tôi sẵn sàng tải trong bộ nhớ bằng địa chỉ.

4.Hãy nhớ chỉ đối tượng điều khiển lớp con được tạo .. đối tượng lớp trong suốt không bao giờ được khởi tạo trong Secnarion bình thường.

0

viewDidLoad chỉ được gọi khi chế độ xem được khởi tạo lần đầu tiên. Nếu bạn không tái tạo bộ điều khiển xem mỗi lần trong ứng dụng của mình, bạn sẽ chỉ nhận được nó được gọi một lần (và được gọi lại nếu bạn nhận được cảnh báo bộ nhớ, và chế độ xem không được hiển thị).

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