Przeglądam wspaniały blog prowadzony przez Scotta Stevensona i próbuję zrozumieć podstawową koncepcję Objective-C polegającą na przypisywaniu delegatom właściwości „przypisuj” zamiast „zachowaj”. Uwaga: oba są takie same w środowisku zbierania elementów bezużytecznych. Najbardziej interesuje mnie środowisko nie oparte na GC (np .: iPhone).
Bezpośrednio z bloga Scotta:
„Słowo kluczowe assign wygeneruje metodę ustawiającą, która bezpośrednio przypisuje wartość do zmiennej instancji, zamiast ją kopiować lub zachowywać. Jest to najlepsze dla typów pierwotnych, takich jak NSInteger i CGFloat, lub obiektów, których bezpośrednio nie posiadasz, takich jak delegaci”.
Co to znaczy, że nie jesteś bezpośrednio właścicielem obiektu delegata? Zwykle zatrzymuję swoich delegatów, ponieważ jeśli nie chcę, aby odeszli w otchłań, zatrzymanie zajmie się tym za mnie. Zwykle abstrakcyjne UITableViewController z dala od odpowiedniego źródła danych i deleguj również. Zachowuję również ten konkretny przedmiot. Chcę mieć pewność, że nigdy nie zniknie, więc mój UITableView zawsze ma swojego delegata.
Czy ktoś może dalej wyjaśnić, gdzie / dlaczego się mylę, aby zrozumieć ten wspólny paradygmat w programowaniu Objective-C 2.0 polegający na używaniu właściwości assign na delegatach zamiast zachowania?
Dzięki!