2009-02-28 24 views
28

Thật không may, lời giải thích của Chủ sở hữu tệp khá ngắn ở tài liệu của Apple. Tôi biết nó là một đối tượng proxy. Nhưng điểm thực sự của đối tượng "Chủ sở hữu tệp" là gì? Nó tốt cho cái gì?Điều gì mô tả "Chủ sở hữu tệp" tốt nhất trong mục tiêu-c/cacao Nib?

+0

Câu hỏi này cũng thảo luận về vấn đề này: http://stackoverflow.com/questions/789251/is-there-an-easy-to-understand-guide-new-to-cocoa-xcode-etc-for-interface-bui –

+0

Để giải thích về Chủ sở hữu của Tập tin là gì: http://crazyviraj.blogspot.com/2009/05/cocoa-what-is-files-owner-in-nib.html – psychotik

Trả lời

1

http://www.cocoadev.com/index.pl?FilesOwner

Về bản chất, tùy theo đối tượng nạp các NibFile trở thành chủ sở hữu của tập tin cho rằng tập tin nib.

+1

Điều này không chính xác. Xem http://crazyviraj.blogspot.com/2009/05/cocoa-what-is-files-owner-in-nib.html – psychotik

4

Tôi biết đó là đối tượng proxy.

Không. Đó là một đối tượng thực sự. Biểu tượng trong ngòi chỉ là một proxy theo nghĩa là tất cả các biểu tượng khác đại diện cho các đối tượng được lưu trữ trong ngòi và Chủ sở hữu tệp không phải là. Nhưng FO không phải là một đối tượng proxy trong ứng dụng của bạn.

Nhưng điểm thực sự của đối tượng "Chủ sở hữu tệp" là gì? Nó tốt cho cái gì?

Đó là đối tượng sở hữu các đối tượng trong ngòi bút.

Vậy đó. Không có gì nhiều hơn thế.

+0

Cảm ơn. Vì vậy, tất cả các đối tượng cấp cao nhất trong nib đều là các thuộc tính của đối tượng Owner của File? Lớp học từ đối tượng Chủ sở hữu của Tệp đó ở đâu? Tôi có thể thấy nó ở đâu? – Thanks

+0

Chọn Chủ sở hữu tệp bằng IB, sau đó nhấn Ctrl-6. Bạn sẽ là phần Lớp danh tính sẽ cho phép bạn thiết lập lớp cho Chủ sở hữu tệp. – sbooth

+0

Không nhất thiết. Bạn có thể yêu cầu Chủ sở hữu tệp không biết rõ nội dung của ngòi bút của nó nếu bạn muốn. Đây là những gì các cửa hàng cho: nói một đối tượng về các đối tượng khác. Bạn nên cho FO ít nhất một ổ cắm vào một vật thể trong ngòi bút; sau đó bạn sẽ kết nối nó trong IB. –

6

Dễ hiểu hơn về ý nghĩa của tham chiếu Chủ sở hữu của tệp nếu bạn đọc và hiểu quy trình tải nib.

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html

khuôn khổ Cocoa của xử lý nhiều tải ngòi tự động thay cho bạn, với một trong những ca cao của riêng tích hợp trong các lớp phục vụ như là lớp điều khiển quản lý, hay "sở hữu" các đối tượng khởi tạo các tập tin nib của. Khi bạn tải nibs của riêng mình theo cách thủ công, bạn có thể chọn lớp nào sẽ là chủ sở hữu của tệp.

Khi bạn đọc về quá trình tải nib, hãy chú ý đến thông số "owner:" trên nhiều phương thức tải. Chính xác của nó đối tượng này sẽ được kết nối với các đối tượng trong tập tin nib của bạn như là chủ sở hữu của tập tin

+0

để tổng hợp rằng: Chủ sở hữu tệp chính xác là đối tượng đã khởi tạo/nạp NibFile, sao cho Nib giống như thuộc tính của đối tượng đó. Vì vậy, đối tượng này là tác giả, vì vậy hãy nói chủ sở hữu của NibFile đó. Đúng? – Thanks

+1

Đó là chủ yếu là chính xác, với caveat nhỏ mà một đối tượng có thể tải/nhanh chóng một tập tin nib mà không chỉ định chính nó như là chủ sở hữu. Kể từ khi chủ sở hữu được thông qua như là một tham số để nạp một cơ chế, một đối tượng có thể tải một nib, hooking lên một đối tượng như chủ sở hữu. – danielpunkass

+0

Về cơ bản, khi bạn tải ngòi bút, bạn nói "tải trong một số đối tượng từ đây; đối tượng này [chủ sở hữu:] sở hữu chúng. ”Bạn có thể nói bạn sở hữu chúng hoặc bạn có thể nói một đối tượng khác sở hữu chúng; bạn làm điều đó bằng cách thiết lập chủ sở hữu: để tự hoặc đối tượng khác. –

4

Cách tốt nhất để giải thích nó là với một ví dụ về làm thế nào để thiết lập nó. Giả sử bạn có một lớp con NSWindowController là một bộ điều khiển cho một cửa sổ tùy chọn. Cửa sổ tùy chọn nằm trong một NIB được gọi là "Tuỳ ​​chọn".

Trong lớp con NSWindowController của bạn, bạn sẽ có phương pháp init sau:

- (id)init { 
    if (self = [super initWithWindowNibName:@"Preferences"]) { 
     //do initalisation 
    } 
    return self; 
} 

này initialises bộ điều khiển cửa sổ, kết hợp nó với các ngòi bút có tên là "Preferences" trong bó chính của ứng dụng. Lưu ý rằng NIB chưa được tải (điều này sẽ xảy ra khi bạn gọi đầu tiên trên cửa sổ điều khiển cửa sổ.

Trong Preferences NIB, bạn sẽ nhấp vào biểu tượng Chủ sở hữu tệp và sau đó chuyển đến bảng Thông tin lớp của Inspector: Ở đây bạn sẽ đặt class thành tên của lớp điều khiển cửa sổ của bạn (ví dụ PreferencesController), bây giờ đại diện cho một thể hiện của bộ điều khiển cửa sổ của bạn để bạn có thể kết nối các cửa hàng và hành động.

Trong khi chỉnh sửa trong IB nó chỉ là proxy của đối tượng, như với bất kỳ đối tượng nào bạn kéo tới NIB, nhưng khi NIB được tải, nó sẽ được đặt thành bộ điều khiển cửa sổ bạn đã tạo.

29

Tệp Nib thường được gọi là "đóng băng khô" và sẵn sàng chạy, và chúng là cách tuyệt vời để làm cho ứng dụng của bạn thêm mô-đun có thể giảm mức sử dụng bộ nhớ. Nib tập tin có thể được rã đông, hoặc nạp vào bộ nhớ bất cứ lúc nào khi ứng dụng cần các đối tượng bên trong nó.

Bất cứ khi nào một tệp nib bị rã đông, nó cần một con trỏ đến đối tượng đã rã đông nó. Và đối tượng đó thường là chủ sở hữu của File. Chủ sở hữu của tệp cho phép các đối tượng bên trong tệp nib truy cập các đối tượng tồn tại trước khi tệp nib bị rã đông. Theo cách nào đó, chủ sở hữu của Tập tin hoạt động như một cầu nối giữa các đối tượng mới tải và các đối tượng cũ.

+1

Cảm ơn, giải thích tốt bằng cách sử dụng ví dụ tốt. –

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