FAQ |
Kalender |
![]() |
#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? |
||
![]() |
![]() |
![]() |
#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 ![]() 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 18:08 |
||
![]() |
![]() |
Svara |
|
|