ios深度解析之Swift(枚举,继承,协议,扩展)

Swift 协议:深度解析与最佳实践 Swift 协议是一种类型定义,它描述了一系列的方法、属性和下标,而不实现这些功能。协议可以被视为一种接口,它规定了实现协议的类、结构体或枚举必须遵循的规则。Swift 协议是 Swift 语言中的一个强大特性,它为开发者提供了丰富的功能和灵活性。通过合理地使用协议,可以提高代码的质量和可维护性。本文对 Swift 协议进行了概述和深入解析,并提供了最佳实践,希望对读者有所帮助。由于篇幅限制,本文未能涵盖 Swift 协议的所有内容。 阅读详情
// 1.枚举
//enum 枚举命: 类型{
//
//    case 分支1 = 赋值1
//    case 分支2 = 赋值2
//    
//}

enum PersonIndentity: String {

    case Teacher = "Teacher_id"
    case Student = "Student_id"

}

// 类
class Person {

    var indentity: PersonIndentity?
    var name: String?
    var age: String
    
    // 类的构造器
    init (name:String , age: String, idd:PersonIndentity) {
    
        self.name = name
        self.age = age
        self.indentity = idd
        
    }
    func hello() {
    
        print("hello")
    }
    
    // 类型方法
    class func hello2() {
        
        
    }
    
}

// 枚举 枚举名.类型 eg:PersonIndentity.Student
// 枚举名可以省略
var person = Person(name: "林林", age: "90", idd: PersonIndentity.Student)
// 枚举值的获取
// 获取当前分支
person.indentity?.hashValue
// 获取分支的值
person.indentity?.rawValue


// 2.继承  类名: 父类名
class Student: Person {

    var classNumber: Int = 23
    
    init(name: String, age: String, idd: PersonIndentity, classNum:Int) {
        
        // 如果属性仅指定类型,需要在super,init前进行赋值操作
        self.classNumber = classNum
        
        super.init(name: name, age: age, idd: idd)
        
    }
    
    // 重写父类方法 需要重写override关键字
    override func hello() {
        
        
    }
    
    override class func hello2() {
        
        
    }
}

// 3.协议
protocol OneProtocol {

    func typeFunc ()
    static func typeFunc2()
    mutating func typeFunc3()
    
}

// 类和结构体实现协议方法的时候 需要根据
class StudentNew:OneProtocol {
    
    func typeFunc() {
        
        
    }
    class func typeFunc2() {
        
        
    }
    func typeFunc3() {
        
        
    }
    
    
}

struct VideoNew:OneProtocol {
    
    func typeFunc() {
        
        
    }
    static func typeFunc2() {
        
        
    }
    mutating func typeFunc3() {
        
        
    }

}

// 类同时继承父类和协议的时候 父类必须写在前面
@objc protocol TwoProtocol {

    optional func byebye()

}

// 当协议中方法使用 optional 声明可选时 协议必须声明成object 此时协议为类的协议: class protocol
// 并且不能被结构体继承
//struct Struct2:TwoProtocol {
//    
//    
//}

// 4.扩展
var value :String = ""
extension Person {

    func hello5 (){
    
        
    }
    // 如果想扩展属性 只能是计算属性
    var stu2:String {
    
        get{
            
            return value
        
        }
        set {
        
            value = newValue
        }
        
    }
    
    // 扩展构造器的时候需要使用 convenience
    convenience init (name:String , age: String, idd:PersonIndentity, stu2:String) {
        
        
        self.init(name:name, age:age, idd:idd)
        self.stu2 = stu2
        
    }

}

var person4 = Person(name: "毛毛", age: "80", idd: .Student, stu2: "笨蛋")
person4.stu2
person4.stu2 = "sb"
person4.stu2


Swift 3.0仿爱鲜蜂应用源码深度解析 Swift是苹果公司在2014年WWDC上推出的一种全新的编程语言,用于开发iOS、macOS、watchOS和tvOS应用程序。Swift 3.0是该语言发展中的一个重要里程碑,它不仅对语法进行了优化,还增强了语言的表达能力和性能。爱鲜蜂是一款专注于生鲜配送的移动应用程序,其核心功能包括商品浏览、购物车管理、订单创建、支付处理以及用户信息维护等。通过简洁直观的用户界面,爱鲜蜂让用户能够轻松地浏览各种生鲜商品,选择所需商品并加入购物车,然后通过多种支付方式完成购物。 阅读详情

