Suche…


Syntax

  • - oder + : Die Art der Methode. Instanz oder Klasse?

  • (): Wohin geht der Rückgabetyp? Verwenden Sie Void, wenn Sie nichts zurückgeben möchten!

  • Weiter ist der Name der Methode. Verwenden Sie camelCase und machen Sie den Namen leicht verständlich.

  • Wenn Ihre Methode Parameter benötigt, ist jetzt die Zeit! Der erste Parameter kommt direkt nach dem Namen der Funktion wie folgt :(type)parameterName . Alle anderen Parameter werden auf diese Weise parameterLabel:(type)parameterName

  • Was macht deine Methode? Setzen Sie alles hier in die geschweiften Klammern {}!

Methodenparameter

Wenn Sie beim Aufruf Werte an eine Methode übergeben möchten, verwenden Sie Parameter:

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

Der Doppelpunkt ( : ) trennt den Parameter aus dem Methodennamen.

Der Parametertyp steht in Klammern (int) .

Der Parametername folgt dem Parametertyp.

Erstellen Sie eine grundlegende Methode

So erstellen Sie eine grundlegende Methode, die "Hello World" auf der Konsole protokolliert:

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

Das - am Anfang kennzeichnet diese Methode als Instanzmethode.

Die (void) bezeichnet den Rückgabetyp. Diese Methode gibt nichts zurück, also geben Sie void .

Das Hallo ist der Name der Methode.

Alles in {} ist der Code, der ausgeführt wird, wenn die Methode aufgerufen wird.

Rückgabewerte

Wenn Sie einen Wert aus einer Methode zurückgeben möchten, setzen Sie den Typ, den Sie zurückgeben möchten, in den ersten Satz von Klammern.

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

Der Wert, den Sie zurückgeben möchten, folgt dem Schlüsselwort return .

Klassenmethoden

Eine Klassenmethode wird für die Klasse aufgerufen, zu der die Methode gehört, keine Instanz davon. Dies ist möglich, weil Objective-C-Klassen auch Objekte sind. Um eine Methode als Klassenmethode zu bezeichnen, ändern Sie das - in ein + :

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

Methoden aufrufen

Aufruf einer Instanzmethode:

[classInstance hello];

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

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

Aufrufen einer Instanzmethode in der aktuellen Instanz:

[self hello];

@implementation Sample

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

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

Aufruf einer Methode, die Argumente akzeptiert:

[classInstance addInt:1 toInt:2];

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

Klassenmethode aufrufen:

[Class hello];

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

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

Instanzmethoden

Eine Instanzmethode ist eine Methode, die für eine bestimmte Instanz einer Klasse verfügbar ist, nachdem die Instanz instanziiert wurde:

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

So definieren Sie eine:

@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

Übergeben Sie den Wert, indem Sie den Parameter übergeben

Wenn der Parameterwert an eine Methode übergeben wird, wird der tatsächliche Parameterwert in den Formalparameterwert kopiert. Der tatsächliche Parameterwert ändert sich also nicht, wenn von der aufgerufenen Funktion zurückgekehrt wird.

@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

Aufrufen der 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);

Ausgabe:

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

Übergabe durch Referenzparameterübergabe

Wenn der Parameter an eine Methode übergeben wird, wird die Adresse des Aktualparameters an den Formalparameter übergeben. Der aktuelle Parameterwert wird also nach der Rückkehr von der aufgerufenen Funktion geändert.

@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

Aufrufen der 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);

Ausgabe:

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow