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

面向协议编程与 Cocoa 邂逅 ()

本文笔者在 MDCC 16 (移动开发者大会) iOS 专场中主题演讲文字整理。...因为全部内容比较长,所以分成了上下两个部分,本文 () 主要介绍了一些理论方面的内容,包括面向对象编程存在问题,面向协议基本概念和决策模型等,下半部分主要展示了一些笔者日常使用面向协议思想和 Cocoa...protocol 是 Swift 语言底座,语言其他部分正是在这个底座组织和建立起来。这和我们熟知面向对象构建方式很不一样。...添加 extension。...像是 C++ 这样语言选择粗暴地将菱形缺陷问题交给程序员处理,这无疑非常复杂,并且增加了人为错误可能性。而绝大多数现代语言对多继承这个特性选择避而远之。

56420

Android Studio导入项目非常解决办法

然而在实际使用时,依然有不少不爽地方。...但是Gradle二进制包体积较大,而且用户可能按照了不同Gradle版本,构建时可能会出现各种问题。因此又提出了Gradle Wrapper这么个东西,用于解决前面出现问题。...这样解决了客户端版本不一致问题,但是也带来了一个新问题:国内连接到远程服务器下载Gradle包速度非常!...这一点做非常不友善。实际,之所以卡在这,就是因为后台在服务器下载Gradle包。而这个Gradle包往往有几十兆,在网络环境不太好情况下,可能要下很久才能完成。...解决方法     在网络搜罗了一番,通常做法是修改Gradle Wrapper配置文件中Gradle版本,但是都不太完整。最后在这里看到了完整点解决方法。

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

JSON非常:这里有更快替代方案!

免费体验 Gpt4 plus 与 AI作图神器,我们出钱 体验地址:体验 是的,你没听错!JSON,这种在网络开发中普遍用于数据交换格式,可能正在拖我们应用程序。...JSON 是应用程序中数据粘合剂。它是服务器和客户端之间进行数据通信语言,也是数据库和配置文件中存储数据格式。从本质讲,JSON 在现代网络开发中起着举足轻重作用。...何时使用:Avro 适用于模式演进非常重要情况,如数据存储,以及需要在速度和数据结构灵活性之间取得平衡情况。...这些设计和编码差异导致了二进制表示法不同: Avro 包含模式信息并具有自描述性,因此二进制文件稍大,但与模式兼容。...MessagePack 编码长度可变,因此非常紧凑,但缺乏模式信息,因此适用于已知模式情况。

17210

linux安装Docker(非常简单安装方法)

大家好,又见面了,我是你们朋友全栈君。 最近比较有空,大四出来实习几个月了,作为实习狗我,被叫去研究Docker了,汗汗!...Docker三大核心概念:镜像、容器、仓库 镜像:类似虚拟机镜像、用俗话说就是安装文件。...容器:类似一个轻量级沙箱,容器是从镜像创建应用运行实例, 可以将其启动、开始、停止、删除、而这些容器都是相互隔离、互不可见。 仓库:类似代码仓库,是Docker集中存放镜像文件场所。...简单介绍一下在CentOS安装Docker。 前置条件: 64-bit 系统 kernel 3.10+ 1.检查内核版本,返回值大于3.10即可。...$ uname -r 2.使用 sudo 或 root 权限用户登入终端。

72630

github非常适合go语言新手项目推荐

波哥公司已经全面从Python框架转向了Go语言,这反映了Go在业界日益受欢迎。我利用工作之余时间,在GitHub比较了几个Go语言开源项目,并愿意与大家分享。...对于那些希望学习Go的人来说,从理解开源项目开始是个不错选择。 Go之所以越来越适合DevOps,主要是因为它拥有几个关键特性和优势,非常符合DevOps领域需求。...静态编译:Go程序编译后是静态链接二进制文件,包含了所有依赖,这使得部署极为简单。一个单独二进制文件就可以在没有依赖冲突或环境配置问题情况下,在任何支持操作系统运行。...该书是Go语言经典读物,提供了大量实用代码示例。 推荐原因: 跟随经典书籍学习,能够系统地掌握Go语言,非常适合初学者深入理解Go语言设计和使用。...推荐原因: 对于初学者来说,了解如何合理地组织项目结构是非常重要,这个项目能给你提供一定指导。

