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是什么?
参考11条,你就知道怎么创建和运行playground了。
7、如何学习Swift?
苹果官方的教程 Swift Programming book
官方教程的中文翻译:http://numbbbbb.gitbooks.io/-the-swift-programming-language-/
这是我见过翻译最快的教程!翻译的又快又好。
8、有没有在Swift语言可以实现,但Objective-C下却不能实现的事情?或者反过来说。
想了解更多细节,请阅读官方文档:Using Swift with Cocoa and Objective-C Guide
也可以看这里有:中文版
9、有没有Swift不能用的API?
在写这篇文章时,我还没发现有。
10、Playground中,println()结果在哪里?
如果你打开了playground,还是看不见结果,那就执行那么的操作:
打开Assistant Editor才能看到控制台输出。步骤:View > Assistant Editor > Show Assistant Editor,
或者使用快捷键: Option + Command + Return.
11、怎样在打开Playgrounds和看到那些很酷的值的图形?
两种方式打开Playgrounds:新建Playgrounds项目或在已有的项目里新建文件,选择playgrounds文件。
咱们看一段简单的代码,一个for循环,
- forxin1..10{
- x
- }
12、你如何运行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。