1

我在 中创建了一个方法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 ...。请记住,如果我创建一个与 inside 相同的方法,methodAClassB.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

4

1 回答 1

1

ClassA第一部分对于调用in的类方法部分是正确的(由inClassB标记)。第二部分对于调用in的实例方法部分是正确的(由in标记)。+(NSInteger)ClassAClassAClassB-(NSInteger)ClassA

错误在于 Xcode 4 没有保存更改,而是使用旧版本进行构建。

于 2012-05-30T18:17:01.923 回答