수색…


통사론

  • - 또는 + : 메소드의 유형. 인스턴스 또는 클래스?

  • () : 반환 값의 형태. 아무 것도 반환하고 싶지 않으면 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 를 입력합니다.

'hello'는 메소드의 이름입니다.

{} 안의 모든 것은 메소드가 호출 될 때 실행되는 코드입니다.

반환 값

메서드에서 값을 반환하려면 반환 할 형식을 첫 번째 괄호 집합에 넣습니다.

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

반환하려는 값은 return 키워드 뒤에 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