码迷,mamicode.com
首页 > 移动开发 > 详细

ios开发——错误总结篇&开发中常见错误和警告总结(十三)

时间:2015-08-27 00:04:28      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

开发中常见错误和警告总结(十三)

混编总结

 Objective-c调用Swift代码

 Objective-c调用Swift代码两个步骤

第一步告诉Xcode哪些类需要使用(继承自NSObject的类自动处理,不需要此步骤),通过关键字@objc(className)来标记

 
1 import UIKit
2 @objc(ILWriteBySwift)
3 class ILWriteBySwift {
4     var name: String!
5     class func newInstance() -> ILWriteBySwift {
6         return ILWriteBySwift()
7     }
8 }

 

第二步引入头文件,Xcode头文件的命名规则为

  1 $(SWIFT_MODULE_NAME)-Swift.h 

示例如下:

 
#import "ILSwift-Swift.h"

 Tips

不清楚SWIFT_MODULE_NAME可通过以下步骤查看

技术分享

 找不到$(SWIFT_MODULE_NAME)-Swift.h

 

技术分享

1.遇到此问题可按以下步骤做常规性检查

  • 确定导入SWIFT_MODULE_NAME)-Swift.h头文件的文件名正确

  • SWIFT_MODULE_NAME)-Swift.h在clean后没有重新构建,执行Xcode->Product->Build

2.头文件循环

在混合编程的项目中,由于两种语言的同时使用,经常会出现以下需求:在Swift项目中需要使用Objectvie-c写的A类,而A类又会用到Swift的一些功能,头文件的循环,导致编译器不能正确构建$(SWIFT_MODULE_NAME)-Swift.h,遇到此问题时,在.h文件做如下处理

 
//删除以下头文件
//#import "ILSwift-Swift.h"
//通过代码导入类
@class ILSwiftBean;

 

在Objevtive-c的.m文件最上面,添加

 
#import "ILSwift-Swift.h"

 

出现Use of undecalared identifier错误或者找不到方法,如下:

技术分享

引起的原因有以下几种可能:

  • 使用的Swift类不是继承自NSObject,加入关键字即可

  • SWIFT_MODULE_NAME)-Swift.h没有实时更新,Xcode->Product->Build

  • 此Swift文件中使用了Objective-c不支持的类型或者语法,如private

出现部分方法找不到的问题,Xcode无智能提示:

  • 此方法使用了Objective-c不支持的类型或者语法

苹果官方给出的不支持转换的类型

    • Generics

    • Tuples

    • Enumerations defined in Swift

    • Structures defined in Swift

    • Top-level functions defined in Swift

    • Global variables defined in Swift

    • Typealiases defined in Swift

    • Swift-style variadics

    • Nested types

    • Curried functions

ios开发——错误总结篇&开发中常见错误和警告总结(十三)

标签:

原文地址:http://www.cnblogs.com/iCocos/p/4761782.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!