40010

浅汇-iOS 动画

在iOS开发中,制作动画效果是最让开发者享受环节之一。一个设计严谨、精细动画效果能给用户耳目一新效果,吸引他们眼光 —— 这对于app而言是非常重要。...CALayer是QuartzCore库内类,是iOS最基本绘制单元。...其次,我们知道iOS平台Cocoa Touch 是源于OS X平台Cocoa),是在Cocoa基础添加了适用于移动手机设备手势识别、动画等特性;但从底层实现上来说,Cocoa Touch与Cocoa...: 控制动画显示节奏系统提供五种值选择, 分别是: kCAMediaTimingFunctionLinear 线性动画 kCAMediaTimingFunctionEaseIn 先后快(进快出)...粒子动画 transform动画 transform是一个非常重要属性,它在矩阵变换层面上改变视图显示效果,完成旋转、形变、平移等等操作。在它被修改同时,视图frame也会被真实改变。

80530

解决在MAC输入法切换问题

Mac Book Pro升级到Catalina 10.15.1 之后,不论是系统自带中文输入法,还是安转第三方中文输入法,当使用快捷键“Ctrl + Space”进行中英文输入法切换时候,经常会出现切换失败情况...导致希望切换到中文输入法时候但是依然只能输入英文,或者希望输入英文时候但是依然保持在中文输入法状态。...尝试了各种各样解决办法,如:更改切换输入法快捷键为“Shift”,但是这样带来问题是当需要输入大写字母时候按住Shift键就会切换输入法,使用起来非常不顺手。...,进行如下设置: 勾选:Show Input menu in menu bar 不勾选:Automatically switch to a document's input source (这个设置非常关键...,对于切换输入法速度影响很大) ?

4.9K30

使用SDL2显示一张图片,SDL2上手贴

SDL全名Simple DirectMedia Layer,是一个跨平台底层音频、视频、键盘、鼠标操作库,操作实际通过更底层OpenGL/Direct3D完成,在保留跨平台兼容性之外提供了非常效率...你看上面SDL代码中载入png图片,实际最后就是当做一副材质(texture)来使用了。 2.SDL/OpenGL/Direct3D同GTK/MFC/QT/Cocoa是什么关系?...GTK/MFC/QT/Cocoa也是显示相关这没错,但是它们主要是提供用户程序界面管理、显示及事件处理。...所以平常我们所见应用程序,其实都是基于这一类软件库完成。而重要是,这些界面管理库,实际最终也是经由OpenGL/Direct3D或者类似功能更底层一些显示绘图库来完成界面部分绘制功能。...这两类系统往往不是独立存在,比如举例说一个视频播放器,播放器窗口界面、菜单、文件打开等界面和操作,都是由界面管理器比如WindowsMFC或者MacCocoa来完成,到真正视频播放环节,

1.6K70

MonoMac 1.0正式发布

我们原来目标不大:绑定足够AppKit,这样你可以对OS X使用C#或者你最爱.NET 语言来建设本地应用。我们利用了大量结合CocoaTouch API构建MonoTouch时代码。...MonoMac套件目标之一,也 是发布独立 .app应用程序,让最终用户摆脱对Mono依赖。...MonoTouch成功则是一个良好基础,于是Mono开始将Cocoa API使用C#和.NET世界中模式与惯例用法表现出来,并提供开发人员整套Cocoa应用程序开发工具。...如果没有安装MonoDevelop,可以参考我写一篇 OS X 使用.NET开发应用程序。MonoMac 1.0已经自带了一个经过修改OpenTK 1.0。...(OpenTK, 是对 OpenGL、OpanAL、OpenCL 跨平台封装,使用 C# 编写,可以运行在 Windows、 Linux 以及 MacOSX 平台上, 任何 .Net 语言都可以使用它做开发

