2013-03-04 3 views
0

아이폰 애플리케이션에서 NSString을 생성하고 확장하는 클래스입니다.NSString + Extension은 자체 생성 한

NSString+Extensions.m 클래스 I가 인 NSMutableString로 문자열을 변환하는 데 필요한 방법 중 하나에서

.

나는이 사용하려고 :

NSMutableString * stringToManipulate = [NSMutableString stringWithString:self]; 

을하지만 경고를주고있다 :

내 knowlede 자동으로
Incompatible pointer types sending 'const Class' to parameter of type 'NSString *' 

내가 오른쪽에 메소드를 호출 한 문자열에 대한 참조입니다? 그래서 그것은 왜 NSString * 형식이되어서는 안됩니까? 나는 자기 자신에게 일반적인 NSString 메서드를 사용할 수 있다는 것을 알고있다.

이 문제에 대한 의견이 있으십니까?

감사

방법합니다 (+ 기호) 클래스 메소드로 선언되어 있는지 여부를

답변

1

확인 또는 인스턴스 메서드합니다 (와 - 기호). 첫 번째 경우 컴파일러 경고 정상입니다. 메서드를 인스턴스로 변환

+0

예 그것이 + 기호를 사용하여 선언된다. 어쨌든 나는 그것을 바꾸지 않고 그 일을 할 수있다. 덕분에 – Youssef

+0

Nope. 클래스 메소드의 Self는 클래스에 대한 참조이므로 인스턴스 값은 제공되지 않습니다. 실제 값으로 작업하려면 문자열을 인스턴스화 한 다음 jnstance 메서드를 호출하면됩니다. –

+1

죄송합니다, 귀하의 요지를 보았습니다. 예, 감사했습니다. NSString + Extensions.m에서 +를 변경해야한다고 생각했습니다. 그러나 당신은이 메서드에서 의미를 가졌습니다. 죄송합니다 정말 늦었어요 그리고 잠을 자야합니다 :) – Youssef

1

Objective-C에서 클래스 메서드 내에서 self을 호출하면 클래스 개체를 참조합니다. NSString 클래스 메서드의 경우 self을 호출하는 것은 [NSString class]를 호출하는 것과 같습니다. (- 기호), 그것은 작동하지만 당신이해야합니다 당신은 객체 하나에 클래스 하나 (+ 기호)에서 방법을 변경하는 경우

NSMutableString * stringToManipulate = [NSMutableString stringWithString:[self class]];

:

그래서, 당신의 라인과 동일 다르게 호출하십시오 (NSString 개체에서).

자세한 설명이 필요하면 전체 메소드 선언을 게시 할 수 있습니까? 당신은 또한 + 클래스 메서드에 대한 자세한 정보에 대한 NSObject의 프로토콜 참조 확인할 수 있습니다 :이 도움이 될 것입니다 https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html

희망을,