Swift基础之OC文件调用Swift代码(在上次的基础上写的)
前两天刚写过Swift调用OC,今天在原来的基础上,实现OC调用Swift。
首先,创建一个OneSwiftFile.swift文件,创建一个继承于NSObject的类(这个地方你可以自己选择继承的父类)
然后在类中创建几个方法,方便在OC文件中使用
class OneSwiftFile:NSObject{
override init() {
NSLog("这是在init方法中。。。");
}
//创建一个方法
func someFunc() {
NSLog("这是在someFunc()方法中.......");
}
//创建一个带有参数和返回值得方法
func someArrayByValue(v1:String,v2:String) -> NSArray {
return [v1,v2];
}
//创建一个带有标签的方法
func someArrayValue(v1:String,withValue v2:String,withValue v3:String) -> NSArray {
return [v1,v2,v3];
}
//这里说一下,带标签和不带标签的区别://创建一个带有标签的方法,如果带有标签,就会以标签形式显示,如果没有标签,就会以参数名为标签,可以比较下面的方法:
/*
- (NSArray * _Nonnull)someArrayByValue:(NSString * _Nonnull)v1 v2:(NSString * _Nonnull)v2;
- (NSArray * _Nonnull)someArrayValue:(NSString * _Nonnull)v1 withValue:(NSString * _Nonnull)v2 withValue:(NSString * _Nonnull)v3;
*/
}
这里要强调一点,当你写完方法后,编译一下,就会在#import <项目名称-Swift.h>的头文件(这个头文件下面会说明)最下方生成对应的方法,这样可以出现提示,方便方法调用
这时候,Swift文件完成以后,我们开始考虑如何使用类中的方法,首先在创建的OC文件(BgImgView.h.m)中导入头文件,头文件的格式是:#import <项目名称-Swift.h>,如:#import <SwiftAndOCChangeDemo-Swift.h>
解释一下,这个头文件在文件列表中是找不到的,但是可以点进去查看,文件的最下面就是系统自动将所有的Swift语言的文件都进行了一个OC语言的编译,同时包括Swift文件中的方法生成,这进一步说明了,Swift想要取代OC,但又不能完全去除OC,因为这是基础,最底层是C语言
如图:
然后在OC文件中创建对象,调用方法
//调用一下OneSwiftFile.swift文件中的方法
OneSwiftFile *oneS = [[OneSwiftFile alloc]init];
//someFunc方法
[oneS someFunc];
//带参数和返回值的方法
NSArray *arr = [oneS someArrayByValue:@"好好学习" v2:@"天天向上"];
for (NSString *str in arr)
{
NSLog(@"输出每一个字符串...%@",str);
}
//带有标签的方法
arr = [oneS someArrayValue:@"哈哈" withValue:@"呵呵" withValue:@"嘿嘿"];
for (NSString *str in arr)
{
NSLog(@"输出每一个字符串...%@",str);
}
结果展示:
源码下载:http://download.csdn.net/detail/hbblzjy/9610203
Swift基础之OC文件调用Swift代码(在上次的基础上写的)的更多相关文章
- OC工程调用Swift方法
1.建一个OC工程命名为SwiftOC.如图所示: 2.新建一个swfit文件命名为Test.swift,会弹出提示,选择Create Bridging Header建立桥接文件,系统会建立“工程名- ...
- 在 OC 中调用 Swift 代码
1.在 Objective-C 项目中使用 Swift 代码 1)在 OC 项目中创建 .Swift 文件,文件中的格式为其本有的格式. 2)Xcode 提示是否创建 Objective-C brid ...
- Swift: 在Swift中桥接OC文件(自己创建的类文件、第三方库文件)
一.介绍 随着Swift的逐渐成熟,使用swift开发或者混合开发已经成为了一个趋势,本身苹果公司也十分推荐使用Swift这门新语言.目前Swift已经更新到了3.0,估计没有多久4.0就要出来了.那 ...
- 在OC中调用Swift类中定义delegate出现:Property 'delegate' not found on object of type ...
找了许久没找到答案, 在下面的链接中, 我解决了这个问题: http://stackoverflow.com/questions/26366082/cannot-access-property-of- ...
- python基础1 - 多文件项目和代码规范
1. 多文件项目演练 开发 项目 就是开发一个 专门解决一个复杂业务功能的软件 通常每 一个项目 就具有一个 独立专属的目录,用于保存 所有和项目相关的文件 – 一个项目通常会包含 很多源文件 在 ...
- OC调用Swift 整理步骤!总结别人的!方便自己查找!
1. 2. 上面的修改了一个配置项,有一个Product Module Name在后面会使用. 在工程里面点击File/New/File…,选择iOS/Source/Cocoa Touch Class ...
- iOS oc 调用 swift
如股票oc要调用swift里面的代码 需要包含固定这个头文件 项目名称 LiqunSwiftDemo-Swift.h #ProjectName#-Swift.h 固定的写法 swift 目的 是取代o ...
- [Swift]在Swift项目中创建桥接头文件,Swift文件和Objective-C文件相互调用
创建一个Swift项目[demo],以下内容Swift文件和Objective-C文件相互调用都是在Swift项目中. 一.Swift文件调用Objective-C文件 新建文件夹[SupportFi ...
- 在Objc项目中调用Swift
之前的文字中记录了在Swift项目中调用OC的相关代码,比较简单直接 传送门 但是在OC中调用swift代码则不是那么的和谐,网络上很多文章业已经有点陈旧.记录步骤如下: 1.创建OC项目 (1)启动 ...
随机推荐
- Weekly Contest 75题解
Q1. Rotate String(796) We are given two strings, A and B. A shift on A consists of taking string A a ...
- Socket.io应用之联网拖拽游戏
服务器端代码: const express=require('express'); const http=require('http'); const sio=require('socket.io') ...
- Hibernate的条件查询的几种方式
1. 第一种,用?占位符,如: //登录(用?占位符) public List<UserPO> LoginUser(UserPO up)throws Exception{ Session ...
- java 学习笔记2 面向对象(上)
类和对象 类是某一批对象的抽象,可以把类理解成某种概念.对象是一个具体存在的实体.类和对象是面向对象的核心. 类定义的是多个实例的特征,类不是具体存在,实例才是具体存在. 定义类(class)的语法: ...
- 3.5 find() 判断是否存在某元素
vector 判断是否存在某元素: if(find(A.begin(), A.end(), A[i]) != A.end()){ // 若存在 A[i] // find() 返回一个指针 }
- React-报错Warning:setState(...)on anunmounted component
一.原因 这种错误一般出现在react组件已经从DOM中移除.我们在react组件中发送一些异步请求的时候,就可能会出现这样的问题.举个例子,我们在componentWillMount中 ...
- OpenCv error :unresolved external symbol(链接库没有加上)
Error 如下:Linking...: error LNK2001: unresolved external symbol _cvDestroyWindow: error LNK2001: unre ...
- Spring消息之AMQP.
一.AMQP 概述 AMQP(Advanced Message Queuing Protocol),高级消息队列协议. 简单回忆一下JMS的消息模型,可能会有助于理解AMQP的消息模型.在JMS中,有 ...
- Web缓存(一) - HTTP协议缓存
为什么要使用 Web 缓存 Web缓存一般分为浏览器缓存.代理服务器缓存以及网关缓存,本文主要讲的是 浏览器缓存,其它两种缓存大家自行去了解下. Web 缓存游走于服务器和客户端之间.这个服务器可能是 ...
- Java第1次实验提纲(基本概念与引入PTA+Git)
0. 控制台下编译.运行 在Notepad++编写Java程序 学会使用控制台,javac.java 学会使用Notepad++ 参考资料: 控制台-cmd应用基础 扫盲教程 使用命令行编译并运行ja ...