Swift类与OC类方法相互调用的
2019独角兽企业重金招聘Python工程师标准>>>
收集整理,希望对大家有帮助
1、OC调用Swift实例方法
例如在ViewController.m类里调用Swift的logMe实例方法,就可以这么写:
SwiftDemo* demo = [[SwiftDemo alloc] init]; [demo logMe]; 2、OC调用Swift静态方法
首先先在SwiftDemo.swift文件中声明一个静态方法:
public static func swiftStaticFunc(log: NSString) { print(log); } 然后回到ViewController.m类里调用该方法(记得编译一下才可以)同样、调用方式和OC之间的调用类似:
[SwiftDemo swiftStaticFunc:@"oc call swift static func"]; 3、Swift调用OC实例方法
在SwiftDemo.swift类里调用ViewController.m类里的logYou方法,swift调用代码如下:
let vc = ViewController() vc.logYou() 声明一个变量vc,也就是ViewController的实例对象。然后用vc对象调用实例方法logYou。
4、Swift调用OC多参方法
首先先在ViewController.h中声明一个OC的多参方法:
(void) logMe:(NSString*)logMe logYou:(NSString*)logYou; 在.m文件中进行一下实现:
(void)logMe:(NSString *)logMe logYou:(NSString *)logYou { NSLog(@"%@--%@", logMe, logYou); } 在SwiftDemo.swift文件中调用方法如下:
vc.logMe("log me", logYou: "log you") 方法从第一个参数开始都要写在括号里。
5、Swift调用OC静态方法
首先先在ViewController.h中声明一个OC的静态方法:
(void) ocStaticFunc:(NSString*)log; 然后在.m文件中简单些一下实现:
(void)ocStaticFunc:(NSString *)log { NSLog(@"%@", log); } 回到SwiftDemo.swift文件中,用swift调用OC的静态方法。
ViewController.ocStaticFunc("swift call oc static fun") Swift调用OC变参方法
在某些需求情景下,需要用到变参函数。简单举个例子:
- (void) stringParams:(NSString*)params,...; 这种例子在系统函数中也可以见到。比如常用的NSString的一个方法:
- (instancetype)initWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2) ; OC的调用方法就不再重复了。这里说一下Swift怎么调用OC的变参方法。
首先,Swift不能直接调用OC的变参方法。
如果必须要用到,则需要对函数进行简单修改。
拿上面刚说到的stringParams:方法举例。
需要把方法的写法改为:
(void) stringParams:(NSString*)params args:(va_list)args; 函数的具体实现:
(void) stringParams:(NSString *)params args:(va_list)args {
va_list args_copy;
__va_copy(args_copy,args); NSMutableString* format = [NSMutableString stringWithString:@""]; while (va_arg(args, NSString*)) { [format appendString:@"%@,"]; } va_end(args);
if(format.length>0) [format deleteCharactersInRange:NSMakeRange(format.length-1,1)];
NSString* newFormat = [NSString stringWithFormat:@"%@",format]; NSString * result = [[NSString alloc]initWithFormat:newFormat arguments:args_copy]; va_end(args_copy); NSLog(@"%@", result); } 在Swift中的调用方式:
let args: [CVarArgType] = ["i'm", " showhilllee"] withVaList(args) { (pointer: CVaListPointer) in return ViewController.stringParams("%@,%@", args:pointer) } 当然,还有其他方式来实现。可以尝试找一下方法。
转载于:https://my.oschina.net/jack088/blog/1031060
Swift类与OC类方法相互调用的相关推荐
- Python 同一个类中不同函数相互调用
本文采取:Python的类中函数方法相互调用的两种方式_狗哥的博客-CSDN博客 __metaclass__=type class Stu:name=Noneage=Noneschool=" ...
- 彻底搞懂Python类属性和方法的调用
Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的. 一.类.对象概述 在面向对象程序设计中,把数据以及对数据的操作封装在一起,组成一个整体(对象 ...
- swift 打包sdk_在封装SDK中Swift和OC混编之相互调用
oc和swift混编之相互调用.jpg 在非SDK中: 1.swift调用oc 步骤: 创建 工程名-Bridging-Header.h 放入oc的头文件,swift即可调用 在swift项目中或者在 ...
- OC与swift相互调用
一.OC调用swift文件 二.swift调用OC文件 三.注意和总结 添加: 四.自定义桥接文件 一.OC调用swift文件 在OC项目中创建一个swift文件的时候,Xcode 会提示 需要创建一 ...
- Objective-C学习笔记(十九)——对象方法和类方法的相互调用
事实上在OC的对象方法(减号方法)和类方法(加号方法)并非相互独立的,它们也能够发生千丝万缕的关系,今天我们来研究下它们两者相互调用的问题.该样例还是以People类为基础. (一)对象方法调用类方法 ...
- Swift学习Day01(Object_c 与Swift的相互调用 )
为什么80%的码农都做不了架构师?>>> 从今天开始: 学习一门新门的语言Swift,之前常用的语言 java .object-c:相信 学起swift来,也会很快的: 之前 ...
- 转载 iOS js oc相互调用(JavaScriptCore) --iOS调用js
iOS js oc相互调用(JavaScriptCore) 从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了. 下面我们就简单了解一下这个框 ...
- 文档类CDocument、子框架类CFrameWnd及视图类CView的关系及如何相互调用
文档类.子框架类及视图类的关系及如何相互调用 收藏 了解文档和视图的相互作用关系是编写MFC程序的基本功.但是MFC的应用程序框架把文档和视图之间的关系封装了起来,初学的朋友往往不得要领,因此写程序往 ...
- python修改类的属性值_python 四种方法修改类变量,实例对象调用类方法改变类属性的值,类对象调用类方法改变类属性的值,调用实例方法改变类属性的值,直接修改类属性的值...
三种方法修改类变量,实例对象调用类方法改变类属性的值,类对象调用类方法改变类属性的值,调用实例方法改变类属性的值,类名就是类对象,city就是类变量, #coding=utf-8 class empl ...
最新文章
- N个免费DevOps开源工具,没用过,至少应该了解!
- 无线渗透--wifiphisher之wifi钓鱼获取wifi密码
- mysql+怎样查询最后几条_mysql 查询开头或最后几行
- java彩色的世界_JAVA真彩色转256色的实现
- .Net Core实现区块链初探
- .NET实时2D渲染入门·动态时钟
- MVC微信浏览器图片上传(img转Base64)
- PAT乙级题解目录——更新ing
- 用命令提示符使用MySQL
- python django企业固定资产管理系统pycharm项目源码lw
- 福州太冷?那就快来这些地方!不仅有威廉王子的蜜月圣地,也有贝克汉姆的度假天堂!全部免签or落地签...
- 2.4父子进程虚拟地址空间情况
- SPL工业智能:发现时序数据的异常
- C语言学习笔记-P1 初识C语言(1)
- 贝塞尔曲线-曲线拟合
- MySql的详细安装与配置步骤
- 推动和规范编程教育纳入中小学相关课程加强师资建设(2020)
- 运行maven打包的项目jar包
- vc项目开发:俄罗斯方块制作日志
- 员工转正申请书_员工转正申请书简短的