WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   förstår syntaxen i xcode? (https://www.wn.se/forum/showthread.php?t=1058033)

naak2803 2013-05-24 12:28

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?

Linuus 2013-05-24 18:06

Citat:

Ursprungligen postat av naak2803 (Inlägg 20470551)
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#


Alla tider är GMT +2. Klockan är nu 02:27.

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