jhe*_*erg 60 xcode objective-c ios swift xcode8
我正在使用Xcode 8和Swift 3.0.这个错误信息是什么意思?
ld:警告:某些目标文件具有不兼容的Objective-C类别定义.某些类别元数据可能会丢失.应使用相同的编译器构建包含Objective-C类别的所有文件.
jua*_*njo 40
我在UIColor扩展中也有这个问题,我的应用程序完全是用swift制作的,除了一些使用Objective-c的框架,所以我在声明varas时没有问题@nonobjc:
extension UIColor {
@nonobjc static var lol: UIColor {
return UIColor.red
}
}
Run Code Online (Sandbox Code Playgroud)
来自苹果文档:
nonobjc属性告诉编译器在Objective-C代码中使声明不可用...
由于Objective-C无法使用此代码,因此警告消失.
Hej*_*azi 22
在我的情况下,原因是在扩展中计算了类型属性:
extension NSParagraphStyle {
class var defaultStyle: NSParagraphStyle {
return ...
}
}
Run Code Online (Sandbox Code Playgroud)
不确定这背后的确切原因是什么,但要摆脱警告我必须将计算类型属性(class var)转换为类型方法(class func):
extension NSParagraphStyle {
class func defaultStyle() -> NSParagraphStyle {
return ...
}
}
Run Code Online (Sandbox Code Playgroud)
Gro*_*oot 10
在我的项目中添加了一个在我的应用程序中使用Objective-C的框架之后出现了这个警告,否则完全使用Swift 3.
通过声明所有的静态函数和静态变量在所有分机作为@nonobjc该警告就走开了.
例如
extension Notification.Name {
@nonobjc static let MyNotificationName = Notification.Name("NNSongFavoriteStatusDidChangeNotification")
}
Run Code Online (Sandbox Code Playgroud)
要么
extension UIColor {
@nonobjc static let superGiantRed = UIColor(red: 180.0/255.0, green: 40.0/255.0, blue: 27.0/255.0, alpha: 1.0)
}
Run Code Online (Sandbox Code Playgroud)
谷歌Analytics(分析)荚
在构建设置 - >其他链接器标志中如果您在-lbjC上显示-l"GoogleAnalytics"标记,则会出现此警告.我不知道为什么或如何解决,但也可能是你的问题.
就我而言,它是一个类变量。
public extension NSObject {
public class var nameOfClass: String{
return NSStringFromClass(self).components(separatedBy: ".").last!
}
Run Code Online (Sandbox Code Playgroud)
添加@nonobjc 有帮助。
| 归档时间: |
|
| 查看次数: |
10710 次 |
| 最近记录: |