相关推荐

swift-WCTextView继承自UITextView并添加了placeholder(占位文本)的功能

WCTextView继承自UITextView,并添加了placeholder(占位文本)的功能

Swift高级开发语言--枚举,继承,协议,扩展

枚举//enum 枚举名: 类型{ // case 分支1 = 赋值1 // case 分支2 = 赋值2 //}enum PersonIndenttity:String { case Teacher = "Teacher_id" case Student = "Student_id" } // 类 class Person { var indentity:Per

DaKingDad的博客 760

swift-UITextfield输入框限制的功能封装

UITextfield输入框限制的功能封装

iOS讲解迷惑--Swift中枚举、继承、协议

//: Playground - noun: a place where people can play import UIKit var str = "Hello, playground" // 枚举 //enum 枚举名: 类型 { // case 分支1 = 赋值1 // case 分支2 = 赋值2 //} enum PersonIndentity: String {

风起云涌的博客 879

Qt开发实战:QWebEngineView缓存路径详解与自定义配置(Windows/Linux)

本文详细解析了Qt框架中QWebEngineView组件的缓存机制,提供了Windows和Linux系统下的默认缓存路径及自定义配置方案。通过实战代码示例,展示了如何实现跨平台缓存路径管理、权限设置以及企业级应用中的多用户隔离策略,帮助开发者有效管理Web内容缓存,提升应用性能和数据安全性。

weixin_42519826的博客 403

2023-10-20 - MacBook - 优化外接2k显示器体验:告别字小与字虚的终极指南

本文针对MacBook外接2K显示器时普遍遇到的字体过小和边缘发虚问题,提供了终极解决方案。通过深入解析macOS的HiDPI与Retina显示原理,并详细指导使用SwitchResX等工具开启隐藏的HiDPI模式,实现完美的2倍整数缩放,从而在保证字体大小合适的同时获得清晰锐利的显示效果,彻底告别字小与字虚的困扰。

solidity8miner的博客 476

Swift中的继承(Inheritance)

继承(Inheritance),值类型(枚举、结构体)不支持继承,只有类支持继承。没有父类的类,称为:基类,Swift并没有像OC、Java那样的规定:任何类最终都要继承自某个基类。子类可以重写父类的下标、方法、属性,重写必须加上override关键字。......

run_in_road的博客 1648

ADS1299寄存器配置与应用实战指南

本文提供了ADS1299高精度生物电信号采集芯片的寄存器配置与应用实战指南。详细解析了采样率、增益、转换模式等核心寄存器的设置方法,并分享了数据读取、高级功能配置及常见问题的调试心得,帮助开发者快速掌握ADS1299的配置技巧,实现稳定的ECG/EEG信号采集。

weixin_28278377的博客 193

ios swift 继承_Swift中的继承

ios swift 继承 什么是继承? (What is Inheritance?) Inheritance allows a class to have the same behavior as of another class and extend that behavior to provide specific needs. 继承允许一个类具有与另一个类相同的行为,并扩展该行为以提供特定的...

weixin_26638123的博客 352

告别环境配置烦恼:用Conda一键搞定GATK4、samtools、fastp等生信分析全家桶

本文介绍如何利用Conda快速搭建包含GATK4、samtools、fastp等工具的生物信息学分析环境,解决软件安装和版本冲突问题。通过详细的配置步骤和实战案例,帮助研究者十分钟内完成重测序分析全家桶的环境配置,显著提升上游分析效率。

weixin_30753873的博客 334

SAP 批次管理

批次管理: 业务场景: 批次常用于:采购、生产、SD等: 1、先进先出,先入库的先出库(如何实现),基于入库时间来自动确定出库策略。 2、追塑:基于批次进行产品质量追溯 例如订单MTO ---> PP ----> MM(批次关联)。SO—>PP工单 --> 预留 --> 发料(基于批次A\B\C)-->产成品入库-->批次入库D--> ...

willieyuan的博客 1万+

Swift 中枚举高级用法及实践

