ClassA
에 메서드를 만들고 ClassB.m
으로 호출하려고합니다.Objective-C 및 다른 클래스의 메서드 호출 : 인식 할 수없는 선택자를 클래스로 보냄
@interface ClassA : NSObject <NSCoding>
...
+ (NSInteger) methodA:(CGPoint)touchPoint;
...
@end
그리고 ClassA.m
에 내가 methodA
선언 :
+ (NSInteger)methodA:(CGPoint)touchPoint
{
// return an integer based on touchPoint's value
}
그리고 ClassB.m
의를 :
#import "ClassA.h"
...
-(void)methodThatCallsMethodA
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:self];
NSInteger integerUsingClassA = [ClassA methodA:touchPoint];
// do some stuff
}
나는 느낌이 문제가이 ClassA.h
에서
나는이 있습니다 방법을 호출하는 방법에 거짓말 d 지금은 ClassA
인 개체가 잘못되었지만 확실하지 않습니다. 오류는 unrecognized selector sent to class ...
입니다. 계속 ClassB.m
내에 methodA
과 동일한 메서드를 만들면 아무런 문제없이 개체에서 methodThatCallsMethodA
을 호출하는 것처럼 호출 할 수 있습니다.
#import "ClassA.h"
@interface...
@property(nonatomic, retain)ClassA *objectOfClassA;
...
@end
을 그리고 ClassB.m
변경 :
~~~~~~~~~~~ 또한 ClassB.h
에서 이것을 시도
#import "ClassA.h"
@synthesize objectOfClassA;
- (void)methodThatCallsMethodA
{
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:self];
if(!self.objectOfClassA)
self.objectOfClassA = [[ClassA alloc] init];
NSInteger integerUsingClassA = [self.objectOfClassA methodA:touchPoint];
NSLog(@"ClassA: %i", integerUsingClassA);
}
을하지만 지금은 있음을 경고하는 것 instance method -methodA not found
.
전체 오류 메시지를 정확하게 인용하면 도움이됩니다. –
나는 applicationDidFinishLaunchingWithOptions : 메소드에 호출 코드를 넣고 코드를 시험해 보았다. – rdelmar
** ** 오류는 Xcode가 이전 버전의 파일을 사용하고 있다는 오류입니다. 그것이 하루 일찍 추락했고 실제로 변경 사항을 저장하거나 구축하지는 않았지만 그것이 그것이라고 말했지만. 내가 돌아 왔을 때 이전 버전의 모든 변경 사항이 사라졌습니다. 이제 내가 게시 한 코드 (첫 번째 시도) 위의 작품. @HotLicks 팁 주셔서 감사합니다; 나는 여기에 새로운 질문과 질문에 얼마나 많이 포함 시킬지 확신하지 못합니다. – alsuhr