programing

방법 옆의 목표 C에서 더하기 기호와 빼기 기호는 무엇을 의미합니까?

elecom 2023. 4. 23. 10:04
반응형

방법 옆의 목표 C에서 더하기 기호와 빼기 기호는 무엇을 의미합니까?

Objectival-C에서, 나는 다음 사항을 알고 싶다.+그리고.-방법 정의 평균 옆에 있는 기호.

- (void)loadPluginsAtPath:(NSString*)pluginPath errors:(NSArray **)errors;

+클래스 메서드용입니다.-인스턴스 메서드용입니다.

예.

// Not actually Apple's code.
@interface NSArray : NSObject {
}
+ (NSArray *)array;
- (id)objectAtIndex:(NSUInteger)index;
@end

// somewhere else:

id myArray = [NSArray array];         // see how the message is sent to NSArray?
id obj = [myArray objectAtIndex:4];   // here the message is sent to myArray

// Btw, in production code one uses "NSArray *myArray" instead of only "id".

클래스 메서드와 인스턴스 메서드의 차이에 대한 질문이 하나 더 있습니다.

클래스 메서드(+) 및 인스턴스 메서드(-)

(+) 클래스 메서드:-

static으로 선언된 메서드입니다.클래스의 인스턴스를 만들지 않고 메서드를 호출할 수 있습니다.클래스 메서드는 클래스 멤버에서만 작동할 수 있으며 클래스 메서드는 인스턴스 멤버에 대해 인식되지 않으므로 인스턴스 멤버에서는 작동하지 않습니다.클래스의 인스턴스 메서드는 해당 클래스의 인스턴스에서 호출되지 않는 한 클래스 메서드 내에서 호출할 수 없습니다.

(-) 인스턴스 방식:-

한편 클래스 인스턴스를 호출하려면 클래스 인스턴스가 존재해야 하므로 새로운 키워드를 사용하여 클래스 인스턴스를 생성해야 합니다.인스턴스 메서드는 클래스의 특정 인스턴스에서 작동합니다.인스턴스 메서드는 스태틱으로 선언되지 않습니다.

작성 방법

@interface CustomClass : NSObject

+ (void)classMethod;
- (void)instanceMethod;

@end

사용방법?

[CustomClass classMethod];

CustomClass *classObject = [[CustomClass alloc] init];
[classObject instanceMethod];

+ 메서드는 클래스 메서드, 즉 인스턴스 속성에 액세스할 수 없는 메서드입니다.인스턴스 변수에 액세스할 필요가 없는 클래스의 할당 또는 도우미 메서드와 같은 메서드에 사용됩니다.

- 메서드는 인스턴스 메서드입니다.- 객체의 단일 인스턴스에 관련됩니다.보통 클래스의 대부분의 메서드에 사용됩니다.

상세한 것에 대하여는, 「언어 사양」을 참조해 주세요.

이에 대한 Apple의 명확한 설명은 아래 '메서드와 메시징' 섹션에 있습니다.

https://developer.apple.com/library/mac/referencelibrary/GettingStarted/RoadMapOSX/books/WriteObjective-CCode/WriteObjective-CCode/WriteObjective-CCode.html

요약:

+는 '클래스 메서드'를 의미합니다.

(클래스가 인스턴스화되지 않고 호출할 수 있습니다).그래서 이렇게 부르죠.

[className classMethod]; 


-는 '경고 방식'을 의미합니다.

먼저 개체를 인스턴스화한 다음 개체의 메서드를 호출할 수 있습니다).다음과 같이 개체를 수동으로 인스턴스화할 수 있습니다.

SomeClass* myInstance = [[SomeClass alloc] init];

(이는 기본적으로 오브젝트에 메모리 공간을 할당하고 그 공간 내의 오브젝트를 초기화합니다.너무 단순하지만 생각할 수 있는 좋은 방법입니다.오브젝트를 개별적으로 할당 초기화할 수 있지만, 이 작업은 절대 하지 않습니다.포인터나 메모리 관리에 관한 귀찮은 문제가 발생할 수 있습니다.)

다음으로 인스턴스 메서드를 호출합니다.

[myInstance instanceMethod]

오브젝트 C에서 오브젝트의 인스턴스를 취득하는 대체 방법은 다음과 같습니다.

NSNumber *myNumber = [NSNumber numberWithInt:123];

'번호'를 호출하고 있습니다.NS Number 클래스의 WithInt' 클래스 메서드는 '공장' 메서드(즉, 개체의 'ready made instance'를 제공하는 메서드)입니다.

오브젝트 C에서는 다음과 같은 문자열의 경우 특수한 구문을 사용하여 특정 오브젝트인스턴스를 직접 작성할 수도 있습니다.

NSString *myStringInstance = @"mystring";

언급URL : https://stackoverflow.com/questions/2097294/what-do-the-plus-and-minus-signs-mean-in-objective-c-next-to-a-method

반응형