iOS-swift-协议和拓展

1 协议(protocol

使用关键字 protocol 创建协议。

    protocol ExampleProtocol {
        var simpleDescription: String { get }
        mutating func adjust()
    }

类、枚举和结构体都支持协议。

lass SimpleClass: ExampleProtocol {
    var simpleDescription: String = "A very simple class."
    var anotherProperty: Int = 69105
    func adjust() {
        simpleDescription += "  Now 100% adjusted."
    }
}
var a = SimpleClass()
a.adjust()
let aDescription = a.simpleDescription

struct SimpleStructure: ExampleProtocol {
    var simpleDescription: String = "A simple structure"
    mutating func adjust() {
        simpleDescription += " (adjusted)"
    }
}
var b = SimpleStructure()
b.adjust()
let bDescription = b.simpleDescription

注意关键字 mutating,在结构体 SimpleStructure 中使用 mutating 实现协议中的方法。而在类中 SimpleClass,却不需要关键字 mutating 实现协议方法,因为类中方法本身就不需要关键字mutating 声明。

2 拓展(extension

使用关键字 extension 创建一个已存在类型的拓展。

    extension Int: ExampleProtocol {
        var simpleDescription: String {
            return "The number \(self)"
        }
        mutating func adjust() {
            self += 42
        }
    }
    print(7.simpleDescription)

恩,努力。

时间: 2024-11-10 13:29:38

iOS-swift-协议和拓展的相关文章

[IOS]swift自定义uicollectionviewcell

刚刚接触swift以及ios,不是很理解有的逻辑,导致某些问题.这里分享一下swift自定义uicollectionviewcell 首先我的viewcontroller不是直接继承uicollectionviewcontroller,而是添加的uicollectionview到我的storyboard, 然后再新建一个swift的文件,让这个swift继承uicollectionviewcell import Foundation class SVGCell :UICollectionView

ios Swift 特性

特性提供了关于声明和类型的更多信息.在Swift中有两类特性,用于修饰声明的以及用于修饰类型的.例如,required特性,当应用于一个类的指定或便利初始化器声明时,表明它的每个子类都必须实现那个初始化器.再比如noreturn特性,当应用于函数或方法类型时,表明该函数或方法不会返回到它的调用者. 通过以下方式指定一个特性:符号@后面跟特性名,如果包含参数,则把参数带上: @attribute name@attribute name(attribute arguments) 有些声明特性通过接收

iOS xmpp协议实现聊天之openfire的服务端配置(一)

今天弄这个openfire服务端的配置直接苦了一逼,不过好在最后终于配置好了.首先感谢@月光的尽头的博客给了我莫大的帮助.切入正题,首先说一下iOS xmpp协议实现聊天openfire服务器配置所需要的东西: 1.openfire软件,我用的是 Openfire 3.9.3,下载地址:http://www.igniterealtime.org/downloads/index.jsp 2.MySql数据库,我用的是mysql-5.1.63,下载地址:http://dev.mysql.com/do

iOS:Swift界面实例1, 简单界面

Apple推出了基于Objective-C的新语言Swift. 通过实例, 我们可以很好的感受这门新语言 注意事项: 在XCode6_Beta中, 如果有中文, IDE的自动补全功能就会失效, 所以开始调试的时候可以先用英文, 后面再用中文替代. 1. 新建iOS -> Single View Application. 2. 修改AppDelegate.swift文件 1 // 2 // AppDelegate.swift 3 // UIByCode_Swift_1_HelloWorld 4 /

Swift 协议(protocol)和扩展(extension)

协议 Swift 使用protocol定义协议: 1 protocol ExampleProtocol { 2 var simpleDescription: String { get } 3 mutating func adjust () 4 } 类型.枚举和结构都可以实现(adopt)协议: 1 class SimpleClass: ExampleProtocol { 2 var simpleDescription: String = "A very simple class." v

iOS - Swift UISearchController仿微信搜索框

0x01.创建一个UISearchController 如果传入的searchController为nil,则表示搜索的结果在当前控制器中显示,现在我让它在searchVC中显示. // 创建searchResultVC let searchVC = UIViewController() // 设置背景颜色为红色 searchVC.view.backgroundColor = UIColor.red let searchController = UISearchController(search

Swift协议(Protocol)

协议是为方法.属性等定义一套规范,没有具体的实现. 协议能够被类.结构体等具体实现(或遵守). protocol SomeProtocol { // protocoldefinition goes here } struct SomeStructure: FirstProtocol, AnotherProtocol { // structure definition goes here} class SomeClass: SomeSuperclass, FirstProtocol, Anothe

ios Swift 备忘录

Variables var myInt = 1 var myExplicitInt: Int = 1 // explicit type var x = 1, y = 2, z = 3 // declare multiple integers myExplicitInt = 2 // set to another integer value Constants let myInt = 1 myInt = 2 // compile-time error! Strings var myString =

ios Swift 资源池

Swift入门教程: http://www.cocoachina.com/applenews/devnews/2014/0604/8661.html Swift视频教程: http://www.cocoachina.com/bbs/read.php?tid=204280 Swift官方文档(PDF版): http://www.cocoachina.com/bbs/read.php?tid=204446 Swift官方文档(网页版): https://developer.apple.com/lib

ios Swift 之github

1. 软件类 a) 作者集合 http://nondot.org/sabre/ b) swift for facebook SWIFT是一个易于使用的,基于注解的Java来创建勤俭节约序列化类型和服务库. https://github.com/facebook/swift 2. 游戏类 a)FlappySwift https://github.com/fullstackio/FlappySwift b) 2048 https://github.com/austinzheng/swift-2048