首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

窥探Swift之协议(Protocol)和委托代理(Delegate)回调的使用

说到协议,Objective-C中也是有协议的,并且Swift中的协议和Objc中的协议使用起来也是大同小异的,Java等现代面向对象编程语言中有接口(Interface)的概念,其实和Swift中或者...上显示的数据了,正常开放中这些数据往往来源于网络请求,而在本篇博客中就模拟数据源,来为我们的TableView提供显示的数据。...我们UIViewController上贴了一层UITableView, 所以我们需要在相应的ViewController对应的Swift源码中进行UITableView的绑定,并实现UITableViewDatasource...我们需要做的就是,在上面界面中,我们点击任意Cell就可以Push(导航控制器展示视图控制器的一种方式,可以理解为视图控制器压栈的过程)一个ViewController中,这个ViewController...上面的场景iOS开发中极为常见,使用场景也是比较广泛的。所以协议无论Swift还是iOS开发中都是极为重要的概念之一。

3.4K80
您找到你想要的搜索结果了吗?
是的
没有找到

27.Swift学习之与OC混编

目前iOS开发语言Objective-CSwift的过渡时期,开发中难免会碰到两种语言同时存在的情况,如果在同一个项目中,两种语言并存,那么该项目就是一个混合项目。...Apple给我们做好了“桥接”工作,但是Objective-C的项目中调用SwiftSwift项目中调用Objective-C,处理的方式是不一样的,下面来进行一个简单的介绍。...Swift文件如下: class Person: NSObject { } Objective-C的类中导入头文件,注意此时导入的头文件是一个命名为项目名-Swift.h的头文件,而不是Bridging...Header文件,该头文件是自动生成的并且对开发者透明 Swift代码中将需要暴露给OC调用的属性和方法前加上 @objc修饰符,关于这个内容可查看之前的博文 class Person: NSObject..." #import "AA-Swift.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad

1.2K10

Mac开发基础练习:制作一个状态栏(NSStatusBar)上的App(一)

项目开发是最有效果的学习途径(没有之一),现在我们开发一个小的状态栏上的App入门,通过逐步实现功能,来渐渐上手熟悉Mac OSX上的基础控件使用方法。...1.2 选中ViewController.m文件,添加代码 ? 实现代码 1.3 添加图片资源 ?...添加图片资源项目工程中 如果没有出错,运行项目,你应该看到一个空的窗口,而且屏幕的右上角已经出现了我们应用的常驻标志^_^,是不是感觉很容易啊~ ?...ViewController中添加popover属性,并在viewDidLoad中进行初始化和配置。 1.4 现在ViewController.m实现代码: ?...运行结果 关于这个练习项目的演示代码,有兴趣的同学可以github来下载StatusBarDemo 下一篇,我们继续来实现关闭popover、 鼠标事件的监听,window窗口的处理以及应用退出的方法

2.1K20

Mac开发基础练习:制作一个状态栏(NSStatusBar)上的App(二)

我们练习(一)中完成了状态栏图标点击,弹出内容视图的效果,但是项目看起来还有些体验不是非常符合用户习惯,(例如点击应用之外的其他地方,popover 并没有自动消失)我们继续来添加和完善一些用户功能,...1.4 选中Main.storyboard文件,项目中删除,并清空工程配置,入下图: ?...main.m文件实现代码 1.6 因为我们去除了window,因此ViewController对我们来说已经没有价值了,我们只需要把之前ViewController中写的代码,放置AppDelegate.m...中来实现就可以了,这样我们就可以删除ViewController这个类了。...比如设置开机自动启动,再或者运行后隐藏Dock上的图标,对代码结构再进行合理的组织,比如把事件监听的方法,封装为一个工具类,或者使用tableview代替SBPopViewController,添加网络请求数据

1.4K30

module & Swift

一个module是机器代码和数据的最小单位,可以独立于其他代码单位进行链接 通常,module是通过编译单个源文件生成的目标文件。...LGApp链接LGSwiftFramework动态库 LGApp中,打开ViewController.m文件,使用@import LGSwiftFramework导入头文件,只能找到一个.Swift...'${SRCROOT}/LGSwiftC/Public/LGSwiftB.framework' SWIFT_INCLUDE_PATHS:传递给SwiftC编译器 指定路径下查找swiftmodule...SwiftProject链接OCFramework动态库 ViewController.swift中,使用OCFramework动态库的方法,出现以下问题: 无法对LGTeacherNameString...NS_REFINED_FOR_SWIFT宏,Swift的Clang Importer将做一些额外的工作,将该方法导入为私有方法,并以双下划线字符__开头 SwiftProject中,打开ViewController.swift

2K45

iOS 9 Storyboard 教程(二下)

