• 背景: 项目里面OC写的文件有个block属性要在swift里面访问, 但是在swift里面怎么都无法访问属性, 然后把block属性加到oc的方法参数里面,连方法也不能访问了. 思考: 第一直觉猜的是swift不支持oc的block了,但是...

    背景: 项目里面OC写的文件有个block属性要在swift里面访问, 但是在swift里面怎么都无法访问到属性, 然后把block属性加到oc的方法参数里面,连方法也不能访问了. 

    思考: 第一直觉猜的是swift不支持oc的block了,但是仔细一想没有道理, 就新建了一个项目, 居然可以访问block属性和方法, 然后机智的想, 唯一的区别就是block的参数类型, 一个是自定义的, 一个是系统自带的, 然后一看oc的头文件, 用的是@class, 这个时候反应过来了, 多半是这里的问题, 把@class换成#import, 搞定可以访问了.

    总结:@class是标识有这么个类但是没有类的详细信息, #import包含了类的完整信息, swift是桥接来访问oc文件的, 在桥接文件里面没有加别的import所以这个@class表示的类, 找不到, 这才是原因. 换成import后了, swift本来桥接了模板oc文件当然就可以访问了. 宁外测试发现虽然oc里面可以访问这个block和方法, 但是一旦要调用那个自定义类型的属性的时候依然是卵的, 所以还是要import那个文件.

    展开全文
  • 之前在开发是遇到了在OC文件中调用Swift对象的变量调用不到的问题,这里总结一下: 1.首先我们一个Swift项目TestProject。 2.建立一个Swift的文件继承自NSObject名字为SwiftFile.swift,并声明一个字符串变量...
  • 2. 在swift与OC混编的编译环境下, oc类不能访问swift创建类中的代理? 解决方法如下: 在代理的头部加上 @objc(代理名字),这样就在外部就可以访问了,如下图。 然后就和oc中的代理一样,写上协议方法...
  • oc调用swift: 需要在暴露出来的方法和属性上加@objc否则不可用。需要在工程配置里面做一些小改动。 具体设置和内容可以参考: https://www.jianshu.com/p/754396e7e1bd https://www.jianshu.com/...
  • 随着Swift的日益完善,终究会取代OC的地位,就像Kotlin取代Java一样,不是时间的问题,而是使用者愿意不愿意被时代淘汰的问题首先是Swift中定义闭包
  • oc中调用swift中的struct 2016-09-05 10:26:53
    oc中调用swift中的struct  在oc中是不能调用struct里面的内容的,你想在类似class前面加个@objc的方法加在struct前面,你是发现是不行的,那但是我们又想在oc中调用struct的属性,那怎么办呢?我们只能够再建一...
  • 本文旨在帮助开发者快速从OC开发过渡到Swift开发,挑选了一些比较浅显的但是比较常用的Swift语法特性,在介绍的过程中,通常会拿OC中的语言特性作比较,让大家更好的注意到Swift的不同。 另外需要说明的是,笔者也...
  • OCSwift混编之桥接文件 2019-06-12 16:08:35
    环境介绍: mac OS sierra 10.12.6 Xcode9(Version 9.0 (9A235)) OC的项目,项目中包含多个Target,用于实现环境分离。 目标:用Swift4.0版本版本进行普通混编开发(此外还有开发... OC访问Swift ...
  • 所以慢慢多了很多OC混编Swift的项目,但是其实swift调用OC还是挺简单的,把OC项目慢慢转成swift问题不大。swift可以算是OC更上层的语言,我这里说的坑都是关于SwiftOC的,很奇葩吧,还有把Swift项目转成OC的,一句...
  • OCSwift指南 2020-03-10 00:01:09
    作者丨zhangferry来源丨iOS成长之路运行环境:Xcode 11.1 Swift5.0最近参与的一个项目需要从Objective-C(以下简称OC)转到Swift,期间遇到了一些...
  • 如何新建:一般情况,在Swift工程中新建一个OC类,或者在OC工程新建一个Swift类,系统就会提示你是否创建,选择是就行了,然后再删除你刚刚创建的无用文件。如下图(在OC工程中创建的): 如果你选择了取消,可能下一...
  • 浅谈SwiftOC的区别 2018-06-07 14:30:50
    本文转自:https://www.cnblogs.com/yajunLi/p/6862164.html一、Swift和Objective-C的联系Swift和Objective-C共用一套运行...其次就是,OC之前积累的很多类库,在Swift中大部分依然可以直接使用,当然,Swift3之后,...
  • OC 中调用 Swift 代码 2019-01-13 06:09:12
    1)在 OC 项目中创建 .Swift 文件,文件中的格式为其本有的格式。 2)Xcode 提示是否创建 Objective-C bridging 头文件,点击 Yes 创建,Xcode 会自动创建一个桥接头文件,文件名的格式是 项目名-Bridging-Header.h...
  • 在目录中创建OC相关文件 // // SumNumbers.h // Dome2test // // Created by 郭文亮 on 2018/11/23. // Copyright © 2018年 finalliang. All rights reserved. // #import <Foundation/Foundation....
  • OCSwift的区别 2018-01-03 16:52:58
    swift独有 1范围运算符 2 元组类型 3swift中定义常量用let...7swift3 新增访问权限fileprivate 和 openswift独有1、范围运算符a...b 表示[a, b] 包括 a 和 b 。(eg:3...5,就是范围 3, 4, 5) a..表示[a, b) 包括 a
  • Swift学习:属性 2018-08-13 09:43:48
    本篇将详细总结介绍Swift属性的用法; 属性是与特定的Swift类、结构体、枚举相关联的值;与其他语言相比,属性不再是被类所特有。 主要内容: 1.存储属性与计算属性 2.属性观察器 3.类型属性 4.全局变量与局部...
  • Swift 闭包 (oc 的block 类似) 2016-12-16 16:48:16
    闭包闭包的介绍闭包和OC中的block非常相似 OC中的block是匿名的函数 Swift中的闭包是一个特殊的函数 block和闭包都经常用于回调 注意:闭包和block一样,第一次使用时可能不习惯它的语法,可以先按照使用简单的闭包,...
  • OC: 相同点:都可以将多个数据封装为一个整体。 不同点: 1. 结构体只能封装数据,而类还可以封装行为。 2. 赋值 :结构体是(拷贝),对象之间是(地址) 3. 结构体变量分配在栈空间(如果是一个局部变量的...
  • OC代码转Swift代码 2015-07-02 19:57:18
    初始化函数对于oc中的[[XX alloc]init] swift不需要alloc 也不需要init。直接调用以类名为函数名的工厂方法进行初始化。 声明的变量可以不显式声明类型//objective-c UITableView *myTableView = [[UITableView ...
1 2 3 4 5 ... 20
收藏数 3,129
精华内容 1,251