我正在使用xcode 5的最新版本。
我在下面的代码中得到了两次这个错误:
+ (SemiSecretFont *)fontWithName:(NSString *)name
size:(CGFloat) size;
{
//dynamically search for a class with this name
Class klass = NSClassFromString([NSString stringWithFormat:@"%@Font", name]);
//NSLog(@"looking for font: %@", name);
// NSLog(@"klass: %@", klass);
SemiSecretFont * font = nil;
if (klass)
font = [[[klass alloc] initWithSize:size] autorelease]; //error occurs here
return font;
}
- (id) fontWithSize:(CGFloat)s
{
Class klass = [self class];
SemiSecretFont * f = nil;
f = [[[klass alloc] initWithSize:s] autorelease]; //error occurs here again
return f;
}错误:将'CGFloat‘(又名’浮点‘)发送给参数不兼容类型'CGSize’(又名'struct CGSize')
我还收到一个警告:多个名为'initWithSize:‘的方法找到了
更新:
这是我的initWithSize声明代码..。
//this is not meant to be instantiated directly!
- (id) initWithSize:(CGFloat)fontsize
{
if ((self = [super init])) {
size = fontsize;
font = nil;
}
return self;
}发布于 2014-03-17 06:28:44
这似乎来自https://github.com/ericjohnson/canabalt-ios,而且
+ (SemiSecretFont *)fontWithName:(NSString *)name size:(CGFloat) size;似乎是一个工厂方法,它返回SemiSecretFont或某个子类的实例。但当编译时
font = [[[klass alloc] initWithSize:size] autorelease]; //error occurs here编译器不知道kclass是有方法的SemiSecretFont类(或子类)
- (id) initWithSize:(CGFloat)fontsize;从理论上讲,它可以是NSTextContainer的一个实例,它具有以下方法
- (id)initWithSize:(CGSize)size; // designated initialiser要解决这个歧义,您可以添加一个显式强制转换:
font = [[(SemiSecretFont *)[klass alloc] initWithSize:size] autorelease];https://stackoverflow.com/questions/22447885
复制相似问题