iOS
Swift 2.2’yi inceledik
Swift 2.2 geçenayyayınlandığından bu yana büyük ses getirdi. Swift 2.2 ile gelen yenilikler bizi şaşırttı ve bir o kadar da mutlu etti. Swift 2.2 ‘nin detaylarına giriş yapmadanönce belirtmek isteriz ki genel olarak Apple söz dizimi değişikliği ve Swift’in farklılaşması ad...
Swift 2.2 geçen ay yayınlandığından bu yana büyük ses getirdi. Swift 2.2 ile gelen yenilikler bizi şaşırttı ve bir o kadar da mutlu etti. Swift 2.2 ‘nin detaylarına giriş yapmadan önce belirtmek isteriz ki genel olarak Apple söz dizimi değişikliği ve Swift’in farklılaşması adına yenilikler sunmaktadır. Bu yazımızda örnek kodlarla sizlere bu yenilikler hakkında detaylı bilgiler vermeye çalışacağız. Sizlere tavsiyemiz örneklerle açıkladığımız kodları Xcode IDE’sinde denemenizdir, eğer Xcode nasıl kullanılır öğrenmek istiyorsanız buradaki Swift eğitimimize göz atabilir ve daha sonra blog yazımıza dönüp denemeler yapabilirsiniz.
++ ve -- operatörleri artık Swift’te kullanılmayacak
Resmi olarak Apple “++” ve” --” operatörlerini kaldırma kararı aldı. Kaldırma kararı alması sizi şimdilik korkutmasın şuan yapılan bütün projelerde bu operatörleri kullanmanız halinde sadece uyarı alacaksanız. Fakat bu uyarı Swift 3.0 güncellemesinde bu operatörlerin kaldırılacağı sinyalini vermektedir.
İpucu: ++ ve -- operatörlerin yerine += 1’i ve -= 1’i kullanabilirsiniz.
Neden bu operatörler kaldırıldı diye soranlar mutlaka olacaktır. C, C# ve Java gibi birçok dilde kullanılan bu opretörlerin kaldırılması için birkaç sebep var diyebiliriz.Bunlar;
1. ++ şeklinde yazmaktansa +=1 yazmak zaman kaybınızı önler.
2. Programcılığa yeni başlayanlara anlam kolaylığı sağlaması açısından ++ ‘ın tek başına bir anlamı yoktur fakat “+= “ şeklinde bir ifade, ekleme ve atamayı çağrıştır.
Bu değişiklikler gözümüze çarpan birkaç olumlu gelişmedir.
Geleneksel C-stili for döngüleri yakında kullanılmayacak
Yanlış okumadınız arkadaşlar yakında en yaygın for döngüsü Swift’te kullanılamaz hale gelecek.
Ör:
for var i = 1;i<=10; i+=1 {
print("\(i) tane mavi kutu")
}
Üstte belirttiğmiz türde bir döngü C-tipi döngü olarak bilinir. Swift bir C benzeri dil olmasına rağmen, bu yenilik ile bir seviye daha farklılaşmaya çalışmakta ve daha akıllıca bir alternatif sunmaktadır.
Geleneksel For döngüsü için çok alternatif oluşturulabilir.Bunlar;
Ör:
Bir önceki örnekteki mavi kutuları yazımızın tamamında kullanacağız.
for i in 1...10 {
print(“\(i) tane mavi kutu”)
}
Uyarı: Büyük sayıdan küçük sayıya azalan döngülerde “runtime” hatası alabilirsiniz, fakat bunun için Swift’te artık çok kolay bir alternatif var.
Ör:
for i in (1...10).reverse() {
print("\(i) tane mavi kutu")
}
Yukarıdaki örnekte 1 den 10 kadar olan rakamları tersten döngüye girmesini sağlayan bir reverse() metodu kullanılmış.
Başka bir alternatif ise;
Ör:
var dizi = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for sayilar in dizi {
print("\(sayilar) tane mavi kutu")
}
Teknik olarak en doğrusunu istiyorum diyorsanız,kısacası doğrunun en iyisini arıyorum diyorsanız.
Ör:
var dizi = Array(1...10)
for sayilar in dizi {
print("\(sayilar) tane mavi kutu")
}
Eski Swift(Swift 2.1 ve daha eski sürümler);
for (var i = 0; i < 10 ; i = i + 2) {
print("\(i) tane mavi kutu")
}
Yeni Swift(Swift 2.2);
for i in 0.stride(to: 10, by: 2) {
print("\(i) tane mavi kutu")
}
Artık diziler ve diğer bölme tipleri için removeFirst() metodu geliyor
Eski Swift versiyonlarında removeLast() metodu, diziler ile çalışan herkes için her zaman kolaylık sağlamıştır; fakat dizinin ilk elemanını kaldırmak için bir Swift’te hep eksiklik olmuştur. İşte tam bu noktada Swift 2.2 yardımınıza koşuyor. Önceki örneklerimizi takip ederek yeni bu konuda yeni bir örnek yapalım.
Ör:
var dizi = Array(1...10)
dizi.removeFirst()
for sayi in dizi {
print("\(sayi) mavi kutu")
}
Tupleları artık karşılaştırabilirsiniz
Tuple, virgül ile ayrılmış bir liste değerleridir.
Ör:
let bayansarkici = ("Avril ", "Lavigne")
let erkeksarkici = ("Michael", "Jackson")
Eski versiyonlarda aşağıdaki gibi biraz hantal bir kod yazmanız gerekiyordu, üstelik karşılaştırma yapılamıyodu.
func == (t1: (T, T), t2: (T, T)) -> Bool {
return t1.0 == t2.0 && t1.1 == t2.1
}
aşağıdaki kod ise Swift 2.2 ile bu durumu çözmeye yarayan bir güncelleme
Ör:
let bayansarkici = ("Avril", "Lavigne")
let erkeksarkici = ("Michael", "Jackson")
if bayansarkici == erkeksarkici {
print("Tuple’lar eşleşiyor!")
} else {
print("Tuple’lar eşleşmiyor!”)
}
Tuple splat söz dizimi de vadesini doldurdu
2010 yılından beri Swift'i farklılaştıran özelliklerden birisi olan tuple splat’e de artık veda ediyoruz. Birçok programcı tarafından nadiren kullanılan “tuple splat” sözdizimi şu şekilde idi;
Ör:
Bu örneği denediğinizde iki argümanın artık tek Tuple olarak kullanılamayacağı uyarısı ile karşılaşabilirsiniz.
func kisitanimla(isim: String, yas: Int) {
print("\(isim) is \(yas) yaşında")
}
let kisi = ("Taylor Swift", yas: 26)
kisitanimla(kisi)
Birçok anahtar kelime artık argüman etiketi gibi kullanılabilir
Bu yeniliğin birçok programcıyı sevindireceği hiç şüphesiz.
Argüman etiketleri Swift’in ana özelliklerinden birisidir.
Ör:
func printselam(isim: String, tekrar tekrarsayisi: Int) {
for _ in 0 ..< tekrarsayisi {
print(isim)
}
}
printselam("Taylor", tekrar: 5)
var parametresi artık kullanılamayacak
Bir diğer değişim ise fonksiyon parametresi olarak yazılan “var “
Bu değişim size zaman kazandıracak ve farklı kafa karışıklıklarını ortadan kaldıracak bunu bir örnekle daha net izah etmek gerekirse;
Eski Swift(Swift 2.1 ve daha eski sürümler);
Ör:
func printselam(var isim: String, tekrar tekrarsayisi: Int) {
isim = isim.uppercaseString
for _ in 0 ..< tekrarsayisi {
print(isim)
}
}
printselam("Taylor", tekrar: 5)
Yeni Swift(Swift 2.2);
Ör:
func printselam(isim: String, tekrar tekrarsayisi: Int) {
let buyukharf = isim.uppercaseString
for _ in 0 ..< tekrarsayisi {
print(buyukharf)
}
}
printselam("Taylor", tekrar: 5)
Üstteki iki kod bloğu arasındaki fark üstte “var isim “olan parametre artık sadece “isim” oldu.
Yani fonksiyon parametresi olarak kullanılan var size ,bu parametreyi fonksiyonun içinde değiştirme imkanı sunuyordu oysaki “inout “ gibi çalışmıyordu “inout” bu fonksiyon bittiğinde dahi değişen değerlerinizi kalıcı yaparak size avantaj sağlar.Bu nedenle bu değişim geliştiricilere büyük bir avantaj sağlayacaktır.
Debug tanımlamalarının isimlerindeki değişiklikler
Derleyici tarafından otomatik olarak dosya numarası,satır numarası ve fonksiyon adları debug modunda Xcode tarafından size gösterilmektedir
Swift 2.1 ve eski versiyionlardaki _FILE_, _LINE_, _COLUMN_, ve _FUNCTION_
gibi tanımlar artık yerine aşağıdaki tanımlara bırakıyor.
#file, #line, #column ve #function
String Selector ‘ler artık doğru ismi ile yazılmalı
Müthiş bir yenilik!.. Örnekle açıklayacak olursak;
navigasyon.sagbuton = UIBarButtonItem(title: "bas!!", style: .Plain, target: self, action: "buttonabassildi")
Farkettiyseniz action için olan metod adımı buttonabassıldı yaptık, fakat doğrusu butonabasıldı olması gerekiyor Swift 2.2 ile artık string selector’leri rastgele yazmamız önlendi,daha doğrusu hata yaptığımız an uyarı alacağız ve doğru şekilde yazabileceğiz.
Ör:
navigasyon.sagbuton = UIBarButtonItem(title: "bas!!", style: .Plain, target: self, action: #selector(ViewController.butonabasildi))
Derleyici eski yeni kodları algılayıp size uyarı verecek
Xcode’un bu özellikliği belki birçoğumuza gereksiz gelebilir fakat kütüphane yazan her programcı için çok faydalı bir eksik giderilmiş. Kodlarınızı derledikten sonra Xcode size konsol ekranından uyarıda bulursa şaşırmayın deriz
Kütüphane oluştururken özellikle bu şekilde yazmanızı tavsiye ediyoruz.
#if swift(>=2.2)
print(" Swift 2.2 veya daha yüksek bir versiyon kullanıyorsunuz")
#else
print(" Swift 2.1 veya daha eski bir versiyon kullanıyorsunuz")
#endif
Bir yazımızın daha sonuna geldik. Swift son hızla kendini geliştirmeye ve geliştiriciler için kendisini olabildiğince basitleştirmeye çalışıyor. Geleceği Yazanlar ekibi olarak gelişmeleri sizlerle buradan paylaşmaya devam edecek ve elimizden geldiğince gelişmeleri kolay ve anlaşılır hale getireceğiz. Kafanızda soru işareti kalmaması adına bu yazımızın altına veya soru-cevap bölümümüze bu konuda veya başka konularda aklınıza takılan herhangi bir sorunuz var ise sorabilirsiniz.
Herkese faydalı olması dileğiyle!
20.04.2016
Yorumlar
Umarım her güncellemede bizi böyle bir makale karşılar.
Daha fazla swift içeriği için sabırsızlanıyoruz :)
elinize sağlık.
C stili döngülerin 3. örneğinde reverse() metodu eksik kalmış.
Uyarın için teşekkürler,belli aralıklarla artan for döngüsünün daha iyi anlaşılması için, ekstra örnek eklendi.
Sanırım bir yanlışlık var.
"2010 yılından beri Swift'i farklılaştıran özelliklerden birisi olan tuple splat’e de artık veda ediyoruz. Birçok programcı tarafından nadiren kullanılan “tuple splat” sözdizimi şu şekilde idi;"
Swift 2014 de duyuruldu.
__________________
"Farkettiyseniz action için olan metod adımı buttonabassıldı yaptık, fakat doğrusu butonabasıldı olması gerekiyor Swift 2.2 ile artık string selector’leri rastgele yazmamız önlendi,daha doğrusu hata yaptığımız an uyarı alacağız ve doğru şekilde yazabileceğiz."
Dediğiniz yerde #selector olarak düzeltmeniz gerek.
Bu yazıları gitbook gibi bir yere taşımayı düşünür mü geleceği yazanlar. Bu sayede herkes katkı sağlayabilir.
Selam güzel yazı olmus.
Yukarda paylasılan, asagıdaki örnekte i > 10 yerine i < 10 yazılacaktı sanırım. Düzeltilmesinde fayda var.
- Eski Swift(Swift 2.1 ve daha eski sürümler);
- for (var i = 0; i > 10 ; i = i + 2) {
- print("\(i) tane mavi kutu")
- }
- Yeni Swift(Swift 2.2);
- for i in 0.stride(to: 10, by: 2) {
- print("\(i) tane mavi kutu")
- }
Merhaba Bize bu konuda yorum yaptığın için teşekkürler 1.Tuple splat ile ilgili bir hata söz konusu değildir. Tuple splat 2010 'dan beri kullanılmaktadır. 2.Bu konuda çok soru işareti var ama biz en doğru halini yazıp yeniden düzenleme yaptık.
Baba Paul Hudson 'un videosu derlenmiş :)
https://www.youtube.com/watch?v=Swgf39f_Q5E