作者:Benedikt Terhechte,原文链接,原文日期:2015-10-17译者:小锅,pmst;校对:shanks;定稿:shanks 译者注:作为一个走心且有逼格的翻译组,我们对本篇文章中的代码都进行了验证,并且写了将代码分为上下两篇做成了 playground,代码中有详尽的注释。可以到这个github地址上进行下载,这个代...

weixin_33863087的博客 745

6、基于深度强化学习的无人机路径规划

本文介绍了一种结合人工势场法的改进DQN深度强化学习算法在无人机路径规划中的应用。通过设计合理的网络结构、状态空间、动作空间和融合引力-斥力机制的奖励函数,实现了无人机在复杂环境中的自主避障与目标导向飞行。采用轻量级神经网络提升实时性,并在Gazebo仿真环境中进行训练与测试,结果表明该算法具有快速收敛、高成功率和良好适应性。实验评估指标包括损失函数、最大Q值和任务成功率,验证了方法的有效性。文章还探讨了其在物流配送、农业植保和环境监测等领域的应用前景,并展望了多无人机协同与复杂环境适应性等未来研究方向。

html8的博客 237

应对iOS审核4.3:深水区的探索——协议与枚举的混淆策略

iOS代码混淆中,协议(Protocol)和枚举(Enum)的混淆属于高风险操作,需谨慎评估。虽然混淆能抹去模板痕迹,但其公共属性与系统API的强耦合可能导致编译错误和序列化问题。建议采用极度保守的白名单策略:默认排除所有协议和枚举,仅手动指定确认安全的少数目标进行混淆。社区工具如Ocer也采用类似谨慎方案。总体而言,除非特殊需求,不建议进行此类混淆,其维护成本往往超过收益。实施时需严格审计、测试并备份映射文件。

qq_36554962的博客 823

《备考系统分析师》 - 专栏介绍和目录

本专栏提供软考高级系统分析师全套备考资料,包含四大核心内容:1.详细考点梳理(覆盖基础知识、关键技术、案例实践三大模块16个章节);2.历年真题及解析(2009-2022年所有真题含综合知识、案例分析和论文);3.100+篇高质量论文范文;4.预测模拟题。早鸟价仅需9.9元,可节约80%资料搜集时间,帮助考生高效备考、顺利通过考试。专栏持续更新,有问题可随时联系作者。

数据知道的博客 1万+

6、基于集成学习技术的边坡稳定性预测及滑坡易发性研究

本研究基于集成学习技术对云阳县的边坡稳定性及滑坡易发性进行预测分析。通过比较SVM、RF、XGBoost和LR四种模型,发现集成学习模型在准确率和少数类识别方面表现更优。特征重要性分析表明剖面形状是影响边坡稳定性的关键因素。同时,引入基于定性分析的分区建模方法,构建父模型与子区域模型,提升了滑坡易发性制图的精度。研究成果为地质灾害的预防与管理提供了科学依据和技术支持。

peach的博客 126

深入 ECC 的 Swift Patterns 规则:面向协议设计、值类型、Actor 并发与可测试依赖注入

