Tag: 编程语言

为什么Swift超过Objective c?

IT行业发展迅速。 对于移动应用程序开发,使用了各种编程语言。 长期以来,Objective C是用于创建OSX和iOS应用程序的主要编程语言。 如Wikipedia所述,Objective C是通用的,面向对象的编程语言。 Objective C编程语言最初是在1980年代开发的。 为了开发iOS应用,苹果在2014年带来了革命。苹果在2014年的全球开发者大会(WWDC)中推出了Swift作为一种新的编程语言。 由于Swift,开发人员找到了Objective C的替代品。Swift是一种功能强大且直观的语言,适用于iOS,OS X,电视OS和watchOS。 随着Apple删除了不安全的指针管理并引入了强大的新功能,Swift成为了Objective C的很好替代。 多亏了闭包,泛型和类型接口等许多关键功能,使用起来更加轻松。 根据RedMonk的说法,Swift将接管Objective C.2018年,Swift在十大编程语言中排名更高。 逐渐地,Swift成为开发人员的最爱。 Swift快速,安全,现代化,并在开发中实现了一定程度的交互性。 Swift有潜力创建引人入胜的,灵活的,对用户友好的应用程序。 苹果推出Swift之后,iOS世界中发生了许多争论。 Swift已成为许多组织讨论的中心。 无论是选择Objective C还是Swift,都成为开发人员永无休止的争论。 Swift是一种有效的编程语言。 为了了解Swift是更好的还是Objective C,我们需要确定Swift和Objective C之间的关键特性。毫无疑问,Swift解决了Objective C的许多缺点。即使根据Upwork,Swift是增长最快的技能适用于初创企业和自由职业者。 让我们了解为什么Swift比Objective C更好。 在Objective C上使用Swift的原因 1少代码 Swift是用于编程的更紧凑的语言。 使用Objective C,有很多导致应用崩溃的问题。 Swift减少了重复语句和字符串操作所需的代码量。 在使用Objective C时,您将需要组合两个字符串以使其冗长。 而且,类不分为两部分:接口和实现。 这样可以将项目中的文件数量减少一半,这使得处理起来更加容易。 因为在Swift中,程序员不必更新和维护两个文件。 让我们以著名的应用程序Lyft为例。 该应用已用Swift重写。 您会惊讶地发现应用程序代码从75000行增加到25000行。 与Objective-C冗长的编码相比,Swift最终使您的工作更加轻松。 2更快 与C ++一起,Swift是程序员最快的编程语言。 Swift的速度将帮助您节省成本。 例如,复杂对象的运行速度比Python中相同算法的实现快3.9倍。 它实际上比Objective C更好,后者仅比Python快2.8倍。 2014年12月,Primate […]

使用Objective-C可以做的5件事,但是使用纯Swift却做不到

