<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>iOS &#8211; 天地一沙鸥</title>
	<atom:link href="https://haoluobo.com/tag/ios/feed/" rel="self" type="application/rss+xml" />
	<link>https://haoluobo.com</link>
	<description>to be continue....</description>
	<lastBuildDate>Thu, 16 Dec 2021 03:26:14 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>
	<item>
		<title>Swift</title>
		<link>https://haoluobo.com/2016/04/swift/</link>
					<comments>https://haoluobo.com/2016/04/swift/#comments</comments>
		
		<dc:creator><![CDATA[vicalloy]]></dc:creator>
		<pubDate>Tue, 19 Apr 2016 15:17:34 +0000</pubDate>
				<category><![CDATA[编程]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Swift]]></category>
		<guid isPermaLink="false">/?p=11271</guid>

					<description><![CDATA[最近在看Swift。已经很久没有这么“悠闲”的看一本书了，从头开始认真的看一本书的感觉还不错。Swift给我的 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>最近在看Swift。已经很久没有这么“悠闲”的看一本书了，从头开始认真的看一本书的感觉还不错。<br>Swift给我的感觉是一门挺“特别”的编程语言。Swift是一门动态语言却加入了很多静态语言的特性，从一定程度上说Swift比很多静态语言还更严谨。</p>



<ul class="wp-block-list"><li>在Swift里所有数据都是有类型。Swift有着强大的“类型推导”，因此很多地方是不需要指定数据类型的。也正是因为所有数据都有类型，相比大多脚本语言，编译器能检查出更多的问题，IDE的自动化程度也很高。</li><li>Swift和Objective-C采用ARC进行垃圾回收。以极低的性能损耗换取了接近全自动垃圾回收的便捷性。（注：官方宣称Swift比Objective-C要快很多）</li><li>Swift有这众多的动态特性以及语法糖，使用便捷且功能强大。</li></ul>



<h3 class="wp-block-heading">Swift中的<strong>?</strong>以及<strong>!</strong></h3>



<p>之前在其他语言中没有见过类似语法，初次接触时非常困惑。但一旦理解了之后就会发现这其实非常简单。<br>String?表示String或nil。首先要理解 String? 同 String 并不是同一个类型。 ?是一个封包的操作符号，将String封装成 ? 类型。（注：有点类似泛型，按照泛型的写法是 <code>?&lt;String&gt;</code> ）<br>!则是解包操作，将String?转换为String。如果被解包的数据是nil，则会解包失败抛出异常。</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
var s = &quot;abc&quot;  // s被自动推导为String类型
s = nil  // nil本身也是一个类型，类型不相等，将抛出错误。
var ss: String? = &quot;abc&quot;
let x = ss!  // ss 有值，可正常解包不报错。
ss = nil  // String?允许值为nil，不报错
let y = ss!  // 报错，无法对nil进行解包
</pre></div>


<h3 class="wp-block-heading">Swift中的Dictionary以及NSDictionary</h3>



<p>Swift中的Dictionary同NSDictionary可以通用（NSArray类似），但实际上它们并不是同一个东西。它们在混用的时候，编译器是需要对数据进行转换的。如果你代码中涉及大量的Dictionary/NSDictionary转换，很可能导致你的代码出现性能问题。（注：据说Swift中JSON处理速度慢就是该问题引起的）</p>
]]></content:encoded>
					
					<wfw:commentRss>https://haoluobo.com/2016/04/swift/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
