Kom ihåg mig?
Home Menu

Menu


förstår syntaxen i xcode?

Ämnesverktyg Visningsalternativ
Oläst 2013-05-24, 13:28 #1
naak2803 naak2803 är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2011
Inlägg: 767
naak2803 naak2803 är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2011
Inlägg: 767
Standard förstår syntaxen i xcode?

Hej,

Jag är nybörjare i Xcode, och har lite svårt att förstå syntaxen i Xcode, hoppas någon där ute kan hjälpa mig.

När ska man använda denna:
[btnSend setTitle:@"Test"];
vs
btnSend.titleLabel.text = @"Test";

Man får ju fram olika metoder beroende på vilket sätt man anropar dem?

Kan någon förklara och tex jämför dem med C# kod så jag kan fatta detta för en gång skull.

jag fattar ju att alternativ två i .NET C# skrivs:
btnSend.Text = "Test";

men hur skriv alternativ ett?
naak2803 är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-05-24, 19:06 #2
Linuus Linuus är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2009
Inlägg: 890
Linuus Linuus är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2009
Inlägg: 890
Citat:
Ursprungligen postat av naak2803 Visa inlägg
Hej,

Jag är nybörjare i Xcode, och har lite svårt att förstå syntaxen i Xcode, hoppas någon där ute kan hjälpa mig.

När ska man använda denna:
[btnSend setTitle:@"Test"];
vs
btnSend.titleLabel.text = @"Test";

Man får ju fram olika metoder beroende på vilket sätt man anropar dem?

Kan någon förklara och tex jämför dem med C# kod så jag kan fatta detta för en gång skull.

jag fattar ju att alternativ två i .NET C# skrivs:
btnSend.Text = "Test";

men hur skriv alternativ ett?
Var ganska länge sedan jag pysslade med Objective-C nu men kan försöka förklara lite

Bara för att klargöra så är syntaxen Objective-C och har inget med Xcode i sig att göra.

Detta:
[btnSend setTitle:@"Test"];
Anropar metoden setTitle på btnSend och skickar med strängen @"Test". Metoden är en "setter-metod" som alltså sätter title-värdet.

Tidigare var detta enda sättet att göra detta på men på senare tid (sedan 2.0 tror jag) har dot-notation kommit i Objective-C. Det är bara "syntactic sugar" för samma sak. Jag tror tom. att kompilatorn gör om dot-notationen till []-notation vid kompilering

Det är kanske lite rörigt när man kan använda vilken syntax, för ibland har man inget val utan måste använda [].

Metoder utan parametrar _kan_ man anropa med dot-notation (dock osäker på om det är "best practice"):
foo.barMethod

Om du har parametrar så måste du använda []-syntax:
Kod:
foo.barMethod:@"Hello" <-- Fel!
[foo barMethod:@"Hello"] <-- Rätt!
Dessutom definierar ju Objective-C parametrar i metodnamnet så om en metod tar flera attribut måste du använda []
Kod:
foo.barMethod:@"Hello" withBaz:@"World"   <-- Funkar ju inte....
[foo barMethod:@"Hello" withBaz:@"World"] <-- Funkar

Det råder delade mening om dot-syntax, vissa gillar och andra hatar. Många tycker dot-syntax är otydlig då man inte riktigt ser vad man accessar.

Ex:
int a = foo.bar

Är bar en metod som gör en massa mer än att returnera ett värde eller är det ett attribut du hämtar direkt?

int a = [foo bar]

Här ser vi att vi anropar en metod ("skickar ett meddelande" som man säger i Objective-C). Då vet vi att det är en metod som kanske gör annat än att bara returnera en int.

Vissa säger att man _bara_ ska använda dot-syntax till properties och andra säger annat...

Läste lite om det och det är ganska rörigt... Någon annan kan säkert förklara vettigare Huvudsakligen så är det bara "syntaktiskt socker" iaf!

Här finns lite mer info i alla fall:
http://blog.bignerdranch.com/83-83/


Edit:
[btnSend setTitle:@"Test"];

Är ekvivalent med:
btnSend.setTitle("Test")
i C#

Senast redigerad av Linuus den 2013-05-24 klockan 19:08
Linuus är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:33.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017