swift语言常见的问题和回答

1、如果我是个刚入门的iOS开发者,选swift学习呢,还是选objective-c学习,还是两个都学?

这个可以根据两种情况来决定:1、我想进入公司担任iOS开发的职位    2、我只想做个独立开发者,自己开发app发布。

第一种情况的话,你必须要学Objective-C,现在市面上绝大部分的app都是用oc开发的,从oc到Swift过渡是要很长一段时间的。

当然swift最好也同时要学会。

第二种情况:你不考虑兼容性(iOS7以下版本,后面会提到)的情况下,完全可以只学习swift。不过objective-c第三方开源库非常的丰富,有时间,最好还是要学习了解oc。

随着时间的推移,肯定是转向swift的。

2、 我有多年的iOS  Objective-C的开发经验,对应swift,我还是新手吗?

在我看来,你不是新手了。因为你很熟悉Xcode和Cocoa/Cocoa Touch API 。熟悉和学习这些API和工具过程比学Swift花的时间更长。

只要花点时间熟悉使用Swift语法,

就能很快的在项目中使用swift了。

3、iOS 8和OS X Yosemite的应用程序只使用Swift语言么?

不是。Swift语言能与Objective-C流畅地交互,反之亦然。苹果并没有完全将Objective-C 的API转成Swift,但你仍可以在Swift代码中仍使用这些API。时间会证明,很多年内iOS和OS X商店在采用Swift语言的同时仍会继续依赖Objective-C语言。

4、Swift语言适用于iOS的其他版本和OS X系统么?

是的!Xcode 6可以为iOS 7及以上和OS X10.9及以上的系统版本编译Swift代码。其实,现在你从App Store下载的WWDC app就是苹果用Swift语言编写的。

但是,苹果现在还不允许使用Xcode Beta版本创建的应用程序提交到App Store。因此,你需要等到Xcode 6正式版发布才能在App Store中上传Swift编写的应用程序。

5、Swift语言是取代Objective-C,还是只是对Objective-C的补充?

引用苹果官方的一句话,“Objective-C不会消失,Swift和Objective-C可同时用于Cocoa和CocoaTouch开发。”因此,你仍然可以继续使用Objective-C。不过,苹果似乎鼓励你使用Swift进行新的开发,而不是希望你重写所有的Objective-C代码。我们猜测苹果在未来的框架和API开发中将会逐渐减少使用Objective-C语言,甚至有一天会弃用Objective-C,所以早作准备吧!

6、playground是什么?

playground只是一个文件,你可以编写代码的同时即刻看到运行效果。对于学习Swift或者新的API、原型代码或者算法真的很有用处!

参考11条,你就知道怎么创建和运行playground了。

7、如何学习Swift?

苹果官方的教程 Swift Programming book

官方教程的中文翻译:http://numbbbbb.gitbooks.io/-the-swift-programming-language-/

8、有没有在Swift语言可以实现,但Objective-C下却不能实现的事情?或者反过来说。

有的。Swift是一门现代语言,引入了很多Objective-C不支持的内容。比如命名空间(namspacing)、可选类型(optionals)、元组(tuples)、泛型(generics),类型推断(type inference)以及其他等等。当然,Objective-C也有一些Swift不具备的特性,比如messaging nil.

想了解更多细节,请阅读官方文档: Using Swift with Cocoa and Objective-C Guide

也可以看这里有: 中文版

9、Playground中,println()结果在哪里?

如果你打开了playground,还是看不见结果,那就执行那么的操作:

打开Assistant Editor才能看到控制台输出。步骤:View > Assistant Editor > Show Assistant Editor,

或者使用快捷键: Option + Command + Return.

10、怎样在打开Playgrounds和看到那些很酷的值的图形?

两种方式打开Playgrounds:新建Playgrounds项目或在已有的项目里新建文件,选择playgrounds文件。

咱们看一段简单的代码,一个for循环,

for x in 1..10 {  

x  

}

下面是对应的playgrounds的截图

11、你如何运行REPL?

在终端运行以下命令,告诉它使用Xcode 6的命令行工具。

sudo xcode-select -s /Applications/Xcode6-Beta.app/Contents/Developer/
然后运行以下代码开始Swift REPL。

xcrun swift
如果准备退出,你可以键入:exit或者:quit。你也可以使用CTRL+D快捷键。

12、你能用Swift来调用自己的Objective-C代码或者第三方库吗?如果能,要怎么做呢?

可以!当你往Xcode项目里添加第一个.swift文件时,系统会提示你让Xcode创建一个桥接头文件(bridging header file)。你可以在这个头文件中导入你希望可见于Swift代码的Objective-C头文件。然后,所有的类无需导入都可为Swift所用,你可以使用和系统类相同的Swift语法来使用自定义Objective-C代码。  

13、数组能包不同的类型呢?

在Swift中,强烈建议使用只包含一种类型的强类型数组,比如:

var  goodArray: String[] = [ "foo" ,  "bar" ]

从技术上讲,你可以创建包含多个类型对象的数组。但最好问问自己为什么这么做。多类型数组:

var  brokenArray: AnyObject[] = [ "foo" , 1, 12.23,  true ]

14、字典(dictionary)和原来一样吗?字典也是强类型(strongly typed)的吗?

是的,不过你依然可以用AnyObject来解决。对于字典来说,它里边所有的值不是同一个类型也讲得通。以下是用字典表示的从服务器端返回的一个JSON响应:

来看一个服务器JSON响应的例子,用字典来表示:

var  employee : Dictionary<String, AnyObject> = [ "FirstName"  :  "Larry" , "LastName"  :  "Rodgers" ,  "Salary"  : 65_000.00]
这个字典有两个String类型的键和一个Double值类型的键。直接是字典也是可以的,不过你最好创建一级类模型对象来表示这些数据,而不是依赖字典。

15、Swift如何和Grand Central Dispatch一起使用?

同样的方法,你可以像在Objective-C中那样使用C API.在处理并发性时,你也可以使用苹果高级NSOperationQueue。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {
println( "test" )
});

16、Objective-C中的国际化宏命令呢?

类似Objective-C中的NSLocalizedString,

你可以在Swift中使用NSLocalizedString(key:tableName:bundle:value:comment:) 方法为国际化做准备

。tableName、bundle以及value arguments都有默认值,所以如果你正使用NSLocalizedString,你可以编写如下代码:

NSLocalizedString("Hello", comment: "standard greeting")  

17、swift我需要考虑循环引用吗?

当然需要考虑!当两个对象彼此之间是强引用时,仍能创建一个retain cycle。你可以使用Objective-C中一样的方法break这个retain  cycle。有三个关键字用于声明引用类型,详情如下,弱引用和无主引用将解决你的引用生命周期问题。

何时使用强引用、弱引用以及无主引用呢?

强引用:强引用会使得ARC保留实例直到不再需要它们。当移除所有强引用时,引用实例就会被释放。注意默认情况下强引用是隐式的, 所以你不必显式地声明它。

弱引用:你应该在独立生命周期的对象间使用弱引用。当为一个对象设置弱引用时,如果出于内存压力释放了对象,表示你不介意这一点。弱引用的值必须是一个变量,使用var定义 ,并且必须是使用?运算符的Optional类型。由于弱引用是可选的,所以你决不能以一个已经不存在的无效实例的引用来结束。当引用实例被释放时,ARC将会自动把引用设 置为nil。

无主引用:你应该为有相同生命周期的对象使用无主引用;比如当一个对象指向其自身,以及你希望避免一个retain cycle。无论何时只要引用有一个值就可以使用无主引用,但当你需要告诉ARC不要将它设置为nil时。无主引用的行为类似于Objective-C的unsafe_unretained。你要确保你不会在引用对象被释放后访问引用,这样会导致你的 app崩溃。无主引用不能是可选的,不能被设置为nil。无主引用也是隐式解析。

18、如何使用分号

分号在Swift中是可选的,不过出于易读性的目的,苹果建议你不要再使用分号了。但有时候仍会在Swift中使用分号,比如在循环语句中。

for var index = 0; index < 3; ++index { ... }

19、swift的接下来会怎样发展呢?

现在的swift只是第一个版本,苹果公司的目的非常明确,他们会迭代更新语言。所以你发现swift的bug,可以向苹果报告,或者要求增加一些新特性。

在该版本正式发布之前,仍有很大的提升空间。

时间: 2024-10-10 09:50:31

swift语言常见的问题和回答的相关文章

总结swift语言常见的20个问题和回答

1.如果我是个刚入门的iOS开发者,选swift学习呢,还是选objective-c学习,还是两个都学? 这个可以根据两种情况来决定:1.我想进入公司担任iOS开发的职位    2.我只想做个独立开发者,自己开发app发布. 第一种情况的话,你必须要学objective-c,现在市面上绝大部分的app都是用oc开发的,从oc到swift过渡是要很长一段时间的. 当然swift最好也同时要学会. 第二种情况:你不考虑兼容性(iOS7以下版本,后面会提到)的情况下,完全可以只学习swift.不过ob

