Zoeken…


Syntaxis

  • - of + : het type methode. Instantie of klas?

  • (): Waar het retourtype naartoe gaat. Gebruik ongeldig als u niets wilt retourneren!

  • Hierna volgt de naam van de methode. Gebruik camelCase en maak de naam gemakkelijk te onthouden en te begrijpen.

  • Als uw methode parameters nodig heeft, is dit het moment! De eerste parameter komt direct na de naam van de functie als volgt :(type)parameterName . Alle andere parameters worden op deze manier gedaan parameterLabel:(type)parameterName

  • Wat doet jouw methode? Zet alles hier, in de accolades {}!

Methode parameters

Als u waarden wilt doorgeven aan een methode wanneer deze wordt aangeroepen, gebruikt u parameters:

- (int)addInt:(int)intOne toInt:(int)intTwo {
  return intOne + intTwo;
}

De dubbele punt ( : ) scheidt de parameter de naam methode.

Het parametertype staat tussen haakjes (int) .

De parameternaam gaat achter het parametertype.

Maak een basismethode

Zo maakt u een basismethode waarmee 'Hello World' wordt vastgelegd in de console:

- (void)hello {
  NSLog(@"Hello World");
}

De - in het begin geeft deze methode aan als een instantiemethode.

De (void) geeft het retourtype aan. Deze methode geeft niets, zodat u in te voeren void .

De 'hallo' is de naam van de methode.

Alles in {} is de code die wordt uitgevoerd wanneer de methode wordt aangeroepen.

Retourwaarden

Wanneer u een waarde van een methode wilt retourneren, plaatst u het type dat u wilt retourneren in de eerste set haakjes.

- (NSString)returnHello {
  return @"Hello World";
}

De waarde die u wilt retourneren, gaat achter het trefwoord return ;

Klasse methoden

Een klassemethode wordt aangeroepen op de klasse waartoe de methode behoort, geen instantie ervan. Dit is mogelijk omdat Objective-C-klassen ook objecten zijn. Om een methode als klassemethode aan te duiden, wijzigt u de - in een + :

+ (void)hello {
  NSLog(@"Hello World");
}

Oproepmethoden

Een instantiemethode oproepen:

[classInstance hello];

 @interface Sample
 -(void)hello; // exposing the class Instance method
 @end

 @implementation Sample
     -(void)hello{
        NSLog(@"hello");
      }
 @end

Een instantiemethode aanroepen voor de huidige instance:

[self hello];

@implementation Sample

     -(void)otherMethod{
       [self hello];
     }

     -(void)hello{
        NSLog(@"hello");
      }
 @end

Een methode aanroepen waarvoor argumenten nodig zijn:

[classInstance addInt:1 toInt:2];

 @implementation Sample
     -(void)add:(NSInteger)add to:(NSInteger)to
        NSLog(@"sum = %d",(add+to));
      }
 @end

Een klassenmethode oproepen:

[Class hello];

 @interface Sample
 +(void)hello; // exposing the class method
 @end

 @implementation Sample
     +(void)hello{
        NSLog(@"hello");
      }
 @end

Instantiemethoden

Een instantiemethode is een methode die beschikbaar is op een bepaalde instantie van een klasse, nadat de instantie is geïnstantieerd:

MyClass *instance = [MyClass new];
[instance someInstanceMethod];

Zo definieert u er een:

@interface MyClass : NSObject

- (void)someInstanceMethod; // "-" denotes an instance method

@end

@implementation MyClass

- (void)someInstanceMethod {
    NSLog(@"Whose idea was it to have a method called \"someInstanceMethod\"?");
}

@end

Pass door waarde parameter doorgeven

Bij de pass-by-waarde van de parameter die aan een methode wordt doorgegeven, wordt de werkelijke parameterwaarde gekopieerd naar de formele parameterwaarde. De werkelijke parameterwaarde zal dus niet veranderen na terugkomst van de opgeroepen functie.

@interface SwapClass : NSObject

-(void) swap:(NSInteger)num1 andNum2:(NSInteger)num2;

@end

@implementation SwapClass

-(void) num:(NSInteger)num1 andNum2:(NSInteger)num2{
    int temp;
    temp = num1;
    num1 = num2;
    num2 = temp;
}
@end

Aanroepen van de methoden:

NSInteger a = 10, b =20;
SwapClass *swap = [[SwapClass alloc]init];
NSLog(@"Before calling swap: a=%d,b=%d",a,b);
[swap num:a andNum2:b];
NSLog(@"After calling swap: a=%d,b=%d",a,b);

Output:

2016-07-30 23:55:41.870 Test[5214:81162] Before calling swap: a=10,b=20
2016-07-30 23:55:41.871 Test[5214:81162] After calling swap: a=10,b=20

Pass door referentie parameter doorgeven

In het doorgeven van de parameter die aan een methode wordt doorgegeven, wordt het adres van de werkelijke parameter doorgegeven aan de formele parameter. De werkelijke parameterwaarde wordt dus gewijzigd na terugkeer van de opgeroepen functie.

@interface SwapClass : NSObject

-(void) swap:(int)num1 andNum2:(int)num2;

@end

@implementation SwapClass

-(void) num:(int*)num1 andNum2:(int*)num2{
    int temp;
    temp = *num1;
    *num1 = *num2;
    *num2 = temp;
}
@end

Aanroepen van de methoden:

int a = 10, b =20;
SwapClass *swap = [[SwapClass alloc]init];
NSLog(@"Before calling swap: a=%d,b=%d",a,b);
[swap num:&a andNum2:&b];
NSLog(@"After calling swap: a=%d,b=%d",a,b);

Output:

2016-07-31 00:01:47.067 Test[5260:83491] Before calling swap: a=10,b=20
2016-07-31 00:01:47.070 Test[5260:83491] After calling swap: a=20,b=10


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow