首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
Swift-技巧(十) Protocol 的灵活使用
】的更多相关文章
Eclipse用法和技巧十九:eclipse修改workspace
工作中某一个项目的文件一般都在某一个路径,大多数人都习惯固定eclipse的workspace.不过偶尔也有点别的,比如做一个大项目中穿插着做些OJ,或者别的……这个时候当然可以选择在安装一个eclipse,不过也可以设置eclipse的workspace来进行切换.下面来说说workspace,一般首次打开workspace,大家都习惯勾上设置为默认的workspace的选项,这样启动第二个eclipse的时候一般都会提示出错,貌似两个eclipse不能指向同一个workspace,这个也可以…
Eclipse用法和技巧十八:减少不必要的输入
写代码的时候,很多人都有一个原则,尽量上输入.依靠IDE自动生成的代码,一般可读性,排版什么的都还是不错的,最主要的一般不会有什么低级错误.今天介绍几个在eclipse环境中,常用的依靠eclipse完成的操作.第一个,在实现方法的时候,经常会用到局部变量,这些局部变量的初始化值来自于某些对象的某些方法,由于方法中局部变量的高优先级,同样的名称可以覆盖作用域等.你可以直接输入方法名称,自动匹配生成局部变量,如下图所示: 步骤一:直接输入方法,当然这里可以用快捷键ALT+/自动补全:…
Eclipse用法和技巧十六:自动添加未实现方法2
前面一篇文章里面介绍了一种常见的自动添加未实现函数的方法.这里在顺便补充几个方法.第一个方法,看上去有点怪怪的: 步骤一:Source > Clean Up: 步骤二:选择custom profile,选择配置,在弹出的对话框中进行如下选择: 步骤三:一系列确定……从clean up中增加代码,看上去确实有点怪异,但是一次选择之后,下次只要执行就可以,同时如果配置好其他选项:如删除冗余代码,这些操作都可以一次执行,很方便. 第二种方法:Source > Override/Impl…
Eclipse用法和技巧十五:自动添加未实现方法1
java代码中经常要实现一些接口,这个也是java代码独有的地方.实现接口,就意味着要实现这个接口中定义的方法,如果一个个去码出方法就需要记得方法名称等等,就算有内容辅助快捷键帮助,也是很麻烦的.这里有个小技巧,可以快速在当前类中实现接口定义的所有方法,当然都是空实现.:-D 步骤一:先码出需要实现的接口 步骤二:光标放到声明类的那一行,按住神键:Ctrl+1,即可看到实现所有方法的提示 步骤三:选择实现所有方法,该类中即生成了接口中的方法空实现,接下来就根据需要自己重新实现,方便…
Eclipse用法和技巧十四:自动生成的TODO注释2
前面介绍了自动生成的TODO注释含义,配置以及如何去除的方法,这里介绍下TODO常见的用途.工作中经常会遇到写代码写到一半,被叫过去开会推动沟通.o(╯□╰)o 一般都有写代码停下来一段时间,再回来就发现什么都想不起来,不记得要干什么了.这个时候,TODO标签的用途就出来了.离开电脑前,在需要接着实现的地方,增加TODO标签,几处同事增加也没有关系.开完会回来,在打开eclipse可以快速找到标签的地方: 步骤一:Window->Show View->Tasks 步骤二:所有打有TODO标签的…
swift开发之--Protocol(协议)
使用object-c语言的同学们肯定对协议都不陌生,但在swift中苹果将protocol这种语法发扬的更加深入和彻底. Swift中的protocol不仅能定义方法还能定义属性,配合extension扩展的使用还能提供一些方法的默认实现,而且不仅类可以遵循协议,现在的枚举和结构体也能遵循协议了. 基于此本文从 : 1,协议中定义属性和方法, 2,协议的继承.聚合.关联类型, 3,协议的扩展, 4,Swift标准库中常见的协议, 5,为什么要使用协议 5个方面结合自身的学习经验简单介绍一下这种“…
Swift-技巧(十) Protocol 的灵活使用
摘要 Protocol 是 Swift 中实现面向协议编程思想的重要部分.在使用过程中有遇到协议中声明的部分,但是在遵守部分不需要实现的,那么就需要使用 extension 参与进来,让 Protocol 使用的更加灵活,得心应手. Protocol 是 Swfit 中重要的编程方式,也就是面向协议编程.主要就是为了解决继承过程中造成的多态情况.除此之外,在项目中也常用到代理中. 这里以遵守代理为例,来看一下 Protocol 在使用过程中可能遇到的问题,首先可以创建一个 Protocol 结构…
窥探Swift之协议(Protocol)和委托代理(Delegate)回调的使用
协议与委托代理回调在之前的博客中也是经常提到和用到的在<Objective-C中的委托(代理)模式>和<iOS开发之窥探UICollectionViewController(四) --一款功能强大的自定义瀑布流>等博客内容中都用到的Delegate回调.说到协议,在Objective-C中也是有协议的,并且Swift中的协议和Objc中的协议使用起来也是大同小异的,在Java等现代面向对象编程语言中有接口(Interface)的概念,其实和Swift中或者Objc中的Protoco…
Swift协议(Protocol)
协议是为方法.属性等定义一套规范,没有具体的实现. 协议能够被类.结构体等具体实现(或遵守). protocol SomeProtocol { // protocoldefinition goes here } struct SomeStructure: FirstProtocol, AnotherProtocol { // structure definition goes here} class SomeClass: SomeSuperclass…
Starling性能优化技巧十五则
Starling的性能优化要点 一.尽可能减少状态变更 如您所知,Starling使用Stage3D来渲染所有的可见对象.这就意味着所有的绘制都是GPU完成的. 现在,Starling可以一个接一个的发送四边形到GPU,然后一个接一个的绘制.实际上,这也是最初版本的Starling的工作方式.然而,为了更好的执行效率,GPU希望能得到大量的数据,然后在一次调用中绘制所有的对象. 这也是为什么Starling的最新版本要在发送数据到GPU之前要包含尽可能多的四边形.然而它只能批量处理那些拥有相似属…
Swift - 协议(protocol)
1,Swift中协议类似于别的语言里的接口,协议里只做方法的声明,包括方法名.返回值.参数等信息,而没有具体的方法实现. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 protocol Person { //读写属性 var name:String{get set} //只读属性 var age:Int{get} //类型方法 class func method1() //…
swift 笔记 (十九) —— 协议
协议(Protocols) 协议仅是用定义某些任务或者是功能必须的方法和属性. 类似于java里的interface的作用.但协议并不会实现详细的功能. 我猜这个名字源于OO中提到的"契约".但我并不认为这名字非常好,反而是interface这名字更容被接受.由于我认为协议这个名字非常easy和网络编程的时候的网络协议搞混,网络协议也通常简称为协议. 语法: protocol MyProtocol { //协议定义 } struct MyStruct: MyProtocol1…
airpods2隐藏的使用技巧(十)点
airpods的凭借出色的外观.不错的音质以及非常人性化的用户体验秒杀了同类型的许多真无线蓝牙耳机,以下是第二代产品airpods2一些使用的技巧,推荐给大家. 一. 随时随地查看airpods2的电量 滑动iPhone屏幕到通知页面,当连接airpods的时候,显示耳机的电量百分比,如果没有在通知页面显示电量的时候,需要添加电池小程序到通知页面(手机桌面最左页面) 二. 更改airpods2的名称 首先打开AirPods2耳机盒和手机蓝牙连接,找到设置进入蓝牙,找到此时耳机的名称,点击…
Destoon标签使用技巧十则
Destoon标签 1.全局标签 网站名称:{$DT[sitename]}网站地址:{DT_PATH}网站LOGO: {if $MODULE[$moduleid][logo]}{DT_SKIN}image/logo_{$moduleid}.gif{elseif $DT[logo]}{$DT[logo]}{else}{DT_SKIN}image/logo.gif{/if}版权信息:{$DT[copyright]}风格路径:{DT_PATH}客服电话:{$DT[telephone]}ICP备案号:{…
Eclipse用法和技巧十:显示代码outline
在一个文件中快速找到某一个方法或者某一个作用域,可以使用 Ctrl+O或者Ctrl+F3,快速显示当前代码的outline,进行快速查找.效果如下: 这里主要是补充一些后续操作,能更加方便的帮助我们查找. 步骤一:再次按Ctrl+O或者Ctrl+F3显示父类的方法: 步骤二:排序.在显示的方法中绿色代表public方法,黄色代表protect方法,蓝色代表包方法,红色代表类私有方法.这些默认按照代码位置排序.有时候我们需要根据方法的类型快速找到某些方法,比如查找fram…
swift 笔记 (十八) —— 扩展
扩展 扩展能够让我们给一个已有的类.结构体.枚举等类型加入�新功能,包含属性和方法,甚至是构造器,下标,支持协议等等... 甚至是我们拿不到源码的类.结构体.枚举,我们依旧能够给它加扩展... 看到这里的时候,我还有点小激动呢...但是淡定下来之后,认为这TMD就是个大大的飞线,飞线,飞线...这让我们的代码难以理解全面(总要操心是不是哪里还有扩展,我没读到的..谁会不会在哪写个飞线出来以达到他不可告人的秘密,所以我们不得不在"代码规范"里写:扩展必须紧挨着类的实现写.但是拿不代码的类…
swift 笔记 (十二) —— 下标
下标 swift同意我们为 类.结构体,枚举 定义下标,以更便捷的方式訪问一大堆属性.比方Array和Dictionary都是结构体,swift的project师已经为这两个类型提供好了下标操作的代码.所以.我们才干够通过 myArray[2]这样的方式,读取和改写这个struct中保存的数据. 并且.一个类型中能够定义多种下标訪问方式(重载,关于重载,在后面的笔记中会提到.这里先不用太在意) 下标能够定义为"读写"型的,也能够定义为"仅仅读"型,这样的行为.是通过…
Google高级搜索技巧十则
前言:多数人在使用Google搜索的过程是非常低效和无谓的,如果你只是输入几个关键词,然后按搜索按钮,你将是那些无法得到Google全部信息的用户,在这篇文章中,Google搜索专家迈克尔.米勒将向您展示如何更智能.更高效地进行Google的系列搜索. Google是一个非常精密成熟的搜索引擎,但大多数的用户都没有能完全地利用到它的能力.一般人就是在Google的搜索框中输入一两个关键字,然后点击"搜索"按钮,等着Google显示出它第一页的搜索结果.这是一个相当简单模式匹配算法的搜索…
Linux Shell常用技巧(十)
二十. 通过管道组合Shell命令获取系统运行数据: 1. 输出当前系统中占用内存最多的5条命令: #1) 通过ps命令列出当前主机正在运行的所有进程. #2) 按照第五个字段基于数值的形式进行正常排序(由小到大). #3) 仅显示最后5条输出. /> ps aux | sort -k 5n | tail -5 stephen 1861 0.2 2.0 96972 21596 ? S Nov11 2:24 nautilus ste…
swift 笔记 (十四) —— 构造过程
构造过程 为了生成类.结构体.枚举等的实例,而做的准备过程,叫做构造过程. 为了这个过程,我们一般会定义一个方法来完毕,这种方法叫做构造器.当然它的逆过程,叫做析构器,用于在实例被释放前做一些清理工作以及一此自己定义化的处理. 为存储型属性设置初始值 类和结构体在生成实例那一刻,必须为全部的属性赋以特定的初始值. 要么在定义存储型属性的时候直接给个初始值,否则就必须在构造器里面指定一个初始值. 上面说的这两种情况,都不会触发存储型属性的监听者行为(property observer). stru…
swift 第十四课 可视化view: @IBDesignable 、@IBInspectable
以前应objctiew-c 写项目的时候,就知道有这两个关键字,现在用swift了.用法稍作改变,基本用法还是一致的 虽然使用这个之后,有时候会报错的非常的莫名其妙----(其实还是自己技术不够牛……) 先把可能的报错,解决方法链接附上: http://stackoverflow.com/questions/27374330/ibdesignable-error-ib-designables-failed-to-update-auto-layout-status-interf http://ww…
swift 第十二课 as 的使用方法
忽略的基础性的问题,应该早点写出这个问题的解释比较好,毕竟 swift 好多的地方都用到了 as as!as?,是非常容易搞晕大脑的 1,as使用场合 (1)从派生类转换为基类,向上转型(upcasts) class Animal {} class Cat: Animal {} let cat = Cat() let animal = cat as Animal (2)消除二义性,数值类型转换 let num1 = as CGFloat let num2 = as Int le…
swift 第十课 cocopod 网络请求 Alamofire
这个 cocopod 真的是不容易,差点就放弃了…… 还好,我足够的坚持…… 还是首先说下具体的步骤,希望能记得足够的详细…… 1.打开终端,cd 到自己项目的文件夹 cd 文件路径 2.执行 vim Podfile ,创建一个podfile 文件,编辑该文件 ->退出 platform :ios, '8.0' use_frameworks! target 'EZhiChao' do pod 'Alamofire', '~> 4.4' pod 'SDWebImage', '~>3.7'…
redis使用技巧十连胜,学会工作六到飞起
Redis 在当前的技术社区里是非常热门的.从来自 Antirez 一个小小的个人项目到成为内存数据存储行业的标准,Redis已经走过了很长的一段路. 随之而来的一系列最佳实践,使得大多数人可以正确地使用 Redis. 下面我们将探索正确使用 Redis 的10个技巧. 1.停止使用 KEYS * Okay,以挑战这个命令开始这篇文章,或许并不是一个好的方式,但其确实可能是最重要的一点. 很多时候当我们关注一个redis实例的统计数据,我们会快速地输入”KEYS *”命令,这样key的信息会很明…
Swift系列十 - inout的本质
inout是可以用来在函数内部修改外部属性内存的. 一.inout回顾 示例代码: func test(_ num: inout Int) { num = 20 } var a = 10 test(&a) print(a) // 输出:20 test(&a) 通过汇编分析,全局变量a的地址0x6c52(%rip)传递给了寄存器rdi,rdi作为参数传递给了test函数,所以inout的本质就是引用传递(地址传递). 二.inout本质 示例代码: struct Shape { var wi…
C# WinForm 技巧十: 开发工具
一.摘要 为了开发效率就应该为这个框架开发一个配套工具.来生成固定格式的代码.工具界面如下: 二.数据库整理篇 添加表主键 修改表说明 修改表字段说明 生成数据库文档 导出数据库里相同的字段 数据库里相同的字段描述一样 三.根据模板生成代码 单表生成界面 四.工具实现架构 其他就是一个简单的函数工厂类 public enum BuildType { WebBuild, WinFromBuild, WPFBuil…
Swift开发学习-03 Swift技巧
一 两个数字交换算法 1.算法1 func swap(inout num1:int , inout num2:int){ num1 = num1 ^ num2 ; num2 = num1 ^ num2 ; num1 = num1 ^ num2 ;} var a = 20 var b = 10 swap(&a, &b) 2.算法2 func swap(inout num1:int , inout num2:int){ num1 = num1 + num2 ; num2 = num1 - nu…
Eclipse用法和技巧十二:快速复制一行
写代码的总有那么个时候需要Ctrl+c,Ctrl+v,在eclipse中如果遇到需要快速在一行代码的上下复制一行的话,有很方便的快捷键可以使用.将光标放到某一行,按住Ctrl+Alt+Down,即可以在下面快速复制一行,按住Ctrl+Alt+Up,即可以在上面快速复制一行. 这里有一点需要注意:intel的显示器,其显示方向的快捷键也是Ctrl+Alt+方向键,而且其响应的优先级比较高.这个时候你需要找到显示器设置的地方,去关闭快捷键响应.如果不好找的话,也可以修改eclipse的…
C# WinForm 技巧十: winfrom 全屏自适应屏幕分辨率
Rectangle rect = new Rectangle(); rect = Screen.GetWorkingArea(this); this.Width = rect.Width;//屏幕宽 this.Height = rect.Height;//屏幕高 this.ControlBox = false; // 设置不出现关闭按钮 this.FormBorderStyle = FormBorderStyle.None;//无边框…
Mac OS使用技巧十九:Safari碉堡功能之二查看网页源代码
由于大三下的时候选修了搜索技术.了解了网络上搜索引擎和网络爬虫的信息扒取的一些东西,后来我们做了一个比較水的东西.就是仅仅扒取了几家较大的下载站点几十个软件的评分下载量等信息,当用户输入一个程序名称.我们会依据下载量和评分算出的分数做一个推荐排序. 咳,扯远了.那时候我们在windows下须要用火狐来查看网页的源码,这点强大的Safari也是能够做到的,甚至Safari提供的查看源码功能要更强,仅仅只是被隐藏了. 以下我来为大家介绍Safari的隐藏功能:查看网页…