我喜欢使用Swift进行编程,就像喜欢使用Objective-C或Python或C#进行编程一样,因此,本文并非旨在偏爱这两种语言。 在以后的文章中,我将尝试介绍您可以使用Swift进行的操作,但是不能使用Objective-C进行的操作。 话虽这么说,但是在写了很长时间的Objective-C之后,有时用纯 Swift进行编程时似乎缺少一些工具,尽管通常有一些方法仅使用Swift就能获得大致相同的结果。 用Objective-C编写的许多应用程序和框架都依赖于这些工具,有时还依赖于骇客,这使我们的代码更简洁,更易于使用。 我将以可能是Objective-C中最具争议的主题开始我的列表。 1.)方法混乱 混乱是有争议的,因为它允许您通过更改类选择器的实现来在运行时更改类的行为。 这意味着您可能会拥有一项服务,该服务为您提供类名或方法名作为字符串,并更改应用程序在运行时的行为方式。 不能从NSObject继承而来的纯Swift类(我们想要转换为@dynamic缺乏此功能,但本质上动态性较低且类型安全的语言首先吸引了大多数Swift开发人员。 那里有许多Objective-C框架/库,它们使用方法混乱使我们的生活更轻松并且代码更简洁。 Aspects是一个功能强大的库,它使用复杂的特性使在Objective-C中实现面向方面的编程成为可能。 这使您能够为诸如应用程序分析之类的事情实现非侵入式代码,如另一个库ARAnalytics中所示。 OCMock在很大程度上依赖于Objective-C运行时,而Swift并没有真正支持它。 Rollout.io使用方法混乱,将实时更新推送到您的应用程序。 Rollout.io发生了一个有趣的发展,他们在其中描述了他们甚至如何使用Swift应用程序进行实时更新! 2.)C ++互操作 Objective-C通过名为Objective-C ++的结构支持与C ++代码的互操作性。 许多项目/库都使用C ++作为其核心组件,以便能够更快地交付该库的跨平台版本,而不是用平台的本地语言重写整个库。 PSPDFKit和Realm是很好的例子。 当然,您可以将C ++代码包装在C或Objective-C中,然后通过Swift与该代码对话,但这会增加代码量和代码库的维护量。 3.)performSelector: performSelector:是NSObject类的实例方法,该方法将指定的消息发送到接收方并返回消息的结果。 在这样的对象上进行方法调用会触发一系列事件,这些事件将调用objc_msgSend函数(在Swift中也不可用)。 如果该类的方法调用存在实现,则该函数进行查找,否则,将其链接到超类,直到到达NSObject的根级别为止,在该根级它将引发unrecognized selector sent to instance ,该unrecognized selector sent to instance NSInvalidArgumentException 。 这种机制使您可以在不预先知道对象类型的情况下向对象发送消息,如下所示: 类personClass = NSClassFromString(@“ Person”); id object = [personClass new]; NSString * name = […]

创建表单以将新书添加到数据库

表单似乎很容易使用。 这是我网页上的几个框,我可以在其中输入一些信息。然后,单击提交,现在输入的所有内容都被保存,告知我在输入信息或通知时可能犯的错误。我输入的信息可能已经存在。 听起来很简单,但是进入使它正常运行所需的实际代码,就可以用您想要的所有方式本身就是另一个整体。 将一本新书添加到Web数据库时,可能需要考虑一些可能的事情。 让我们假设数据库已经构建,我们要做的就是创建一个新表单,该表单允许用户添加他们想查看的书。 您要做的第一件事是构建表单。 我将使用测试驱动开发(TDD)来确保我的表单以我想要的方式构建。 您首先需要构建一些表单代码。 这可以通过几种方法来完成。 最常见的是: 您通常会看到这种情况,但是键入所有内容可能会非常麻烦,尤其是当表单可能需要更大时。 这是我们在创建此类表单时应在屏幕上看到的内容。 记住每行代码需要的每条信息也可能很困难。 Rails 5.1.6拥有一个非常了不起的表单生成器,可以节省您的时间和键入时间,并且只需花费一半的工作和记忆即可为您完成所有这些工作。 这是我使用Rails“ form_for”方法构建的表单的示例,该方法创建了我只需要少量信息的表单。 如您所见,我需要记住的是,创建表格时我需要erb标签()中的所有内容。 第一个将是form_for。 在这个erb标签中,form_for是用于创建表单的方法。 @book是我们为其创建表单的对象。 从某种意义上说,这种读物像英语,我想为一本新书创建“ form_for”。 两个管道(| |)之间的“ f”变量将代表将存储在数据库中的信息。 对于代码行“ f.label:title”,我们将在其中存储信息的框的标签上看到。“ f.textfield:title”是用户输入标题名称的位置。 这样显示在屏幕上。 请注意,它如何为我们大写标签并将其放置在文本字段之外,以表示这是您必须输入标题的地方。 与后一个示例相比,这对用户可能更友好,因为一旦单击该字段,您将不再知道应该与该文本字段有关的信息。 这非常有帮助,但是我们遇到了一些较小的外观问题。 对于其他标签,我不喜欢它们的显示方式。 我真的不喜欢它显示“作者”,因为如果只有一位作者该怎么办。 我希望它是单数或复数。 我希望标签说“作者”,我也希望它也显示“年发布”而不是“年发布”,但是当使用“ f”作为标签传递时,我遇到了一个小问题”变量。 它需要与文本字段键匹配。 因此,如何在仍使用“ form_for”方法的同时解决此问题。 简单的答案是,我们仅使用普通标签代替“ f.label”。 这看起来像: 这同样适用于作者。 注意,我必须指定标签是“ book_year_pub”的标签。这就是我们连接到文本字段“:year_pub”中的键的方式。它们都意味着同一件事,只是做事方式不同。 我想在屏幕上显示“标签发布年”,标签标签的两个闭合胡萝卜之间。 您需要对“作者”执行相同的操作。 完成此操作后,应正确标记我们的新表格并准备接收信息。 它应该遵循以下思路: 还需要注意的是“提交”按钮。 我不需要放置任何其他有关我想要显示的信息。 Rails发挥了不可思议的作用,并根据我有书本的事实推断出我正在写书。 我提供的唯一信息是,其余的全部由我来处理。 […]

