oc 枚举 调用swift_swift 枚举与oc枚举的区别 - CSDN
  • OC枚举Swift 枚举

    2016-07-31 08:56:30
    OC枚举Swift 枚举介绍

    OC枚举和Swift 枚举


    下面介绍一下 OC 枚举和 Swift 枚举的写法!

    OC枚举:


             


    Swift 枚举:

                


     以上,希望对大家会有所帮助,谢谢!










    展开全文
  • Swift调用OC枚举

    2019-09-17 14:35:00
    OC中 typedef NS_ENUM (NSUInteger, EVDeviceType) { EVDeviceAudioCapture = 0, EVDeviceAudioPlayback = 1, EVDeviceVideoCapture = 2 }; Swift EVDeviceType.audioCapture

    OC中

    typedef NS_ENUM (NSUInteger, EVDeviceType) {
        EVDeviceAudioCapture = 0,
        EVDeviceAudioPlayback = 1,
        EVDeviceVideoCapture = 2
    };
    

    Swift

    EVDeviceType.audioCapture
    
    展开全文
  • 今天介绍一下在OC文件中声明了一个枚举类型,如何在Swift文件中调用枚举类型的值。 1.项目工程构建的时候选的是Swift语言,项目名称TestProject。 2.建立一个Swift文件SwiftTestFile.swift 和一个OC的文件 ...

    在OC和Swift混编的过程中有很多的细节需要注意。

    今天介绍一下在OC文件中声明了一个枚举类型,如何在Swift文件中调用该枚举类型的值。

    1.项目工程构建的时候选的是Swift语言,项目名称TestProject。

    2.建立一个Swift文件SwiftTestFile.swift 和一个OC的文件 ObjectTestFile.h 和ObjectTestFile.m。

    在ObjectTestFile.h 中声明一个枚举类型:

    typedef NS_ENUM(NSInteger, YXLabelStyle) {
        YXLabelStyleSingle1_1,
        YXLabelStyleSingle1_2,
        YXLabelStyleSingle1_3,
    }

    首先必须确认的是枚举的每个值必须是枚举的“名字+后缀”的形式,这是一种规范,不这样在Swift文件中会导致调用不到。

    也就是例子中枚举名为“YXLabelStyle”,那么每个值必须是“YXLabelStyle+...”的形式。

    3.首先想要Swift调用OC文件及内容,必须有一个桥接文件并把需要调用的OC文件的头文件引入,桥接文件的构建就不多说了,一搜一大把,我们项目中桥接文件为“Bridging-Header.h”。

    桥接文件中导入头文件:

    #ifndef Bridging_Header_h
    #define Bridging_Header_h
    
    #import "ObjectTestFile.h"
    
    #endif /* Bridging_Header_h */

    4.这样就可以在Swift文件中调用这个枚举类型的值。

    在调用的时候直接使用“YXLabelStyle.single1_1”或者直接“.single1_1”调用即可,这就是为什么要规范的原因。

    5.列子:

    假设我们有一个YXLabel,自定义实例化方法需要传入该枚举类型的值来确定YXLabel的一些样式和特性,那么我么可以这样:

    let label = YXLabel(style: YXLabelStyle.single1_1)

    或者直接这样:

    let label = YXLabel(style: .single4_1)

     

    展开全文
  • SwiftOC 互相调用

    2018-07-20 16:19:07
    Swift 调用 OC Swift 调用 OC 分为两种常见情况,一种是直接在 Application 的 project 中使用;另一种情况是,在 framework 开发中使用。 对于互相调用的原理,如下图所示,更详细的内容可以参考 《Using Swif ...

    Swift 调用 OC

    Swift 调用 OC 分为两种常见情况,一种是直接在 Application 的 project 中使用;另一种情况是,在 framework 开发中使用。

    对于互相调用的原理,如下图所示,更详细的内容可以参考 《Using Swif with Cocoa and Objective-C》

    这里写图片描述

    图 一

    其中最关键的就是三个文件 bridging header(app)、umbrella header(framework)、generated header(swift to OC)。所以主要工作就在于如何生成和指定这些文件。

    Application

    在一个 Swift 开发的工程中可以通过两种方法来生成桥接文件。

    第一种是,直接拖拽 OC 文件到工程中,此时系统会询问是否生成桥接文件,如图:

    这里写图片描述

    选择 “Create Bridging Header” Xcode 就会自动生成桥接需要的文件和修改相关配置。

    另外一种方式是自己指定。桥接文件的命名方式为:ProjectName-Bridging-Header.h,所以先按照这个格式生成一个头文件,然后在 “Build Settings” -> “Swift Compiler - General” -> “Objective-C Bridging Header” 处指定桥接头。

    设置完成后,只要在桥接头中引用相应的 OC 文件就可以在工程中的 Swift 文件中使用对应的 OC 类和方法。

    framework

    framework 中不允许使用桥接头的方式(即不允许指定 “Objective-C Bridging Header” 的值)。在新建一个 framework 的 Project 时,会自动生成一个同名的头文件。比如新建一个工程为 DuAR 的fraework,会自动生成 DuAR.h 文件,这个文件就是 “umbrella header”,如果在这个工程中用到了 OC 源文件或者 OC 写的三方库,就可以在这里引入对应的头文件,从而实现工程中的 Swift 可以使用 OC 类和方法。

    关于 “umbrella header” 还有一个叫 “umbrella framework” 的东西,可以实现 A framework 包含 B framework,但是这种方式不推荐使用。具体请搜索。

    OC call Swift

    在我们新建完一个 Swift 工程的时候,“Swift Compiler - General” 里会有一个叫做 “Objective-C Generated Interface Header Name” 的选项,这个选项里的值为 “ProjectName-Swift.h”,这个文件就是系统生成的 Swift 文件对应的 Objective-C 的头文件。

    当在 OC 文件中调用 Swift 文件中的类的时候,首先在 OC 文件中引用上面提到的头文件,即 #import "ProjectName-Swift.h"。这个文件虽然在工程中看不到,但是她真实存在,编译后,你可以按住Command+单击该文件名,就会看到具体生成的代码。
    引入后,具体类的使用,直接按照OC的方式使用即可。

    这个方法适用于 Application 工程和 framework 工程。

    注意事项

    相比于 OC 的灵活和强大的运行时,Swift 强调更高的安全性。所以 Swift 的运行时很弱,强类型等特点使得未声明为支持 OC 的 Swift 类和方法是不能通过桥接的方式在 OC 文件中使用的。

    如果需要一个 Swift 的类或方法在 OC中可以使用,则必须通过标记的形式告知编译器,即图一中的 @class,同时还有 @objc 等。或者这个类可以直接继承自 NSObject 或其子类,这样也能实现 Swift 类或方法在 OC 中被调用。

    Swift 中有许多 OC 没有的特性。比如,Swift 有元组、特有的枚举等。这些特性也不能够在 OC 中使用。所以,要使用的混编文件要注意 Swift 独有属性问题。

    展开全文
  • 所以慢慢多了很多OC混编Swift的项目,但是其实swift调用OC还是挺简单的,把OC项目慢慢转成swift问题不大。swift可以算是OC更上层的语言,我这里说的坑都是关于SwiftOC的,很奇葩吧,还有把Swift项目转成OC的,一句...

    原文地址

    简述:最近几年苹果主推swift,OC已经很少更新了,处于维护状态。所以慢慢多了很多OC混编Swift的项目,但是其实swift调用OC还是挺简单的,把OC项目慢慢转成swift问题不大。swift可以算是OC更上层的语言,我这里说的坑都是关于Swift转OC的,很奇葩吧,还有把Swift项目转成OC的,一句话公司需求,怼得程序员无言以对。(废话不多说了,后面全是骂项目经理和产品的。。。省略一万字)

    OC和Swift混编的基础设置就不说了,可以看我之前的一个文章
    https://www.jianshu.com/p/69ba19692bae

    一. OC调用Swift中的Class类这里

    1.这个类必须是继承NSObjec或者NSObjec的子类

    2.Class前面要加@objcMembers (这个关键字是让该类所有属性和方法加上@objc),3.0之前是苹果自动帮你加上的,据说嫌弃打包会偏大一些,后面改成玩家自己加。
    例如:@objcMembers class CustomServiceTool: NSObject {}

    3.类中的协议、枚举、结构体这些东西的调用
    ① 协议:直接在前面加一个@objc
    @objc protocol CustomServiceToolDelegate: NSObjectProtocol {}

    ②枚举:试了一下,必须定义出Int类型,前面加@objc才能调用(毕竟swift的枚举比OC强大太多)
    @objc enum CPLineType: Int {
    case schoolToHome = 0
    case homeToSchool
    case return
    }

    ③结构体:在oc中是不能调用struct里面的内容的,你想在类似class前面加个@objc的方法加在struct前面是不行的,那但是我们又想在oc中调用struct的属性,那怎么办呢?我们只能够再建一个类,在类里写个方法来返回struct中的值

    坑点:
    1.每次在一个类前面加个@objcMembers的时候都需要重新编译一遍才能打出提示(混编期间,报错请不要怀疑自己的代码,大部分编译一下就没事了。。。)
    2.有种特殊的情况,比如我一个OC控制器中调用了swift写的view,然后其他用swift写的控制器需要调用OC控制器,这时候要是只是把OC控制器写到桥接文件中是会报错的。(这种就是混编项目比较变态的情况)------------解决办法:swift写的View用向前声明( @class BannerView);
    3.swift中的一些类型是OC没有的,或者类型名字差不多但是类型完全不同
    例如:
    swift中的Int定义成可选类型的时候,这时候OC是调不了swift的Int类型,解决方式,定义普通Int型

     

    展开全文
  • Swift上调用OC封装好的一个model,里面有个枚举类型: typedef enum {  kCOManageCreater = 1, //创始人  kCOManageManager, //管理员  kCOManageNormal,  //普通用户 }kCOManagerType; 然后再s
  • swift enum 和OC兼容

    2015-07-09 16:25:22
    虽然说swift是基于OC的,但是swift和OC还是有很多去别的,今天我们来说一下枚举变量 下面是某个免费短信验证码的验证方法的返回状态 ...这是一个正常的OC枚举写法,但是如果你在swift里面调用这个写在OC里面
  • 1、创建一个Object-C工程:SwiftInObjectC 2、创建一个Object-C的类:SwiftLan(注意选择) ...当创建完成后,Xcode提示下面警告,会提问我们需不需要创意一个Bridge,当然我们选择“Yes”。...
  • Swift 枚举(七)

    2014-06-20 16:09:14
    枚举 1.枚举语法 用enum并把定义放在大括号内,枚举中被定义的值是枚举的成员,case关键字表示新定义的一个成员 enum SomeEnumeration {  // enumeration definition goes here } enum CompassPoint { ...
  • 概述 Swift的设计的初衷就是摆脱...随着Swift的改进及Swift开源项目剧增,越来越多的Objective-C工程开始使用Swift混编,不管是在基于Swift工程中或者Objective-C工程中,Swift和Objective-C文件都可以无缝结合。本文
  • Swift中的枚举OC中的枚举强大得多, 因为Swift中的枚举是一等类型,它除了可以定义枚举值外,还可以在枚举中像类一样定义属性和方法 1. 简单枚举定义和使用 //定义枚举,使用enum关键字 enum Method{ case Add ...
  • 本文旨在帮助开发者快速从OC开发过渡到Swift开发,挑选了一些比较浅显的但是比较常用的Swift语法特性,在介绍的过程中,通常会拿OC中的语言特性作比较,让大家更好的注意到Swift的不同。 另外需要说明的是,笔者也...
  • ENUM-枚举
  • OC/swift 类/结构体

    2019-10-23 13:21:26
    ----------- OC --------- 1.结构体与类的相同点: a.都可以将多个数据封装为1个整体。 1.不同点 a.结构体只能封装数据,而类还可以封装行为 b.结构体变量分配在栈空间(如果是是1个局部变量的情况下)...
  • OCSwift指南

    2020-03-10 00:01:09
    作者丨zhangferry来源丨iOS成长之路运行环境:Xcode 11.1 Swift5.0最近参与的一个项目需要从Objective-C(以下简称OC)转到Swift,期间遇到了一些...
  • OC项目转Swift指南

    2020-07-11 15:07:53
    OCSwift有一个大前提就是你要对Swift有一定的了解,熟悉Swift语法,最好是完整看过一遍官方的Language Guide。 转换的过程分自动化和手动转译,鉴于自动化工具的识别率不能让人满意,大部分情况都是需要手动转换的...
  • 前言14年Swift刚出的时候开始学习的Swift,后来由于项目需要,一直写App还是用的OC。最近打算把Swift重新捡起来,这个Objective C转Swfit系列就当成是我的复习笔记,顺便写成博客记录下来吧。这个系列不是讲解Swift...
  • SwiftOC转换

    2015-09-16 20:36:13
    1、获取对象类型 OC: NSDate*date = [NSDatedate];NSLog(@"%@",NSStringFromClass([date class])); Swift: let date = NSDate() let name = date.dynamicType 共有: let name:
  • JS与OC互相调用(二)

    2018-12-31 15:13:32
    除了代理方法和WKWebView的使用不太一样,关于WKWebView更详尽的讲解和用法,还是自行搜索学习,本文重点还是讲解如何实现JS 与OC 互相调用。 提醒:WKWebView 是iOS 8 推出的WebKit.framework中的控件,只有app 不...
  • 写久了OC后来写swift,总感觉写着是swift的皮毛,但是实际上是OC的核心,这里整理了OC迁移至swift中的一些小细节。 1 在当前类中,实例方法调用属性以及方法都可以将self省略掉,而且是建议省略 2 selector是调用...
1 2 3 4 5 ... 20
收藏数 1,563
精华内容 625
关键字:

oc 枚举 调用swift