你永远不会手动调用prepareForSegue(_:sender:)方法.它是一条UIKit发出的信息,让你知道那个segue已经被触发了. ---- PlayerDetailsViewController.swift...indexPath], withRowAnimation: .Automatic) } } } 这就得到一个PlayerDetailsViewController的引用,通过这个segue引用,可以传递这个方法....它用来往玩家数组里添加新的Player对象来作为数据源.然后它会告诉tableView添加了新的一行(底部),因为tableView和它的数据源始终是同步的....现在让我们给这个新的控制器一些数据来显示吧.GamePickerViewController.swift中,把一个具有硬编码值的games字符串数组添加到顶部: var games:[String]...Main.storyboard里,按住ctrl把tableview的单元格拖拽Exit,就想你之前做的一样,然后弹框中选择unwindWithSelectedGame:. ?

2.2K10

iOS翻页视图控制器UIPageViewController的应用

上图中,UIPageViewControllerDataSource协议为UIPageViewController提供数据支持,DataSource协议提供的数据来自各个ViewContoller自行维护...UIPageViewController把DataSource中获取到的视图数据渲染给View用于当前视图控制器的展示。...self.view.backgroundColor = [UIColor redColor]; } @end 工程模板自带的ViewController.m文件中实现如下代码: #import "ViewController.h...UIPageViewControllerDelegate> {     //翻页视图控制器对象     UIPageViewController * _pageViewControl;     //数据源数组...nil;     }else{         return _dataArray[index-1];     } } //翻页控制器进行向后翻页动作 这个数据源方法返回的视图控制器为要显示视图的视图控制器

2.2K10

Mac开发之 Cocoa 绑定 入门

-视图-控制器完全没有必要,特别是当控制器仅仅是模型与视图之间传递信息时(比如一个UILabel需要显示文本来自数据模型的内容),为了解决这种情况,苹果公司OSX中引入了Cocoa绑定....3.绑定简单使用方式 3.1 视图(View)绑定模型(Model) 将视图绑定模型对象,就是告诉视图需要显示的内容来自哪里(通常是数据模型对象的某个属性),以及什么时候更新显示内容.当数据模型的某一属性的值发生改变时...好了,基础概念就先介绍这里,我们先通过一个简单的示例来具体了解绑定操作~ (1) 新建一个Cocoa应用程序,(示例开发语言使用Swift) 新建Cocoa应用 (2) 添加一个Person类,并添加一个...,这是因为Swift中默认是关闭了KVO的属性监听,我们只需要开启就可以了,Person类中,给score属性前面,添加一个关键字dynamic,然后再来试试运行吧 (9)设置Swift中的KVO 开启...添加代码 当son的score值发生变化时,Label和Slider会同时更新它们的显示.我们没有视图和数据直接添加任何数据传递的代码,就完成了它们之间的相互联系,由此可见,cocoa绑定为我们节省了代码量

1.8K20

iOS-Swift 方法

在上篇文章 结构体与类 中,我们了解结构体与类的本质区别,并且通过阅读 Swift 源码以及验证,得知 Swift 类的本质就是 HeapObject 的结构体指针。...inout 参数的本质是地址传递(引用传递)。 3. @discardableResult func 前面加个 @discardableResult,可以消除:函数调用后返回值未被使用的警告⚠。...@objc 该关键字可以将 Swift 函数暴露给 objc 运行时,与 OC 交互,但依旧是函数表派发。 那么,@objc + dynamic 就会变成消息派发的方式-也就是 OC 中的消息传递。...调用结构体方法的本质 OC 中,调用一个方法的本质是消息传递,底层通过 objc_msgSend 函数去查找方法并调用。...这里就完全验证了 Swift 类的方法确实是存放在 VTable - 虚函数表里面的。

3.1K40

IOS 使用Core Data读写数据

image.png //项目创建成功后,项目文件夹中将自动生成一个拥 有.xcdatamodelId扩展名的文件,该文件可以使用图形化的方式编辑数据 模型,该文件中包含了Entities、Properties...项目名称文件夹上点击鼠标右键,然后选择菜单 中的【New File……】命令。...并在接下来的选择待管理的实体页面中选 中【User】实体,从而创建一个名为User的NSManagedObject子类和名 为User+CoreDataProperties.siwft的扩展文件,并在User.swift...代码中添加 一行代码@objc(User),因为Swift类型文件中,需要在暴露给OC使用 的类、属性和方法声明的前面,加上@objc修饰符 image.png 1 import UIKit...20 }catch 21 { 22 print(“保存数据失败。”)

97040

iOS应用程序如何调用以太坊智能合约 原