Swift与Objective-C。 选择哪种iOS语言

Objective-C和Swift是用于在macOS,iOS,tvOS,watchOS,CarPlay和Linux(仅适用于Swift)操作系统下对Apple软件产品进行编码的编程语言。 这些语言具有相应的应用程序编程接口(API)和框架(Cocoa,Cocoa Touch)。 Objective-C创建于80年代后期,并影响了Smalltalk(面向对象语法)和C(面向非对象)编程语言。 较新的语言Swift不基于C语言。 相反,它不再具有任何继承,只能与C库和框架一起编译。 Swift提供了更强大的工具和现代化的编码解决方案,以实现更简单但更具表现力的编码,应用安全性和性能。 同样,该语言是直观的,因此对于新程序员来说更容易学习。 下表列出了Swift与Objective-C的一般技术特性。 1. Objective-C是一种经过认可且经过充分测试的语言 2. Objective-C更稳定 3.更轻松地使用私有API 4. Objective-C易于与C ++兼容 1.难以学习 2.合格的Objective-C开发人员 1.如果一个应用程序已经用Objective-C编写并且具有庞大的代码库(超过100,000个代码行) 2.如果您正在开发框架,请使用Objective-C 3.如果广泛使用C或C ++第三方框架 雨燕更快 2. Swift更安全 3. Swift更易读 4. Swift的代码更少 5. Swift不太容易出错 6. Swift与内存管理集成 7. Swift是一种开源语言 8. Swift具有交互式编码 9. Swift更接近其他平台 10. Swift是苹果一直关注的焦点 1.较慢的编译速度 2.没有ABI稳定性 3.缺少C ++导入 综上所述,与Swift相比,Objective-C是一种过时的语言,缺少现代的工具和属性。 Swift具有许多更新和持续的发展计划,该语言得到了Apple的大力支持。 它是一种易于学习,安全,现代且交互式的编程语言。 Swift具有简化的编码模式以及与Objective-C的编码接口。 迅速编写代码,迅速执行! 强烈建议您为下一个启动项目选择Swift。 请在此处给我们留言,以便我们为您提供有关您的开发方法的建议或帮助您在iOS上构建下一个出色的产品。 这是在MLSDev博客上发布的文章的简短摘要。 如果您想获得有关这两种编程语言的更多详细信息,请 […]

字符串和字符

