FAQ |
Kalender |
2013-05-24, 13:28 | #1 | ||
|
|||
Mycket flitig postare
|
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? |
||
Svara med citat |
2013-05-24, 19:06 | #2 | ||
|
|||
Mycket flitig postare
|
Citat:
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! 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 |
||
Svara med citat |
Svara |
|
|