本文以 ECC 仓库中的 [Swift Patterns 规则文件](https://link.gitcode.com/i/61f2dbc0ac1ce28f3459ad1d62e52f3a) 为主体,逐条拆解其四大核心 Swift 设计模式——面向协议的仓储设计、基于值类型的状态建模、Actor 并发隔离与默认参数依赖注入,并结合仓库中该规则直接引用的 [swift-actor-persisten

gitblog_01149的博客 800

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Grok2API Docker一键部署指南:从拉取镜像到验证API Key全流程演示

本文为新手整理了一份 Grok2API Docker 一键部署指南,教你从零开始用 `docker compose` 拉取镜像、启动服务,并完整演示从健康检查到创建、验证 API Key 的全流程,10 分钟即可跑起一个支持对话、生图、生视频的 AI 网关服务。 ## 一、Grok2API 是什么?为什么推荐 Docker 部署? Grok2API 是一个基于 **FastAPI** 重构的

gitblog_00707的博客 666

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

TransitionTreasury源码解析:iOS转场动画框架的设计与实现原理

想要为你的iOS应用添加令人惊艳的转场动画效果吗?TransitionTreasury是一个强大的Swift转场动画框架,它让iOS视图控制器的切换变得简单而优雅。本文将深入解析这个框架的设计理念、核心架构和实现原理,帮助你理解如何为你的应用添加专业的转场动画效果。 ## 🚀 TransitionTreasury框架概述 TransitionTreasury是一个专为iOS设计的视图控制器转

gitblog_00609的博客 378

XcodeGen深度解析:Swift项目自动化构建的架构设计与实战指南

XcodeGen作为一款基于Swift的命令行工具,彻底改变了iOS/macOS开发者的项目管理方式。通过YAML/JSON配置文件自动生成Xcode项目文件,它解决了传统`.xcodeproj`手动管理的痛点,实现了项目配置的代码化管理,为团队协作和CI/CD流程带来了革命性的改进。 ## 痛点分析与技术挑战 在传统的iOS/macOS开发中,`.xcodeproj`文件一直是团队协作的痛点

gitblog_00331的博客 237

SCLAlertView-Swift 完整使用指南:用 Swift 打造可动画、可深度定制的 iOS 弹窗

本篇技术指南围绕 [SCLAlertView-Swift](https://link.gitcode.com/i/efcc8db72f139e14c96326419e05a69c) 仓库的官方文档展开,系统讲解这款纯 Swift 编写的动画弹窗组件的全部核心能力:一行代码弹出成功/错误/信息等不同样式的弹窗、通过 `SCLAlertViewResponder` 动态更新与关闭、借助 `SCLApp

gitblog_00535的博客 141

深入解析 HandyJSON:基于 Swift 反射的 JSON 模型互转框架及其在行为验证码 iOS 客户端中的应用

本文围绕当前仓库 [view/ios/captcha_swift/Pods/HandyJSON/README.md](https://link.gitcode.com/i/9e6066f144a3a855aa3e2508dad03889) 展开,系统讲解 HandyJSON 这一 Swift 原生 JSON 序列化/反序列化框架的设计原理、安装方式与全部核心 API。HandyJSON 在本仓库中

gitblog_01096的博客 211

swift. 扩展类添加属性_如何面试一个 Swift 程序员

作者丨ZJaDe来源:https://juejin.im/post/5d830222e51d453b7403fa49#heading-01. 前言说到 Swift 不得不提一下 Objective-C。Objective-C 作为和 C++ 同一时代的语言,是苹果和 Smalltalk 生下的孩子,它寄托了苹果无尽的期望。然而时代在发展,人们通过无数次实践总结出了各种编程思想。Objec...

weixin_39767322的博客 95

深度解析:PanModal如何为iOS应用提供专业级底部弹窗解决方案

PanModal作为iOS平台上专业级底部弹窗框架,通过其优雅的架构设计和高度可定制的交互机制,为开发者提供了构建现代化模态界面的完整解决方案。该框架不仅解决了传统iOS模态视图在用户体验上的局限性,还通过精心的性能优化和灵活的扩展性,满足了复杂业务场景下的交互需求。 ## 核心理念:声明式配置与响应式交互 PanModal的设计哲学建立在声明式配置和响应式交互两大核心原则上。与传统的命令式U

gitblog_00620的博客 443

MWFeedParser技术深度解析:构建高性能iOS内容聚合应用的最佳实践

在移动应用开发领域,内容聚合功能已成为提升用户粘性的关键技术。然而,iOS开发者面临RSS/Atom Feed解析的复杂挑战:XML解析效率低下、网络请求阻塞主线程、HTML内容处理繁琐。MWFeedParser作为一款专为iOS设计的Objective-C RSS/Atom解析框架,通过简洁的API设计和高效的底层实现,为开发者提供了完整的解决方案。 ## 🔧 架构设计与核心原理 MWFe

gitblog_00220的博客 718

ReactiveCocoa 版本演进全解析:从 RAC 3.0 到 12.0 的 Swift API 迁移指南与变更深度解读

[CHANGELOG.md](https://link.gitcode.com/i/1e348a22bfd3f5c4045690fec4ce78b4) 记录了 ReactiveCocoa 从 3.0 到 12.0.0(含 master 分支)十余个版本的核心变更,是理解"ReactiveCocoa 如何在 Swift 化进程中一步步从 Objective-C 的 RAC 2 走向以 Reactiv

gitblog_01102的博客 451
上一篇: ios深度解析之Swift(结构体和类,属性)
liyuBlog
博客等级 码龄11年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值