在学校里,多学习自然是很好的,毕竟上班以后精力和时间都相对更少、在学校里学习进度和效果估计会更高些,作为一个工作4年多的“过来人”的叮嘱,千万千万大学的时候不要害怕辛苦。
至于自学Swift,如果是计算机编程类专业,以后也准备从事此类工作,抓住还在学校里的机会,利用好课余时间。哪怕工作以后可能暂时用不上,思维模式和学习能力将在平时的学习里积累,这些都是短期内没办法“临时抱佛脚”的。当然,多学习并强化专业知识有助于找到该领域的工作,并在该领域持续发展。
另外,Swift是iOS的内部语言,相比OC更为高级,其重要性就像c#之于微软、java之于安卓。Swift背靠苹果,鉴于目前以及未来苹果的发展,这门语言也拥有着被广泛使用甚至作为第一编程语言的潜质。
自学的前提。
自学,对自制力要求较高,选择安静的环境更容易排除掉部分干扰,如果有搭档一起学习交流,或许会更好;另外就是,还是学生就有一项“在校老师”的资源,可以利用课余时间多提问、请教,不要以为大学老师就是上了课就走,他们也愿意和积极上进的学生做交流,至少大部分都是。
自学的途径。
看书、看老师推荐的书,长久下来也锻炼了自己对书内容、质量的评价鉴别能力;现在交流工具和平台很多,可以问问老师、同学有没有对应渠道,或者是在网课平台上找一找。要了解更多Swift入门也可以关注小码哥的MJ,他的《Swift从入门到精编》目录和大纲还是很清晰的,或许可以作为你学习的一个思维导图。
另外,再次强调一下Swift的优势,语言简洁、更安全、支持函数式编程、可编写 OSX 下的自动化脚本,尽管其使得App体积大、Xcode 支持不够好、第三方库的支持不够多,但也不妨碍它有市场,毕竟苹果的市场在那儿。
如果决定要做,并且是件积极进取的事,千万记得坚持,如果中途想要放弃,也先问问自己是什么原因,是没能力、接受不了失败,还是真的太辛苦了。上班以后,不止一两次会在看书的时候想要放弃,但是也明白不吃学习的苦,就要吃生活的苦,所以,如果必须要选,选前者吧,毕竟,学习的苦只是辛苦一段时间,但是生活的苦会持续很久、消磨心智。
2022年春季学期(1月18日至21日)的第一周,所有课程将在线举行,线下教学将于1月24日星期一恢复。
伊利诺伊大学厄巴纳-香槟分校(University of Illinois at Urbana-Champaign,缩写为UIUC)创建于1867年,坐落于伊利诺伊州双子城厄巴纳_香槟市,是一所美国公立研究型大学。该校是美国“十大联盟(Big Ten)”创始成员,美国大学协会(AAU)成员,被誉为“公立常春藤” 。
校友和教授中有30位获得诺贝尔奖,25位获得普利策奖,在美国公立大学中仅次于加州大学伯克利分校。UIUC工科专业在全球享有盛誉,几乎所有专业均位列全美前十,其中电气、土木、材料、环境位列全美前五;计算机专业全美第二;信息科学专业常年位居全美第一 ;会计学专业位列全美前三。UIUC校友创建或参与创建了特斯拉、甲骨文(Oracle)、Youtube、Paypal、AMD、Yelp等世界知名的公司和IT产品,以及Javascript、Swift等编程语言。该校还拥有全美第二大大学图书馆。
swift的特点:
1、swift是一种强类型语言,所有变量在声明或者定义的时候会确定类型,并且这个类型不能再被修改。
2、swift是安全的,强类型是安全性的体现之一。
3、swift所有的变量(可选型除外)都必须经过初始化才能访问使用,
(1)、非可选型变量,必须初始化,在结构体和类中,未初始化的非可选型属性,必须在构造函数中先进行初始化
(2)、可选型
显式声明?:
如String?,无需初始化,默认值为nil,使用时需要解包返回确切类型数据使用
隐式声明!:
如String!,也无需要初始化,默认值nil,可以解包,也可以不解包直接使用,也就是说,比var t:String! = "TEST",如果有一个变量a是String类型,一个变量b是String?类型,那么若a = t,那么可选型t就无需解包,直接返回一个确切的String类型,而b = t,则是返回一个可选型,这种可选型根据实际需要自动处理
Optional方式声明:
需要初始化,这种方式不会自动初始化一个nil值,并且这种方式的也是显示声明
4、swift数据类型分值类型和引用类型:
值类型:一般内存分配在栈中,进行赋值都是深拷贝,会开辟全新的内存空间给新变量,对新变量修改不会影响原变量,结构体(struct)、枚举(enum)等都是值类型,像Int、Double、Float、元组、String、Array、Dictionary、Set等,实质都是struct,所以也是值类型
引用类型:就是指针,一般内存分配在堆中,进行赋值会只拷贝值的内存地址,不会开辟新的内存空间给新变量存储值,对新变量修改会影响原变量,像类、闭包、函数等,都是引用类型
5、_在swift中有特殊的意义,一般使用来,用于占位进行忽略,比如函数参数名忽略,比如10_000(跟10000一样,但是加_后更易读)
6、swift语言,在类的继承上,方法是可重写的,而在类中,方法也是可重载的
7、swift中,可选型的本质是枚举
8、swift是面向协议的语言:
(1)、swift语言是面向对象的,但是swift标准库中,基础类只有几个,而协议类型却有几十个,充分说明了swift语言中协议的重要性
(2)、与OC中的协议不同的是,swift的协议是可多继承和扩展的,并且协议里不仅可以有方法,还可以有属性,这是OC的协议不具备的,在swift中,协议的存在,能更好的去抽象出两个不同事物的共同特性,做到一些类无法做到的是,比如飞机和鸟,明显不同类型,也没有继承关系的两种类型,他们都有翅膀、都会飞行的共同性,最好的选择就是协议了
Swift是一门静态语言,用静态语言编写的程序的行为在编译完成后就已经确定,在运行时不能修改和拓展。这样虽然损失一些灵活性,但是会更加安全。
注意:Swift可以通过继承自NSObject来获得动态性支持。
Swift是类型安全型语言。编译器会对实例类型进行检查,不匹配的话就会编译错误。比如不能将Int类型的变量赋值给String类型的变量;不能将一个可选值赋值给一个非可选值的变量。编译器类型检查可以帮助开发者尽可能早的发现问题。
Swift明确引入了可选类型的概念。可选类型表示一个变量所指向的实例可能存在,也可能不存在,Swift把这种可选类型的变量叫做可选值。
在获取可选值的内容时,语法机制会保证开发者注意到其内容不存在的情况,以 提醒开发者去处理值缺省的情况 。
内容不存在时,用nil表示,OC里也可以使用nil表示内容不存在,但是 仅限于对象类型 ,基础数据类型和结构则不能使用nil;Swift里 所有类型 都可使用nil。OC的nil是一个空指针,Swift的nil是一种语言特性。
Swift构造器可以保证所有非可选类型的属性都能被初始化,这样在后续使用中确保非可选类型属性都有值。
Swift将字符串、数组、字典这些类型都设计成值类型,对应的在OC中则是引用类型。值类型存储在栈上,没有引用计数,由操作系统管理内存,没有内存泄漏的风险;引用类型则是放在堆上,需要开发者管理内存。
Swift值类型引入写时复制技术,使得共享实例的变量在发生修改时会先执行复制,这样共享实例的变量之间的修改都是独立的;引用类型无论在赋值时还是修改时,都是直接访问操作共享的实例对象,变量的修改会影响共用同一个实例的其他变量。
Swift通过escaping 和 nonescaping 来明确区分作为方法参数的闭包的类型。非逃逸闭包,是生命周期同方法的作用域一致的闭包,当方法调用结束,闭包就被释放,同时闭包所捕获的实例或引用也会被释放。逃逸闭包,也就是闭包的生命周期逃逸出方法的作用域,这个时候就要注意其捕获的实例是否会导致内存泄漏问题。Swift通过这两个关键字提醒开发者注意内存泄漏问题。
先说结论(针对Swift 2.2):Swift把几种主流语言的优势糅合得非常好,是我见过的最漂亮最现代化的语言。
“几种语言的优势”指的是:
Objective C的运行时动态支持,和基于编译期引用计数的内存管理模型,
Ruby灵活优雅的语法,
C++的严格编译期检查,C++11编译期类型推导,模版(之所以说模版template,而不是范型generic,是因为Swift的范型实现依靠编译器更多些,而不像Java/C#依赖于运行时支持),
Javascript和Ruby的closure。
糅合的结果就是,写Swift带给你的极致体验是无与伦比的。
你可以轻松地像Javascript一样用closure写函数式编程,实现callback, aync, 以及类似Promise的代码风格;而同时,你又无需忍受Javascript那样稀烂的类型系统(JS连函数参数的个数都不检查)。语法上,Swift closure几乎和Ruby一样漂亮;Javascript写closure很啰嗦,Objective C写block更难看(那个C函数指针风格的block声明我就没搞清楚过,有码农为此专门写了个blog: Fucking Blocks Syntax),C++写closure?... 眼花。
更舒服的是,Swift通过引入nullable的概念,支持在编译期对nil值进行检查。这一举解决了Objective C因为对nil值过于灵活和宽容导致的问题。而通过optional chaining, 原来的灵活性依然保留。
除此之外,Swift还支持与Objective C混编,完美支持iOS/Mac的SDK。所以在老项目中,过渡到Swift的成本是比较低的。个人推荐老项目转向Swift可以从testcase开始写。
题主说Swift是“基于脚本的编程语言”,这个说法不太妥当。Swift是一门非常严格的编译语言,它的编译期类型检查要比Objective C和Java都要严格,更别提那些真正的脚本语言了。当然,Swift可以在Xcode Playground里即时编辑即时显示结果——那是苹果的黑科技,并不意味着Swift是脚本语言。性能上,Swift不输Objective C。
初学者关心好不好学这个问题。在此也给出明确不好学。Swift不是一门初学者入门语言。不要抱着写Swift可以快速上手的浮躁心态入门iOS开发。
以上就是关于大学生自学swift语言有用吗全部的内容,如果了解更多相关内容,可以关注醉学网,你们的支持是我们更新的动力!