字符串是字符的集合,例如“ hello world ”或“ my medium account ”。 Swift字符串实际上是String(Struct)类型。 可以通过多种方式访问​​字符串类型的内容,包括字符收集,按范围,计数获取子字符串等。通过在声明类型时选择常量(let)或变量(var)来管理字符串的可变性。 →String Interpolation:以字符串类型插入常量,文字,变量和表达式称为String Interpolation。 Swift字符串由独立于编码的unicode字符组成,因此我们可以在具有各种Unicode表示形式的字符串中使用任何字符。 注意: Swift String类型与NSString类桥接,因此我们可以在String类型上使用所有NSString方法和API 。 Swift String是值类型,因此在传递时,将字符串分配给另一个变量或常量,将创建一个新字符串。 因此,执行时会进行修改。 在后台,Swift优化技术会在需要时照顾复制功能,以提高性能。 字符串文字 是用双引号(“,”)包围的字符序列(集合)。 多行字符串文字:如果我们需要包含多行或多于一行的字符串,我们可以通过用三(3)个双引号(“””)包围的字符序列来创建该字符串。 如果不希望在字符串值中出现换行符,但是为了便于阅读而在源代码中需要使用换行符,则可以使用反斜杠(’\’)。 字符串中的特殊字符: \ 0→空字符 \\→反斜杠 \ t→水平制表符 \ n→换行 \ r→回车 \”→双引号和\’→单引号 任意Unicode标量,以\ u {n}形式表示:\ u {2665} →在字符串文字中使用引号: →字符串的初始化: 我们可以定义一个空的字符串变量,以便进一步与新值一起使用,也可以使用String默认初始化方法创建一个实例。 →使用角色: 我们可以使用字符类型来创建一个字符。 我们还可以使用for-in循环访问字符串中的所有字符。 我们也可以将char类型附加到现有的字符串类型上。 Unicode: Unicode是用于在不同书写系统中编码,处理和表示文本的国际标准。 Swift的String和Character类型完全兼容Unicode,因此可以从任何外部源进行读写。 在幕后,Swift使用Unicode标量,每个字符为21位数字。 Swift使用 扩展字素簇, […]

在Swift中实现编程语言—第10部分:If语句

