iPhone Dev - Hvor langt ned skal jeg kaste?

stemmer
1

Hvis jeg har en metode som passerer et argument av type void * (UIView animasjon gjorde stopp metoden, må være et tomrom pekeren), eller av type id , og jeg vet at argumentet er et UIBarButton element, og jeg trenger å deaktivere den [barbuttonitem setEnabled: NO] ;, skal jeg kaste argumentet til en UIControl, som er så langt som jeg trenger for å kunne bruke setEnabled (uten advarsel), eller skal jeg kaste det hele veien ned til UIBarButtonItem? Hvorfor?

Takk!!

Publisert på 21/08/2009 klokken 02:03
kilden bruker
På andre språk...                            


4 svar

stemmer
2

Jeg vil si kastet den til en UIControl, bare i tilfelle gjennomføringen endringer på enkelte punkt. Jeg hadde alltid kastet til den mest hensiktsmessige grensesnitt (ikke implementering), og UIControl er trolig veien å gå.

Svarte 21/08/2009 kl. 02:08
kilden bruker

stemmer
0

Casting er bare å fortelle kompilatoren at du venter en variabel av en viss type: Det trenger ikke føre til noen endringer i variabelen vedtatt i Du kan kaste det for UIBarButtonItem uten bekymringer..

Svarte 21/08/2009 kl. 15:33
kilden bruker

stemmer
1

UIBarItemer ikke avledet fra UIControl, så støping til UIControl egentlig ikke er den riktige tingen å gjøre. Det fungerer fordi begge klasser tilfeldigvis har setEnabled:metoder.

Kaster er bare en annen form for dokumentasjon; de påvirker ikke hva som skjer under kjøring. Hvis du venter en UIBarItemså kaste det som sådan.

Svarte 23/08/2009 kl. 06:44
kilden bruker

stemmer
0

Hvis jeg forstår Objective-C på riktig måte, kan du ringe setEnabled direkte på objektet, du bare ikke vil få en garanti for at samtalen vil gå gjennom. Men hvis du vet at objektet returneres er en UIBarItem så kan du kalle det.

Svarte 23/08/2009 kl. 07:09
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more