Odpowiedz na ten temat
Pokaż wyniki od 1 do 3 z 3
  1. Avatar macQUB
    Dołączył
    Aug 2006
    Skąd
    Podkarpacie
    Postów
    251

    Cytuj | #1

    Po co są selektory, czemu mają służy, skoro to:
    Kod:
    SEL selektor=@(addObject:);
    //pomijam sprawdzanie czy dany obiekt może obsłużyć selektor
    [array performSelector: selektor withObject:obiekt
    Można krócej zapisać
    Kod:
     [array adObject:obiekt];
    Komputer: MacBook alu 13,3' 2,4 GHz
    Telefon: iPhone 4s


  2. Avatar Roberto
    Dołączył
    Feb 2007
    Skąd
    Wrocław
    Postów
    11,866

    Cytuj | #2

    żeby to było dynamiczne po prostu.
    jak zakodzisz to wprost to faktycznie nic ci nie daje.
    ale jeżeli to co jest selektorem jest zmienną, to daje ci to wiele możliwości.
    jak np. metodę
    Kod:
    - (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument
    w NSThread
    nie wiem do końca jak sobie byś wyobrażał stworzenie czegoś takiego bez SEL. to jest główna idea tego.

    Dzięki temu możesz też sprawdzić czy dany obiekt obsługuje daną metodę (respondsToSelectorSEL)selector). Co jest przydatne np. w przypadku delegatów (w końcu niektóre metody mogą być opcjonalne w protokole, a wywołanie jej na obiekcie który jej nie obsługuje wywaliłoby program)
    Ostatnio edytowane przez Roberto ; 11.06.2011 o 09:44
    Komputer: MacBook Pro 13,3" 2,26GHz (Lion 10.7.3)
    Telefon: iPhone 4S
    Tablet: iPad 2 3G
    dlaczego nie korzystasz z opcji szukaj?
    http://ifiboughtyourappalreadycaniup...acappstore.com

  3. Avatar ClassicGOD
    Dołączył
    Jan 2006
    Skąd
    Tychy
    Postów
    1,609

    Cytuj | #3

    Tak jak Roberto napisal - wyobraz sobie ze twoj obiekt dostaje selektor jako parametr metody i musi sprawdzic czy inny nalezacy do niego obiekt lub grupa obiektow go obsluguje a jezeli tak to go wykonac. Nie mozesz wtedy statycznie wpisac wywolania metody bo jej tak naprawde nie znasz. Dodatkowo zrobiles literowke w nazwie metody w drugim przykladzie - uzywajac selektora unikasz sytuacji gdzie przypadkiem, przez literowke, wywolasz inna metode niz ta ktorej istnienie sprawdzales. Jako ze selektor i tak potrzebny jest ci do sprawdzenia czy metoda jest obslugiwana przez obiekt to niewiele wiecej kosztuje ponoene jego wykorzystanie.
    Ostatnio edytowane przez ClassicGOD ; 11.06.2011 o 15:53
    Komputer: MacBook Pro 15" (mid 2010) Core i5 2.4GHz/8GB/120GB SSD/1TB HDD/Hi-Res
    Telefon: iPhone 4 32GB oraz Samsung Galaxy S i9000
    "We notice things that don't work. We don't notice things that do."

Odpowiedz na ten temat