サーチ…


構文

  • -または+ :メソッドのタイプ。インスタンスまたはクラス?

  • ():戻り値の型がどこに行くか。何も返さない場合は、voidを使用してください。

  • 次はメソッドの名前です。 camelCaseを使用して、名前を理解しやすいようにします。

  • メソッドにパラメータが必要な場合は、今度は時間です!最初のパラメータは、関数の名前の直後にあり:(type)parameterName 。他のすべてのパラメータはこのようにして行われparameterLabel:(type)parameterName

  • あなたの方法は何をしていますか?中括弧{}でここにすべて入れてください!

メソッドパラメータ

メソッドが呼び出されたときに値を渡す場合は、次のようにパラメータを使用します。

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

コロン( : )メソッド名からパラメータを分離します。

パラメータの型はかっこ(int)ます。

パラメータ名は、パラメータタイプの後に続きます。

基本的な方法を作成する

これはコンソールに「Hello World」を記録する基本的な方法を作成する方法です:

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

最初の-は、このメソッドをインスタンスメソッドとして示しています。

(void)は戻り値の型を示します。このメソッドは何も返さないので、 voidを入力しvoid

'hello'はメソッドの名前です。

{}内のすべては、メソッドが呼び出されたときに実行されるコードです。

戻り値

メソッドから値を返す場合は、返す型を最初の括弧のセットに入れます。

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

返す値はreturnキーワードの後に​​来ます。

クラスメソッド

クラスメソッドは、そのメソッドが属するクラスで呼び出され、そのインスタンスは呼び出されません。 Objective-Cクラスもオブジェクトなので、これは可能です。クラスメソッドとしてメソッドを示すために、変更する-+

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

メソッドの呼び出し

インスタンスメソッドの呼び出し:

[classInstance hello];

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

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

現在のインスタンスでインスタンスメソッドを呼び出す:

[self hello];

@implementation Sample

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

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

引数を取るメソッドを呼び出す:

[classInstance addInt:1 toInt:2];

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

クラスメソッドの呼び出し:

[Class hello];

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

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

インスタンスメソッド

インスタンスメソッドは、インスタンスがインスタンス化された後、クラスの特定のインスタンスで使用できるメソッドです。

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

定義方法は次のとおりです。

@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

値渡しのパラメータ渡し

メソッドに渡すパラメータの値渡しでは、実際のパラメータ値が仮パラメータ値にコピーされます。したがって、実際のパラメータ値は、呼び出された関数から戻ると変更されません。

@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

メソッドを呼び出す:

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

出力:

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

参照パラメータ渡しで渡す

メソッドに渡すパラメータの参照によるパスでは、実際のパラメータのアドレスが仮パラメータに渡されます。したがって、実際のパラメータ値は、呼び出された関数から戻った後に変更されます。

@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

メソッドを呼び出す:

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

出力:

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
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow