<?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>Sur Les Pas d&#039;Apple &#187; développeurs</title>
	<atom:link href="https://blog.developpez.com/pasdapple/pcategory/developpeurs/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/pasdapple</link>
	<description></description>
	<lastBuildDate>Fri, 18 Jul 2014 07:45:08 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Mise à jour de Swift annoncée sur le blog de l&#8217;équipe de développement</title>
		<link>https://blog.developpez.com/pasdapple/p12674/apple/mise-a-jour-de-swift-annoncee-sur-le-blog-de-lequipe-de-developpement</link>
		<comments>https://blog.developpez.com/pasdapple/p12674/apple/mise-a-jour-de-swift-annoncee-sur-le-blog-de-lequipe-de-developpement#comments</comments>
		<pubDate>Thu, 17 Jul 2014 21:45:33 +0000</pubDate>
		<dc:creator><![CDATA[bredelet]]></dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[développeurs]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/pasdapple/?p=41</guid>
		<description><![CDATA[Dans une première mise à jour du langage, les dictionnaires héritent d&#8217;une nouvelle syntaxe: Dictionary&#60;TypeClef, TypeElement&#62; devient &#160;&#91;TypeClef: TypeElement&#93; tandis que les chaînes suivent leur exemple, ce qui veut dire que: Array&#60;Int&#62; devient &#160;&#91;Int&#93; De leur côté, la syntaxe des &#8230; <a href="https://blog.developpez.com/pasdapple/p12674/apple/mise-a-jour-de-swift-annoncee-sur-le-blog-de-lequipe-de-developpement">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Dans une première mise à jour du langage, les <em>dictionnaires</em> héritent d&rsquo;une nouvelle syntaxe: <code class="codecolorer text default"><span class="text">Dictionary</span></code>&lt;<code class="codecolorer text default"><span class="text">TypeClef, TypeElement</span></code>&gt; devient</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #009900;">&#91;</span>TypeClef<span style="color: #339933;">:</span> TypeElement<span style="color: #009900;">&#93;</span></div></div>
<p>tandis que les <em>chaînes</em> suivent leur exemple, ce qui veut dire que: <code class="codecolorer text default"><span class="text">Array</span></code>&lt;<code class="codecolorer text default"><span class="text">Int</span></code>&gt; devient</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #009900;">&#91;</span>Int<span style="color: #009900;">&#93;</span></div></div>
<p>De leur côté, la syntaxe des intervalles s&rsquo;est clarifiée. Tandis qu&rsquo;avant il fallait distinguer <code class="codecolorer text default"><span class="text">..</span></code> et <code class="codecolorer text default"><span class="text">...</span></code> (de plus la convention était inversée par rapport à Ruby!) à partir de maintenant le troisième point est remplacé par <strong>&lt;</strong> si la borne supérieure n&rsquo;est pas inclue dans l&rsquo;intervalle.</p>
<div class="codecolorer-container ruby default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color:#006666;">1</span>...<span style="color:#006666;">10</span><br />
&nbsp;<span style="color:#006666;">1</span>..<span style="color:#006600; font-weight:bold;">&lt;</span><span style="color:#006666;">10</span></div></div>
<p>Aux absents il faut compter les indicateurs de visibilité <code class="codecolorer text default"><span class="text">private</span></code>, <code class="codecolorer text default"><span class="text">public</span></code> et cætera ainsi que le traitement d&#039;exceptions.</p>
<p>Il y a d&#039;autres améliorations, en particulier par rapport à la valeur <code class="codecolorer text default"><span class="text">nil</span></code>, et la correction de crashes dans le <em>Playground</em> et d&rsquo;autres composants de XCode.</p>
<p>Lien vers le blog des développeurs: <a href="https://developer.apple.com/swift/blog/" title="Swift Blog - Apple Developer" target="_blank">Swift Blog &#8211; Apple Developer</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Swift, le langage d&#8217;Apple</title>
		<link>https://blog.developpez.com/pasdapple/p12661/apple/swift-le-langage-dapple</link>
		<comments>https://blog.developpez.com/pasdapple/p12661/apple/swift-le-langage-dapple#comments</comments>
		<pubDate>Tue, 01 Jul 2014 20:32:06 +0000</pubDate>
		<dc:creator><![CDATA[bredelet]]></dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[développeurs]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/pasdapple/?p=18</guid>
		<description><![CDATA[À la dernière conférence des développeurs Apple (WWDC), celui-ci a introduit son nouveau langage de programmation Swift. Reposant sur les bases de Objective-C, son prédecesseur, et la bibliothèque d&#8217;objets Cocoa, Swift est un langage de programmation moderne et efficace. S&#8217;il &#8230; <a href="https://blog.developpez.com/pasdapple/p12661/apple/swift-le-langage-dapple">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>À la dernière conférence des développeurs Apple (WWDC), celui-ci a introduit son nouveau langage de programmation <em>Swift</em>.</p>
<p>Reposant sur les bases de <em>Objective-C</em>, son prédecesseur, et la bibliothèque d&rsquo;objets <em>Cocoa</em>, Swift est un langage de programmation moderne et efficace.</p>
<p>S&rsquo;il s&rsquo;efforce d&rsquo;offrir une syntaxe familière au développeur habitué à la famille de langages <em>C</em> (C++, C#, Java&#8230;) Swift n&rsquo;hésite pas à s&rsquo;en démarquer si cela aide à écrire un code plus concis ou plus sûr. Ainsi, on peut citer les parenthèses qui sont optionnelles autour d&rsquo;une condition du <code class="codecolorer text default"><span class="text">if</span></code> ou d&rsquo;un indice de boucle <code class="codecolorer text default"><span class="text">for</span></code>, et la révision de la syntaxe du <code class="codecolorer text default"><span class="text">switch</span></code> pour éviter des erreurs de programmation courantes:</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #666666; font-style: italic;">// Emploi du temps de bredelet</span><br />
<span style="color: #b1b100;">switch</span> heure <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">9</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">10</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">11</span><span style="color: #339933;">:</span><br />
&nbsp; &nbsp; &nbsp; activité <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;Grasse mat'&quot;</span><br />
&nbsp; &nbsp;<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">12</span><span style="color: #339933;">:</span><br />
&nbsp; &nbsp; &nbsp; activité <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;Casse-croûte&quot;</span><br />
&nbsp; &nbsp;<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">13</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">14</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">15</span><span style="color: #339933;">:</span><br />
&nbsp; &nbsp; &nbsp; activité <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;Sieste&quot;</span><br />
&nbsp; &nbsp;<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">16</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">17</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">18</span><span style="color: #339933;">:</span><br />
&nbsp; &nbsp; &nbsp; activité <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;Travail&quot;</span><br />
&nbsp; &nbsp;<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">19</span><span style="color: #339933;">:</span><br />
&nbsp; &nbsp; &nbsp; activité <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;Dîner&quot;</span><br />
&nbsp; &nbsp;<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">20</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">21</span><span style="color: #339933;">:</span><br />
&nbsp; &nbsp; &nbsp; activité <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;Repos&quot;</span><br />
&nbsp; &nbsp;<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">22</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">23</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">5</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">6</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">7</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">8</span><span style="color: #339933;">:</span><br />
&nbsp; &nbsp; &nbsp; activité <span style="color: #339933;">=</span> <span style="color: #ff0000;">&quot;Dodo&quot;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>Comme l&rsquo;illustre ce code, il est possible de spécifier plus d&rsquo;une valeur pour chaque <code class="codecolorer text default"><span class="text">case</span></code>. Du coup, il n&rsquo;est pas nécessaire d&rsquo;écrire <code class="codecolorer text default"><span class="text">break</span></code> à la fin de chaque branche: si l&rsquo;on veut vraiment continuer à exécuter la branche suivante il faut écrire <code class="codecolorer text default"><span class="text">fallthrough</span></code>. Le comportement par défaut est plus clair et plus sûr que C.</p>
<p>Une autre différence qui saute aux yeux dans cet exemple est l&rsquo;absence de point-virgule. Le point-virgule est optionnel en Swift.</p>
<p>Pour insérer une valeur dans une chaîne de caractères il suffit de l&rsquo;entourer d&rsquo;une paire de parenthèses avec un caractère d&rsquo;échappement:</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff0000;">&quot;Mr \(auteur) est un vrai lève-tard. &quot;</span> <span style="color: #339933;">+</span><br />
<span style="color: #ff0000;">&quot;À ce moment c'est \(activité).&quot;</span></div></div>
<p>Les variables et les chaînes de caractères sont en Unicode.</p>
<p>Pour simplifier la tâche du développeur, il n&rsquo;est pas nécessaire d&rsquo;indiquer le type d&rsquo;une variable s&rsquo;il est le même que celui de sa valeur d&rsquo;initialisation:</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">var x <span style="color: #339933;">=</span> <span style="color: #0000dd;">21</span></div></div>
<p>Si la variable n&rsquo;est jamais réassigné une autre valeur, il faut utiliser <code class="codecolorer text default"><span class="text">let</span></code> au lieu de <code class="codecolorer text default"><span class="text">var</span></code>:</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">let y <span style="color: #339933;">=</span> <span style="color: #0000dd;">2</span> <span style="color: #339933;">*</span> x</div></div>
<p>À lire de façon mathématique: &laquo;&nbsp;<em>soit </em>y<em> égal à deux </em>x&nbsp;&raquo;.</p>
<p>Swift favorise les valeurs constantes, ce qui est une bonne idée au niveau performance et au niveau sûreté. Par défaut les méthodes déclarées dans un type <code class="codecolorer text default"><span class="text">struct</span></code> ou <code class="codecolorer text default"><span class="text">enum</span></code> ne permettent pas de modifier la structure. De même, les paramètres des fonctions sont constants par défaut.</p>
<p>Les paramètres nommés sont un héritage d&rsquo;Objective-C, et s&rsquo;apparentent dans leur utilisation à ce dernier. C&rsquo;est-à-dire qu&rsquo;un appel de fonction doit respecter l&rsquo;ordre et le nommage des paramètres dans la déclaration de la fonction.</p>
<p>Par défaut, tous les paramètres d&rsquo;un initialiseur (constructeur) sont nommés ce qui permet d&rsquo;écrire plusieurs initialiseurs avec les mêmes types de paramètres:</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #993333;">struct</span> Complexe <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp;var réel<span style="color: #339933;">:</span> Double<span style="color: #339933;">,</span> imag<span style="color: #339933;">:</span> Double<br />
&nbsp; &nbsp;init<span style="color: #009900;">&#40;</span>réel<span style="color: #339933;">:</span> Double<span style="color: #339933;">,</span> imag<span style="color: #339933;">:</span> Double<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; self.<span style="color: #202020;">r</span>éel <span style="color: #339933;">=</span> réel<br />
&nbsp; &nbsp; &nbsp; self.<span style="color: #202020;">imag</span> <span style="color: #339933;">=</span> imag<br />
&nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp;init<span style="color: #009900;">&#40;</span>r<span style="color: #339933;">:</span> Double<span style="color: #339933;">,</span> angle<span style="color: #339933;">:</span> Double<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; self.<span style="color: #202020;">r</span>éel <span style="color: #339933;">=</span> r <span style="color: #339933;">*</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/cos.html"><span style="color: #000066;">cos</span></a><span style="color: #009900;">&#40;</span>angle<span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; self.<span style="color: #202020;">imag</span> <span style="color: #339933;">=</span> r <span style="color: #339933;">*</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/sin.html"><span style="color: #000066;">sin</span></a><span style="color: #009900;">&#40;</span>angle<span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp;<span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<p>Lors de l&rsquo;appel il est clair quel initialiseur invoquer:</p>
<div class="codecolorer-container c default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="c codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">let c <span style="color: #339933;">=</span> Complexe<span style="color: #009900;">&#40;</span>r<span style="color: #339933;">:</span> <span style="color:#800080;">4.0</span><span style="color: #339933;">,</span> angle<span style="color: #339933;">:</span> pi <span style="color: #339933;">/</span> <span style="color:#800080;">5.0</span><span style="color: #009900;">&#41;</span></div></div>
<p>De même, les paramètres des méthodes d&rsquo;un objet sont nommés à partir du second paramètre par défaut.</p>
<p>Une nouveauté dans Swift par rapport à son prédécesseur est le support des types génériques, là où Objective-C se contentait de faire appel au polymorphisme sur la classe <code class="codecolorer text default"><span class="text">NSObject</span></code>. Au contraire d&rsquo;Objective-C, la valeur <code class="codecolorer text default"><span class="text">nil</span></code> n&rsquo;est pas valide pour n&rsquo;importe quel objet.</p>
<p>Au final, le langage Swift pourrait amener une nouvelle génération de développeurs à la plate-forme Mac et iOS. Pour ces nouveaux venus, la nouveauté la plus déroutante à laquelle ils seront confrontés est assurément le compteur de références automatique (<em>ARC</em> en anglais).</p>
<p>Hérité d&rsquo;Objective-C, ce système permet de ne pas encombrer le programmeur avec l&rsquo;utilisation judicieuse de directives de gestion de la mémoire. Par rapport à un ramasse-miette (<em>garbage collector</em>) ARC a l&rsquo;avantage de permettre d&rsquo;invoquer une fonction de &laquo;&nbsp;dé-initialisation&nbsp;&raquo; (destructeur) pour chaque objet de façon prévisible et immédiate.</p>
<p>Il a le désavantage de ne pas gérer les références en boucle. Cet inconvénient impose une discipline particulière pour référencer d&rsquo;autres objets qui n&rsquo;est pas évidente au premier abord.</p>
<p>Si Apple trouve moyen d&rsquo;épargner cette difficulté aux néophytes, Swift pourrait trouver du succès même au-delà des produits de la marque.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