57580

【IOS开发进阶系列】iOS系统架构专题

从上图中我们可以发现Mac OS X与iOS系统架构层次只有最上面一层不同,由Cocoa框架换成了Cocoa Touch,因此开发iOS应用程序与开发Mac OS X程序是相似的,现在就让我们来具体看看每层所包含内容...Cocoa Touch层中其他框架,对我们在应用程序中开发来说也是非常有用,如访问用户通信录功能框架、获取照片信息功能框架、负责加速感应器和三维陀螺仪等硬件支持框架。...它用一种高层Objective-C接口配置动画和效果,然后重载在硬件获得较好性能。...开发者总是要使用OpenGL框架EAGL接口,EAGL接口是OpenGL ES框架一部分,它提供了应用OpenGL ES画图代码和本地窗口对象接口。...在iPhoneOS里没有OpenSSL库,但是数据摘要提供功能在本质与OpenSSL库提供功能是一致

52141

电脑PC那些非常好用视频播放器推荐

随着web发展,现在很多时候我们都在网络直接看视频了,很少有把视频下载下来,然后在电脑观看需求,然而对于一些喜欢看高清画质电影用户来说,一款支持多种视频格式,支持4k视频视频播放器还是必不可少...,今天我们就来分享几款被很多人安利过超高点赞视频播放器。...最新高质量视频编解码器,如HEVC(h.265)、h.264、VP9也使用硬件加速功能,因此CPU使用率非常低,因此即使在低端PC或多任务环境中,您也可以享受高质量视频。几乎支持所有视频格式。...VLC在视频、字幕同步、视频和音频过滤器拥有最完整功能集。 可在所有平台运行 - Windows, Linux, Mac OS X, Unix, iOS, Android。...高质量视频输出mpv具有基于OpenGL、Vulkan和D3D11视频输出,能够支持许多视频爱好者喜爱功能,例如使用流行高质量算法视频缩放、颜色管理、帧定时、插值、HDR等。

4.6K20

基于视锥体(平截体)OpenGL ES性能优化

按照上面的判断,球体是在平截体之外,但是实际是相交。 解决方案 把半径乘以特定因子。 如下图,考虑球体被外切情况,得出相应放大因子。 ?...根元素是子元素父,子元素可能是其他元素父。参考Cocoa视图层次结构,2DUIView实例场景图。同样概念也使用与3D对象层次结构。...OES OES扩展是OpenGL ES标准维护者,提出一个非标准扩展。 思考 为什么FPS会在20FPS和30FPS之间摆动? 绘制 和 显示 并不一样。...最后,即使你自己通过自定义线程(不采用CADisplayLink),把绘制时间空缺填补,实际绘制速率并不会变快。...总结 主要讲解是数学部分知识,OpenGL ES部分没有引入新技术点。 工作原因,以后更新会一些。能看到这里,你也是喜欢技术,谢谢支持。来一波关注和喜欢如何 -> 我会加油更新。

1.7K70

架构之路 (一) —— iOS原生系统架构

前言 前面写了那么多篇主要着眼于局部问题解决,包括特定功能实现、通用工具类封装、视频和语音多媒体底层和实现以及动画酷炫实现方式等等。...触摸层(Cocoa Touch) 为应用程序开发提供了各种常用框架并且大部分框架与界面有关,本质上来说它负责用户在iOS设备触摸交互操作。...媒体层(Media) 提供应用中视听方面的技术,如图形图像相关CoreGraphics、CoreImage、GLKit、OpenGL ES、CoreText、ImageIO等等。...OpenAL是一个跨平台方位音频库。 OpenGLES.framework:包含OpenGL ES接口。OpenGL ES框架是OpenGL跨平台2D和3D渲染库跨平台版本。...CoreVideo.framework:包含操作音频和视频底层例程。请不要直接使用该框架。 Foundation.framework:包含Cocoa Foundation层类和方法。

86910
领券