原始访问类别方法Objective C class
Accessing category method in original Objective C class
我有一个 class,我为其创建了一个 类别 。现在我想访问原始 class 中的 类别方法 但我收到错误:
error: instance method '-hasSound' not found (return type
defaults to 'id') [-Werror,-Wobjc-method-access]
// Animal.h
@interface Animal: NSObject
- (void)sound;
@end
// Animal.m
#import "Animal+Additions.h"
@implementation Animal
- (void)sound {
[self hasSound];
}
@end
// Animal+Additions.h
@interface Animal (Additions)
- (BOOL)hasSound;
@end
// Animal+Additions.h
@implementation Animal (Additions)
- (BOOL) hasSound {
return YES;
}
@end
我在 Swift 中一直在做同样的事情,但不确定如何在 Objective C[=24 中实现同样的事情=].
类别和原始 class 在不同的文件中。我已经在原始 class 中导入了类别界面文件,但是没有用。
您没有显示足够的 #import
陈述,所以我不得不假设它们不存在。你需要它们。
另一个可能的问题是,至少根据您的意见,您似乎有两个 Animal+Additions.h 文件,但没有 Animal+Additions.m 文件.
四个文件中的完整代码为我编译:
// Animal.h
#import <Foundation/Foundation.h>
@interface Animal: NSObject
- (void)sound;
@end
// Animal.m
#import "Animal.h"
#import "Animal+Additions.h"
@implementation Animal
- (void)sound {
[self hasSound];
}
@end
// Animal+Additions.h
#import "Animal.h"
@interface Animal (Additions)
- (BOOL)hasSound;
@end
// Animal+Additions.m
#import "Animal+Additions.h"
@implementation Animal (Additions)
- (BOOL) hasSound {
return YES;
}
@end
注意所有 #import
语句,并注意 Animal.m 文件必须是目标的一部分。
我有一个 class,我为其创建了一个 类别 。现在我想访问原始 class 中的 类别方法 但我收到错误:
error: instance method '-hasSound' not found (return type defaults to 'id') [-Werror,-Wobjc-method-access]
// Animal.h
@interface Animal: NSObject
- (void)sound;
@end
// Animal.m
#import "Animal+Additions.h"
@implementation Animal
- (void)sound {
[self hasSound];
}
@end
// Animal+Additions.h
@interface Animal (Additions)
- (BOOL)hasSound;
@end
// Animal+Additions.h
@implementation Animal (Additions)
- (BOOL) hasSound {
return YES;
}
@end
我在 Swift 中一直在做同样的事情,但不确定如何在 Objective C[=24 中实现同样的事情=]. 类别和原始 class 在不同的文件中。我已经在原始 class 中导入了类别界面文件,但是没有用。
您没有显示足够的 #import
陈述,所以我不得不假设它们不存在。你需要它们。
另一个可能的问题是,至少根据您的意见,您似乎有两个 Animal+Additions.h 文件,但没有 Animal+Additions.m 文件.
四个文件中的完整代码为我编译:
// Animal.h
#import <Foundation/Foundation.h>
@interface Animal: NSObject
- (void)sound;
@end
// Animal.m
#import "Animal.h"
#import "Animal+Additions.h"
@implementation Animal
- (void)sound {
[self hasSound];
}
@end
// Animal+Additions.h
#import "Animal.h"
@interface Animal (Additions)
- (BOOL)hasSound;
@end
// Animal+Additions.m
#import "Animal+Additions.h"
@implementation Animal (Additions)
- (BOOL) hasSound {
return YES;
}
@end
注意所有 #import
语句,并注意 Animal.m 文件必须是目标的一部分。