2012-06-03 10 views
5

Dlaczego powinienem ustawić właściwość klasy właściciela pliku, a nie tożsamość klasy mojego obiektu niestandardowego, która jest wyświetlana w stalówce i nawiązywać z nią połączenia? Co się stanie, jeśli ustawię właściciela pliku na zero? Dla mnie wszystko działa dobrze z właścicielem pliku zerowego, więc jaka jest szacunek w związku z nim?Jaka jest potrzeba właściciela pliku w plikach xcode xib? Czy mogę zrobić to samo bez właściciela pliku?

Odpowiedz

8

stalówkę reprezentuje zarchiwizowany wykres obiektu. Możesz go załadować, a ten wykres obiektów zostanie odtworzony. Rzecz, zazwyczaj chcesz/potrzebujesz nowo załadowanego wykresu obiektów, który ma zostać podłączony do już istniejącego wykresu obiektu twojego programu. Nie chcesz, żeby to było rozdzielone, odłączone od wszystkiego innego.

Istnieje kilka sposobów, które nowo załadowany wykres obiektów można połączyć z resztą wykresu obiektu programu. Jednym ze sposobów jest zestaw obiektów proxy dostępnych w NIB. Jest jeden dla obiektu aplikacji. Kolejnym takim obiektem proxy jest Właściciel pliku. Obiekt proxy to element, który ma reprezentację w NIB, ale w rzeczywistości nie jest zawarty w NIB. W przeciwieństwie do innych obiektów w NIB, obiekty reprezentowane przez proxy nie są tworzone, gdy NIB jest załadowany, istnieją przed załadowaniem NIB. Proxy umożliwiają połączenia między tymi wcześniej istniejącymi obiektami i obiektami w NIB. W ten sposób nowy wykres obiektów z NIB może zostać podłączony do istniejącego wykresu obiektu twojego programu.

Menu główne NIB jest nietypowe. Jest on automatycznie ładowany podczas uruchamiania aplikacji przez Cocoa, co oznacza, że ​​nie ma (nie może być, naprawdę) zbyt wiele wcześniejszych obiektów. Ten NIB zwykle zawiera również instancję delegata aplikacji, która jest rodzajem kontrolera koordynującego. Zwykle jednak inne typy NIB nie zawierają kontrolerów koordynujących. (Zawierają kontrolery pośredniczące, takie jak NSArrayController, ale to jest inne.) Zamiast tego, kontrolery koordynujące są zazwyczaj tworzone w kodzie i często są odpowiedzialne za ładowanie NIB.

Na przykład można użyć NSWindowController jako kontrolera koordynującego dla okna. Okno zostanie zdefiniowane w NIB. Kontroler okien będzie instancjonowany w kodzie - w zależności od tego, który kod zdecyduje, że okno ma zostać utworzone - i załaduje NIB. Byłby także właścicielem pliku NIB. Zarządzałby oknem i obiektami najwyższego poziomu NIB.

Jeśli ustawiasz właściciela pliku na nil, to a) prawdopodobnie masz do czynienia z bardzo prostymi NIBs w tym punkcie, oraz b) możesz być nieszczelnym obiektem najwyższego poziomu z ładowanych NIB.

+0

Po lewej stronie budowniczego interfejsu mamy 2 sekcje. Symbole zastępcze i obiekty. Lesty mówią, że tworzymy klasę MyView w stalówce. Ta klasa pojawia się w sekcji Obiekty i mogę tworzyć połączenia typu outlet-action ze stalówką. Mogłem zrobić te same połączenia, jeśli uczyniłem klasę właściciela pliku MyView. Jaka jest ocena tych dwóch sytuacji? Dzięki –

+0

Byłoby bardzo nietypowe, aby widok był właścicielem NIB. Będziesz także wykonywać połączenia dla dwóch różnych obiektów. To tak, jakbyś zapytał: "Mogę ustawić właściwości jednego obiektu, mogę też ustawić właściwości innego obiektu. Jaka jest różnica?" Jeśli tworzysz połączenia dla widoku, który faktycznie znajduje się w NIB, to jest to obiekt, który się łączy. Jeśli nawiązujesz połączenia z właścicielem pliku, to obiekt, który jest określony jako właściciel NIB po załadowaniu, jest połączony. Właścicielem oczywiście nie może być żaden z obiektów w NIB. –

5

Właściciel pliku to plik zawierający wszystkie IBOutlety i IBActions dla tego widoku. Na przykład, jeśli masz klasę "ViewController" i zawiera ona IBOutlet UIButton *button i -(IBAction)changeViewWhenButtonPressed: (id) sender, jedynym sposobem podłączenia gniazdka i działania jest ustawienie "ViewController" jako właściciela pliku widoku.

Jestem przekonany, że tożsamość klas jest równoznaczna z właścicielem pliku.

Również te linki mogą być pomocne:

What are File Owner and First Responder in iPhone SDK - xCode?

File's Owner Definitions

What is File's Owner

+0

Dzięki za szybką odpowiedź, ale jestem nadal na poziomie 1 i nie mogę głosuj w górę .. –

+0

Gdybyś mógł odpowiedzieć na mój komentarz na temat Ken, byłoby wspaniale :) –

3

"Właściciel pliku" to sposób, w jaki obiekty w stalowniku mogą odnosić się do obiektów poza stalówką i odwrotnie. (Istnieją również bardziej złożone sposoby, aby to zrobić, ale nie są one używane tak często.Jeśli nie musisz tego robić, nie musisz używać właściciela pliku.

W przypadku aplikacji głównej właścicielem pliku jest obiekt Application. Możesz nie mieć potrzeby nawiązywania z nim połączeń, jeśli cała logika aplikacji znajduje się w klasie niestandardowej również utworzonej w stalówce i jeśli użyjesz "pierwszej odpowiedzi" dla wiadomości akcji wysłanych do aplikacji. To jest wporządku.

Jeśli masz okno dokumentu lub okienko popover lub coś takiego, często właścicielem pliku jest obiekt, który jest przeglądany, dlatego warto dołączyć do niego interfejs użytkownika. Możesz ładować tę samą stalówkę wiele razy, każdą "posiadaną" przez inną instancję tej klasy - inny dokument lub sprawdzony obiekt lub coś podobnego.

(Zasadniczo, właściciel pliku jest po prostu cokolwiek obiekt został przekazany do „właściciela:”. Parametr w metodzie stalówka ładowania)

Powiązane problemy