我在ClassA
中创建了一个方法,并希望在ClassB.m
中调用它。
在ClassA.h
我有这个:
@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
的对象是错误的,但我不确定。错误是unrecognized selector sent to class ...
。请注意,如果我在methodA
内创建与ClassB.m
相同的方法,我可以像调用对象methodThatCallsMethodA
上的self
一样调用它,没有任何问题。
~~~~~~~~~~~
我也在ClassB.h
尝试了这个:
#import "ClassA.h"
@interface...
@property(nonatomic, retain)ClassA *objectOfClassA;
...
@end
并更改了ClassB.m
:
#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
。
答案 0 :(得分:1)
第一部分适用于在ClassA
中调用ClassB
的类方法部分(+(NSInteger)
中标记为ClassA
)。第二部分适用于调用ClassA
中ClassB
的实例方法部分(-(NSInteger)
中标记为ClassA
)。
错误是Xcode 4没有保存更改并且正在使用旧版本构建。