【问题标题】:Implicit conversion of 'int' to 'id' is disallowed with ARCARC 不允许将“int”隐式转换为“id”
【发布时间】:2013-08-09 23:09:05
【问题描述】:

我想知道为什么会出现此错误:

ARC 不允许将“int”隐式转换为“id”

self.versionButton.titleLabel.font = [UIFont fontWithName:@"AdobeClean-Light" size:self.versionButton.titleLabel.font.pointSize]; <- Implicit conversion of  'int' to 'id' is disallowed with ARC

查看 UIFont 的头文件,我看到 'fontWithName' 想要一个 CGFloat

+ (UIFont *)fontWithName:(NSString *)fontName size:(CGFloat)fontSize
{
    return [self fontWithNSFont:[NSFont fontWithName:fontName size:fontSize]];
}

查看 UIFont 的头文件,我看到 'pointSize' 返回一个 CGFloat

- (CGFloat)pointSize
{
    return CTFontGetSize(_font);
}

我正在导入导入“UIFont.h”的 UIKit

【问题讨论】:

  • 实际上,看看那一行,很难看出这个特定的错误是如何引发的。我猜 Xcode 可能突出显示了错误的行之类的。
  • (您是否忽略了任何警告?)
  • 我怀疑问题出在其他地方,因为该行在这里编译并运行良好。
  • 嗯...考虑到他们有UIFont 的源代码,这一定是使用了一个为OSX 包装了UIKit 的库。也许有一个导入警告,Xcode 推断出int 的类型返回类型。
  • @user2665402:如果您找到了问题的解决方案,那么您可以将其发布为答案,这样未来的读者就不必阅读所有 cmets。

标签: objective-c


【解决方案1】:

马丁和布莱恩打得很好。这就是发生的事情。我们正在开发一个 IOS 应用程序。我们正在使用来自其他项目的共享库。其中一个项目支持 IOS 和 OSX。他们包括一个项目,其中包括一个名为 chameleon 的第三方来源。此源允许将 UIKit 调用映射到 AppKit 调用。当我查看这个特定的 .m 文件引用的 UIFont.h 时,它是变色龙上的那个。哪个混合了IOS和OSX。我删除了 chameleon 源,因为我们的项目只有 IOS 并且错误消失了。无论如何,谢谢你的提示。在提出这个问题之前,我花了一些时间试图追踪它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多