2012-02-09 5 views
-1

여기 방법 서명이 있습니다왜이 메서드를 호출 할 수 없습니까?

.h 

-(void)addToArray 

을 그리고 난 여기를 사용하려면 :

.m 

-(void)viewDidLoad{ 
NSMutableArray *array = [[NSMutableArray alloc]init]; 
[array addToArray]; 
} 

-(void)addToArray{ 
//some code here… 
} 

문제는 그 내가 [배열을 addToArray] 할 때 "인스턴스 메소드 '-addToArray'를 찾을 수 없습니다 (반환 유형의 기본값은 'id')" 어떻게 해결할 수 있습니까?

+6

물론 addToArray는 NSMutableArray 메소드가 아닙니다. –

답변

3

가깝지만이 범주 아니다 (즉 NSMutableArray 클래스입니다.

당신이 당신의 자신의 class.and의 방법이있을 때 그 배열 데이터 타입 클래스의 방법을 찾을 것이다. . ..then 당신은 당신이 메서드를 호출하는 것입니다 클래스에 모양이 방법

[self somemethod] 

전화

+0

확인. 코드는 OK입니다. 하지만 잘 작동하지 않습니다. Xcode를 실행하면 응용 프로그램을 중단하고 나에게 돌아옵니다. "스레드 1 : 프로그램에서 신호를받습니다."EXC_BAD_ACCESS " – user1200160

+0

중단 점을 사용하여 코드를 디버그합니다. 그렇다면 ... 일부 YouTube 튜토리얼을 확인하십시오. 디버깅은 향후 많은 도움이 될 것입니다. 충돌이 발생한 부분을 본 후 해당 라인을 질문에 대한 업데이트로 게시하면 도움이됩니다. – Shubhank

+0

확인. Shubhank 정말 고마워. 지금은 시간이 없지만 내일은 내가 할 것입니다. 비디오를보고 디버깅에 대한 내용을 읽은 다음 여기에 게시 할 것입니다. 고맙습니다. – user1200160

-1

m 파일에서 다음을 수행하십시오. #import "무엇이든지 called.h"아직 시도하지 않았다면. 더 많은 코드를 제공하면 더 많은 도움을 줄 수 있지만 이것이 도움이되기를 바랍니다. 당신이 [array somemethod]을 수행 할 때

3

변경을해야합니다

.H

-(void)addObjectsToArray:(NSMutableArray*)a; 

하는 .m

- (void)viewDidLoad { 
    NSMutableArray * array = [[NSMutableArray alloc]init]; 
    [self addObjectsToArray:array]; 
} 
- (void)addObjectsToArray:(NSMutableArray*)a { 
    //some code here… 
    [a addObject:[NSString stringWithFormat:@"Example String Object"]]; // example way to add objects to the array 
} 
3

Shubhank의 대답은 당신이 처음에 설명했던 것과 수행하려는 경우, 즉이있다, 참으로 정확하여있는 NSMutableArray 인스턴스가 응답해야 당신의 방법, 당신은 범주의 사용을 통해 그것을 달성 할 수 있습니다. https://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/occategories.html

이 블로그는 NSArray 및/또는 NSMutableArray에 범주를 추가하는 것에 대해 자세히 설명합니다. http://it.toolbox.com/blogs/macsploitation/extending-classes-in-objectivec-with-categories-27447

관련 문제