2013-04-17 6 views
0

NSObject에서 상속 한 클래스 WebServices가 있습니다. xcode4.2를 사용 중이며 ARC가 켜져 있습니다. 클래스를 만들 때 viewDidLoad 또는 init NSObject 거짓에 다른 메소드가 없습니다.자기 자신에게 NSObject 호출이 XCode 오류를 내림

이슈는 그 나는 self.something 또는 [자기 것으로 someMethod] 빨간색 엑스 코드 플래그 내 코드를 호출하려고에 불만을 때 :

목표 - C 포인터 형 '클래스'의

암시 적 변환에 C 포인터 형 'struct obj_class *'는 브릿지 캐스트가 필요합니다.

도와주세요. Java와 같은 코코아가 "this"를 호출하고 현재 가지고있는 객체를 가져 오는 이유는 무엇입니까?

// WebService.h file 
@interface WebService : NSObject 

@property (weak, nonatomic) NSString * myString; 
+(void) setAndPrintMyString:(NSString*) someString; 

@end 



//WebService.m file 


#import "WebService.h" 
@implementation WebService 

@synthesize myString=_myString; 

+(void) printMyString:(NSString*) someString{ 
[self setMyString:someString];  //XCode does not allow 
NSLog(@"myString is set to %@",self.myString); //XCode dose not allow 
} 

@end 
+0

노력하고있는 코드를 표시 할 수 있습니까? –

+0

@ Paul.s 작업에서 일부 코드를 추가했습니다. 코드에 오타가있을 경우 사과하기 때문에 게시하기 전에 실행하지 못했습니다. –

+0

게시 한 코드가 정상적으로 작동합니다. 실제 코드를 게시하거나 Xcode에서 재생할 수 있도록 코드를 게시해야합니다. –

답변

0

선언 +있는 방법이 있다는 것을 의미 클래스 메소드입니다. 클래스 메서드 내에서 self은 클래스 자체를 말하며, 귀하의 경우에는 [WebService class]이됩니다. 선언하고 인스턴스 메소드 (- 사용)를 사용하면 self 메소드가 원하는 것을 참조합니다.

는 인스턴스 변수를 설정하려면 - 당신이

WebService *webService = [[WebService alloc] init]; 
webService.myString = @"some string"; 

지금 당신의 방법을 작동하게하는 당신이 그것을 인스턴스 메서드를 만드는 대신 +-으로 선언 할 필요 인스턴스를 필요

- (void)printMyString:(NSString *)someString 
{ 
    [self setMyString:someString]; 
    NSLog(@"myString is set to %@",self.myString); 
} 

Now

[webService printMyString:@"boom"]; 

결과는 t 그는 인스턴스 변수 myStringboom으로 설정되고 콘솔이 'myString이 붐으로 설정 됨'으로 로그 아웃합니다.

0

viewDidLoad 방법은 NSObject 서브 클래스에 적합하지 않습니다. UI의 메소드는 UIViewController 하위 클래스에 있습니다.

이제 self.something 또는 [self someMethod]을 가리키며, 이는 NSObject 하위 클래스에서 완벽하게 작동합니다. 문제가있는 코드를 표시해야합니다. 그냥 참조 용

은 (난 당신이 거쳐 iOS 용 개발을 시작해야한다고 생각) :