注意:这是关于“在Swift中实现编程语言”的系列教程的第十部分。一定要检查 以前的内容 。 在上一教程中,我们添加了对功能的支持。 事实证明,语句是否非常相似。 与函数类似,如果语句由关键字和代码块组成。 两者之间的区别在于需要参数的函数,而if语句则需要表达式。 如果语句与else和else if一起增加了一些额外的复杂性,但是如果您一直在遵循以前的教程,则此过程应该很简单。 您可能已经问过自己“鉴于我们的语言仅支持一种类型,我们将如何实现if语句?”这是一个令人担忧的问题,但是现在我们将使用真实/虚假格式,解释大于或等于1表示真实,而所有值小于1则表示虚假。 添加关键字 像以前的教程一样,所有这些都始于添加适当的关键字。 这次是if和else (我们已经在方括号“ {,”,“}”,“(”和“)”中添加了括号): 枚举令牌{ typealias Generator =(String)->令牌? … 大小写逗号 大小写如果 案例`else` 静态var生成器:[String:Generator] { 返回[ “ \\ * | \\ / | \\ + | \\-”:{.op(Operator(rawValue:$ 0)!)}, “ \\-?([0-9] * \\。[0-9] + | [0-9] +)”:{.number(Float($ 0)!)}, “ [[a-zA-Z _ $] [a-zA-Z_ $ 0-9] *”:{ […]

在Swift中实现编程语言—第3部分:Lexer

这是“用Swift编写编程语言”教程系列的第三部分。请务必阅读 第2部分 。 Lexer的核心工作是分析我们解释器的文本输入并将其简化为Token的集合,这些Token仅仅是代表来自我们输入的特定子字符串的简单结构。 每个标记表示文本输入中的文本模式。 通常通过使用正则表达式来识别这种模式。 如果您不熟悉正则表达式,建议您继续阅读Paul Hudson的介绍,并在继续本教程之前在RegExr操场上玩些正则表达式。 我们首先为令牌声明一个枚举: 枚举令牌{ typealias Generator =(String)->令牌? 大小写op(String) 案例号(浮点数) 案例解析 案例解析 静态var生成器:[String:Generator] { 返回[ “ \\ * | \\ / | \\ + | \\-| times | divided \\ sby | plus | minus”:{.op($ 0)}, “ \\-?([0-9] * \\。[0-9] + | [0-9] +)”:{.number(Float($ 0)!)}, “ \\(”:{_在.parensOpen}中, “ \\)”:{_在.parensClo​​se} ] […]

Objective-C与Swift:您应该从什么开始?

一方面,Swift从一开始就告诉我们,他非常容易理解,另一方面,Objective-C具有自己的高输入阈值,对于初级程序员而言有时可能很难做到。 如果您对制作自己的应用程序的兴趣太大了,那么您会遇到一个问题-应该使用哪种编程语言:新的Swift或经过时间考验的Objective-C? Objective-C与Swift:让我们看看吗? 让我们看一下使用不同语言的相同代码的一些原始示例: 如果要初始化大量,则在Objective-C中您应该这样做: 在Swift中: 当然,即使在原始代码中,您也会看到比Objective-C更快,更易理解的语言。 让我们看看如果我们要制作像“ Hello World”这样的程序会怎么样 目标C: 迅速: Objective-C具有自己的特定且困难的语法,并带有大量不同的标记。 Swift更清晰,而且类型具有防御性,因为如果您忘记打印变量类型,则不必担心。 但是,如果您是初学者,则应该知道在何处使用哪种类型。 Objective-C与Swift:为什么我需要这个? 重要的是,您打算做什么以及需要什么? 让我们来看看每种语言的优缺点! 工作方式: 几年前,当Swift发行时,您不知道Objective-C就找不到工作,因为所有公司都在Objective-C上对其应用程序进行编程,因此很难将Swift实施到Objective-C中。 今天,一切都变了。 所有公司都知道Swift是一种快速发展的语言,并开始在其应用程序中使用它。 另一个非常重要的时刻是稳定性。 Objective-C已经使用30年了,而不是只有4岁的Swift。 当然,例如,您不能在新程序中使用Swift的早期版本,因为它相差太多,这在Objective-C上无法说清楚。 您可以使用已有5年历史的代码,它将可以正常工作。 为了娱乐: 如果您不想在公司工作,并且计划快速而轻松地制作自己的应用程序,那么您需要Swift。 Swift中的代码简洁明了,这降低了初学者的入门门槛。 但是不要放松。 由于进入门槛低,Internet充满了不合格代码。 因为许多人在没有必要的知识的情况下开始进行编码。 好吧,如果我们总结一下-Swift适用于最新的应用程序以及快速轻松的入门。 Objective-C是旧平台的工作和支持所必需的,但是很难研究它,但是该选择什么呢? 这个问题没有确定的答案,但是我试图让您考虑您的优先事项,这应该有助于确定。 一些材料来自:https://goo.gl/nJ5hnG

使用Objective C语言收集数据类型(数组/字典)

数组基于索引在单个变量中包含相同数据类型的多个值。 请注意以下有关Objective C语言的数组用法的要点。 数组适用于索引。 这意味着我们使用索引来插入(提取)删除(替换)数组中的值。 在这里,插入—获取—删除—替换是我们对数组执行的主要操作。 数组的第一个索引从0开始,然后从1开始到2,依此类推……。 目标C上有两种类型的数组。 使用Objective C语言在Xcode中声明NSArray和获取操作 使用Objective C语言在Xcode中声明NSMutableArray和所有操作(插入—获取—删除—替换) 这里NSArray / NSMutableArray = Datatype,arrCities = Variable,arrCities拥有3个字符串值:孟买为0索引,德里为1索引,艾哈迈达巴德为第二索引 字典基于键值包含任何数据类型的多个值。 请注意以下有关使用Objective C语言的字典用法的注意事项。 字典适用于键值对。 这意味着我们使用键来插入(提取)删除(替换)数组中的值。 在这里,插入—获取—删除—替换是我们对字典执行的主要操作。 目标C上有两种字典。 使用Objective C语言在Xcode中声明字典和获取操作 使用Objective C语言在Xcode中声明NSMutableDictionary和所有操作(插入—获取—删除—替换) 在此,NSDictionary / NSMutableDictionary =数据类型,diccMyInfo =变量,“ FirstName”是值为“ Verma”的键“ LastName”是值为“ Mukesh”的键 感谢您的阅读,请分享您的反馈。 另外,请通过以下网址订阅我的YouTube频道以获取YouTube教程:https://www.youtube.com/channel/UCWjT8XgKescscxlPbMSVzbQ

Swift编程基础概述

Swift是一种用于IOS,macOS,watchO和tvO的新编程语言。 它也可以用于后端和前端开发,也可以用作脚本语言。 与其他任何编程语言一样,swift也使用变量通过标识名称来存储和引用值。 除普通类型外,Swift还引入了新类型,例如元组,枚举,结构,可选(无值)等。 Swift是一种类型安全的语言 ,它有助于弄清我们编写和工作的类型。 类型安全性有助于我们在开发过程中尽早发现并修复错误。 常量和变量 : 常量和变量将名称与特定类型值相关联。 如果未在声明中分配值,则需要为其指定类型,以便将来使用该属性。 常量的值一经设置就无法更改,因为将来可以将变量设置为新值(不同)。 “ let”用于定义常量属性,“ var”用于变量属性。 我们可以在一行中声明多个常量或变量,以逗号分隔。 2.类型注释: 在swift中,存在类型推断,因此当我们声明具有值的属性时,swift会将该值的类型分配给该属性。 因此,指定类型是可选的,但有时需要告诉编译器我们将用于该属性的特定类型。 要提供类型注释,我们需要在冒号“:”之后指定类型,后跟空格,然后是属性名称。 3.命名常量和变量: 常量和变量名称几乎可以包含任何字符,包括Unicode字符。 一旦声明了某种类型的常量或变量,就不能再用相同的名称声明它,或将其类型更改为另一种类型。 我们也不能将常量更改为变量或将变量更改为常量。 4.打印,评论,分号, 我们可以迅速使用全局函数“ print(_:seperator:terminator :)”将一个或多个值打印到适当的输出。 我们可以在SDK的调试控制台上看到打印输出。 分隔符和终止符参数具有默认值,因此我们可以在调用函数时将其省略。 我们使用注释在代码文件中包含不可执行的代码,作为对自己或团队成员的注释或提醒。 编译器将忽略所有注释。 单行注释以两个正斜杠(//)开头。 多行注释以正斜杠后跟星号(/ *)开头,以星号后接正斜杠(* /)开头 我们还可以为大型代码块编写嵌套的多行注释。 我们不需要在swift语句的末尾放置分号(’;’)。 如果需要,可以在语句末尾使用分号。 但是,如果我们想在一行上编写多个单独的语句,则需要分号。 5. Swift中的一些类型 整数 Int,UInt,UInt8,UInt16,UInt32 浮点数 双人,浮动 弦乐 6.类型安全性和类型推断: Swift是一种类型安全的语言。 类型安全的语言鼓励您清楚代码可以使用的值的类型。 编译器类型在编译代码时进行检查,并将所有不匹配的类型标记为错误。 如果我们没有指定所需的值类型,则Swift会使用类型推断来得出适当的类型。 通过类型推断,编译器只需检查您提供的值,即可在编译我们的代码时自动推断出特定表达式的类型。 当我们不指定任何类型时,Swift类型推断将提供顶级类型。 例如,即使您提供浮点类型,它也倾向于使用Double。 […]