Objective-C Language
행동 양식
수색…
통사론
-
또는+
: 메소드의 유형. 인스턴스 또는 클래스?() : 반환 값의 형태. 아무 것도 반환하고 싶지 않으면 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