Odpowiedz na ten temat
Strona 1 z 2 1 2 OstatniaOstatnia
Pokaż wyniki od 1 do 10 z 17
  1. Avatar pio11
    Dołączył
    Mar 2008
    Postów
    1,591

    Cytuj | #1

    Witam. Miałem małą przerwę w programowaniu i po zainstalowaniu najnowszego Xcode moim oczom ukazały się pewne nowe rzeczy w składni, które troszkę mnie zastanawiają . A mianowicie chodzi o takie coś:
    Kod:
    @synthesize window = _window;
    Czym ta składnia różni się od wcześniej przeze mnie używanej:
    Kod:
    @synthesize window;
    Oraz jak dokładnie działa fiunkcja NSLocalizedString(,) bo dokumentacja nic zbytnio nie rozwiała moich wątpliwości.

    Dzięki z góry za pomoc
    Komputer: Mac Mini C2D 2.0 | 120 GB | 500 GB | 3 GB RAM | Lion
    Telefon: LG-P500 iPhone 3G 16 GB | 4.2.1 - R.I.P
    Tablet: iPad 32 GB WiFi - 3G - znaleziono pod choinką


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

    Cytuj | #2

    różni się tym, że u ciebie zmienna nazywa się window
    a w przykładzie nazywa się _window
    natomiast w obydwu setter i getter to setWindow() getWindow()
    a nie (jak można by się spodziewać przez nazwę zmiennej _window) set_window(), get_window()

    czyli możesz mieć zmienną foo a 'zsyntezować' sobie setter i getter do niej setBar() i getBar().
    To jest stara sprawa.
    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 pio11
    Dołączył
    Mar 2008
    Postów
    1,591

    Cytuj | #3

    Dzięki Roberto . Nigdy tak nie robiłem więc nie znałem takich zabiegów
    Komputer: Mac Mini C2D 2.0 | 120 GB | 500 GB | 3 GB RAM | Lion
    Telefon: LG-P500 iPhone 3G 16 GB | 4.2.1 - R.I.P
    Tablet: iPad 32 GB WiFi - 3G - znaleziono pod choinką

  4. Avatar danteusz
    Dołączył
    Jun 2009
    Skąd
    Wrocław-Psie Pole, Wroclaw, Poland, Poland
    Postów
    450

    Cytuj | #4

    Cytat Napisał Roberto Zobacz post
    różni się tym, że u ciebie zmienna nazywa się window
    a w przykładzie nazywa się _window
    natomiast w obydwu setter i getter to setWindow() getWindow()
    a nie (jak można by się spodziewać przez nazwę zmiennej _window) set_window(), get_window()

    czyli możesz mieć zmienną foo a 'zsyntezować' sobie setter i getter do niej setBar() i getBar().
    To jest stara sprawa.
    Czy taki zabieg służy czemuś oprócz wprowadzania zamieszania z nazwami?
    Komputer: Macbook Pro '11 15 cali
    Telefon: iPhone 3GS

  5. Avatar tmkszlc
    Dołączył
    Sep 2008
    Skąd
    Koszalin
    Postów
    947

    Cytuj | #5

    No właśnie ja wcześniej nie miałem do czynienia z obj-c i dla mnie wydało się to trochę bez sensu jak czytałem książkę. Również chętnie dowiem się czy jest w tym jakiś głębszy sens.
    Komputer: MacBook Pro 17 2010 i7 Matt
    Telefon: iPhone 3G 16GB
    Odtwarzacz: iPhone 3G 16GB
    Tablet: The new iPad 32GB WiFi + 4G
    

  6. uho
    Mężczyzna uho jest offline
    Avatar uho
    Dołączył
    Mar 2008
    Skąd
    Łuków, PL
    Postów
    135

    Cytuj | #6

    sens dotyczy przyjętego kanonu nazewnictwa, w którymś dokumencie jest to opisane, jak nazywać zmienne, statyczne, metody itp.
    Telefon: iPhone 4S 16GB
    Odtwarzacz: iPod Nano 4G
    Tablet: iPad2 3G 16G
    WWW: http://www.tomaszbuziak.com

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

    Cytuj | #7

    danteusz - służy temu, że masz swobodę i syntezowanie tych metod nic ci nie 'zabiera' (bo jakbyś je pisał z palca to mógłbyś przecież nazwać je jak chcesz, prawda?).
    dużo osób robi tak, że zmienne danej klasy poprzedza właśnie '_'
    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

  8. Avatar macieks72

    Dołączył
    Aug 2009
    Postów
    9,327

    Cytuj | #8

    Ja wolę "self.zmienna" jeśli chodzi o czytelność kodu niż to głupie "_", którego dawno się oduczyłem.

    Bo jak rozumiem to _windows to tylko taki alias, tak?
    Komputer: Macbook Pro wykąpany w pepsi, teraz Acer Aspire 5750G
    Telefon: iPhone 4 - iOS 5.1.1

  9. Avatar wojtkow SM? Tylko S...


    Dołączył
    May 2007
    Skąd
    Poznań
    Postów
    3,620

    Cytuj | #9

    Ale podstawienie pod self.zmienna daje często inny efekt niż podstawienie pod samą zmienną
    (w pierwszym przypadku odpala się setter, w drugim nie).
    Komputer: MBA 11.6" i7 1.8GHz 4GB RAM 256GB SSD, iMac 27" i7 2.8GHz 8GB RAM 240 GB SSD + 1 TB HDD
    Telefon: iPhone 4
    Odtwarzacz: iPhone 4
    Tablet: iPad (2012) 4G, iPad WiFi
    Moje programy w AppStore:
    iOS => Project Planner | Project Planner HD
    OSX => Project Planner Viewer
    Zgodnie z regulaminem nie udzielam porad poprzez PW - masz pytanie, pytaj na forum.

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

    wojtkow ma rację - self.zmienna = foo to to samo co [self setZmienna:foo]
    więc jak się zrobi w setterze coś takiego jak self.zmienna = foo to mamy ładną rekurencję błąd początkujących ;]

    macieks72 - _windows to nie alias tylko nazwa tej zmiennej, ale 'na zewnątrz' jest ona dostępna jakby była pod nazwą windows (czyli to windows to raczej alias) - czyli zgodnie z konwencją nazewnictwa - przy pomocy foo.windows albo setWindows czy getWindows
    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

Odpowiedz na ten temat
Strona 1 z 2 1 2 OstatniaOstatnia