现在让我们生成Swift代码以与我们的智能合约进行交互。 生成Swift代码 首先,确保你项目根目录中。...为了做到这一点,让我们ViewController中定义一个属性: let query = EtherQuery(URL(string: "https://rinkeby.infura.io/v3/9f1a1e0782ab40c8b39fe189615714d0...之后,我们通过send发送此数据。密钥值是我们之前存储中找到的密钥值,amount声明了我们想要发送多少以太坊(正如你所看到的,我们为UInt256使用了typealias以获得更好的可读性)。...尝试运行应用程序,如果你输出中看到一个哈希和一个字符串“Test greetings succeeded!”,你刚刚使用Swift调用了你的第一个智能合约函数! 还有一件事应该说。...这种差异由生成的智能合约代码处理,因此你代码中将在这两种类型之间看到的唯一区别是,当调用非应付函数时,将省略参数金额(因为不应发送以太坊)。很简单,是吧? 如果想查看整个项目,可以在此处下载。

1.5K20

100个iOS开发设计程序员面试题汇总,你将如何作答?

无论是对于公司还是开发者或设计师个人而言,面试都是一项耗时耗钱的项目,本文作者CameronBanga编程、设计、AppStore等各个方面对iOS开发者及设计师面试时可能会遇到的问题进行了筛选与汇总...·Swift和Objective-C分别是什么?两者相比有何不同之处,又有何联系? ·为什么OptionalSwift语言中非常重要? ·请解释一下NSError。...Swift中,什么情况下能使用NSError,什么情况下不能? ·请说明如何使用Instancetype及其重要性。 ·Swift中,什么时候该用let,什么时候该用var?...·应用可以下载并即刻显示数据。如何根据MVC来判断下载的最佳位置? ·MVC对代码库(Codebase)的设计有何影响?...·什么时候用“弹出(Popover)”属性最为合适? ·Split-viewController是什么? ·选取器视图(PickerView)适合存放哪类内容?

1.4K40

Swift 周报 第三十七期

有分析师透露称,苹果公司今年 8 月份就已经向供应链下达了 iPhone 15 系列今年下半年的订单,订单量 8000 万部 9000 万部之间。...基于值和类型参数包提案 SE-0393 的基础上,这个提案使允许值参数包中对每个元素进行迭代,并使用 for-in 语法将每个值绑定本地变量。...回答 这里的包装器确实保证了底层数据的“安全”,但如果该类型主队列之外使用过,它会崩溃。...讨论无法 Objective C 类调用 swift 扩展方法[8] 我为 ViewController 类创建了 swift 扩展,并在其中定义了一种方法。...当我尝试同一个 Obj-c ViewController 调用相同的方法时,它给出了以下错误: ViewController 没有可见的 @interface 声明选择器 testMe 我的代码如下:

16930

Swift| 基础语法(五)

前言 总结下 swift下的基础语法,里面涉及:常量&变量、Swift中的数据类型、逻辑分支、循环、字符串相关、数组和字典、方法的书写调用等内容,考虑阅读体验分多篇来展示,希望对大家学习swift...Swift| 基础语法(一) Swift| 基础语法(二) Swift| 基础语法(三) Swift| 基础语法(四) Swift| 基础语法(五) 本文涉及: 纯代码创建应用根试图 UILabel...} Swift中,创建tableViewCell的方法可以分为两种创建tableView时候注册和需要使用时手动创建。先聊聊创建tableView的时候直接注册cell: myTb?....可以自定义cell中处理点击状态下的显示 var label1 :UILabel? var label2 :UILabel?...因为Swift中,所有对象的构造器默认都是public,所以需要重写你的init让其成为私有的。 这样就保证像如下的代码编译报错,不能通过。 六、相册选择照片或者拍照 ?

2K30

Flutter混合栈路由实践与优化

混合栈涉及 Flutter 页面与原生页面的跳转。而官方的路由方案,多引擎下有着通信隔离,资源不共享,极大的内存损耗等缺陷。...页面生命周期变更时对单 Engine 进行 attach/detach,同时传递 url、params 通知 Dart 层进行页面切换。 值得注意的是,Dart 和 Native 层是职责分离的。...内存优化 iOS 端即使实现了单引擎复用,但仍会在创建 Flutter ViewContoller 时有 10M 的内存异常增长。这就需要我们底层来理解 Flutter 的渲染过程。...项目风险考虑,我们方案设计时有三个核心的诉求: 对官方代码做最小的修改,避免有引入额外 bug 的风险; 对代码的变更是明确清晰的,遇到线上问题时,可以第一时间进行分析和排查; 可复用的诉求,易于...最开始的接入时,我们想法是能引入稳定可靠的方案,但官方对混合栈的支持偏向薄弱。 而流传的文章来看,业内的方案跟随 Flutter 版本的更新也不断的调整。

2.7K51
领券