Swift语言未来的发展

1. Swift 容易阅读 如你所能预计到的一门基于 C 构建的语言,Objective-C 身上所有的毒疣子都有.为了将关键词和类型同C的类型作区分,Objective-C 使用@符号引入了新的关键词.因为 Swift 不是基于C构建的,它同意了所有的关键词,并将 Objective-C 类型和对象相关的关键词前面大量的@符号移除了. Swift 丢弃了遗留下来的约定.因而你不再需要行尾的分号,以及 if/else 语句中围绕条件表达式的括弧.另外一个大变化就是方法的调用不再互相嵌套成中括号的

Swift语言指南(一)--语言基础之常量和变量

Swift 是开发 iOS 及 OS X 应用的一门新编程语言,然而,它的开发体验与 C 或 Objective-C 有很多相似之处. Swift 提供了 C 与 Objective-C 中的所有基础类型,包括表示整数的 Int,表示浮点数的 Double 与 Float,表示布尔值的 Bool,以及表示纯文本数据的 String. Swift 还为两个基本集合类型 Array 与 Dictionary 提供了强大的支持,详情可参考 (集合类型)Collection Types. 与 C 语言类

Swift语言Storyboard教程:第一部分

更新记录: 该Storyboard教程由Caroline Begbie更新iOS 8和Swift相关内容.原文作者为教程编纂组的成员Matthijs Hollemans. 2014/12/10更新: 更新至Xcode 6.1.1. Storyboard是最先在iOS 5引入的一项振奋人心的特性,大幅缩减构建App用户界面所需的时间. 要介绍Storyboard是什么,我打算从这张图讲起.下面是您将会在本教程中构建的Storyboard: 或许你现在并不清楚这个App是用来做什么的,但其中有哪些页

初探swift语言的学习笔记十(block)

作者:fengsh998 原文地址:http://blog.csdn.net/fengsh998/article/details/35783341 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号fengsh998来支持我,谢谢! 在前面一些学习中,原本把闭包给理解成了block尽管有很多相似之处,但block还是有他自己的独特之外.近日,在写oc/swift混合编码时,有时候需要swift回调oc,oc回调swift . 因此我把swift中的 block 常见的声明和写

Swift语言指南(九)--基本运算符

运算符(operator)是用来检查,改变或合并值的一种特殊符号或短语.例如,加号运算符让两个数字相加(如:let i = 1 + 2),还有些更复杂的运算符,如逻辑与运算符(&&)(如:if enteredDoorCode && passedRetinaScan)和自增运算符(++i)(将 i 的值加 1 的便捷写法). Swift 支持标准C语言的大多数运算符,并且改进了一些特性以规避常见的代码错误.赋值运算符(=)是没有返回值的,这样是为了避免在使用等于运算符(==)

寒城攻略:Listo 教你 25 天学会 Swift 语言 - 25 Listo&#39;s Conclusion

import Foundation //*********************************************************************************************** //1.Listo's Conclusion(Listo 的编写总结) //_______________________________________________________________________________________________

初探swift语言的学习笔记六(ARC-自动引用计数,内存管理)

Swift使用自动引用计数(ARC)来管理应用程序的内存使用.这表示内存管理已经是Swift的一部分,在大多数情况下,你并不需要考虑内存的管理.当实例并不再被需要时,ARC会自动释放这些实例所使用的内存. 另外需要注意的: 引用计数仅仅作用于类实例上.结构和枚举是值类型,而非引用类型,所以不能被引用存储和传递. swift的ARC工作过程 每当创建一个类的实例,ARC分配一个内存块来存储这个实例的信息,包含了类型信息和实例的属性值信息. 另外当实例不再被使用时,ARC会释放实例所占用的内存,这些

苹果新的编程语言 Swift 语言进阶(十四)--扩展

Swift语言的扩展是为一个已经存在的类.结构.枚举类型添加新功能的一种方式,包括为不能存取源代码的那些已经存在的类型添加功能.        扩展类似于Objective-C语言中的类别,与类别不同的是Swift语言的扩展没有名字.        扩展能够为已存在类型:     1)增加计算属性和计算静态属性:     2)定义新的实例方法和类型方法:     3)提... 请转移到此位置继续阅读,谢谢! 苹果新的编程语言 Swift 语言进阶(十四)--扩展 苹果新的编程语言 Swift 语