Swift'te Referans Sayımı - strong, weak, unowned
Bu yazıda, Apple’ın Swift’deki bellek yönetiminin nasıl olduğunu inceleyeceğiz. Çoğunlukla otomatik olarak ele alınsa bile, hala bazı önemli noktalar vardır. Nesneler arasındaki ilişkiyi tanımlamak için doğru referans tipini seçmek, hafıza sızıntılarını önlememize yardımcı olur.
Genellikle bu konu iş mülakatlarında soru olarak gelmektedir.
App Tracking Transparency (ATT) nedir?
App Tracking Transparency (ATT) - Uygulama İzleme Şeffaflığı
Apple, iOS 14.5 ile birlikte App Tracking Transparency (ATT) adlı yeni bir framework sundu. Bu yeni framework, kullanıcıların benzersiz tanımlayıcılarının reklam izleme için aktarılmasını sınırlamasına olanak tanıyan önceki LAT mekanizmasının (Reklam İzlemeyi Sınırla) yerini almıştır. LAT, ayarlarda global olarak belirlenirken, ATT her uygulama ve cihaza uygulanır. Kullanıcıdan konum veya push bildirim izni istemeye benzer şekilde çalışır.
Swift Deep Linking - URL Scheme
Deep Linking bu günlerde uygulamalarda çok önemli hale gelmektedir. Başka bir uygulamadan veya web sitesinden uygulamamıza deep link oluşturabiliriz. Kullanıcı telefonunda uygulamamız yüklü ise web'te tıkladığı linke deep link ekleyerek linke tıklama durumunda telefonda uygulamanın açılmasını sağlayabiliriz.
Xcode Code Snippets
Merhabalar, Xcode içerisinde kod yazmaya başladığımızda tanımlı kodların otomatik olarak tamamlanmasına olanak tanıyan kayıtlı kod parçacıklarını (code snippets) bu yazımda ele alıyoruz.
Xcode bizim için bir çok code snippets(kod parçacıkları) barındırmaktadır. Bu parçalara, kod ekranındayken sağ üstte bulunan küme parantezleri sembollü Library butonuna tıklayarak yada cmd + shift + L (Library) tuş kombinasyonu ile ulaşabilirsiniz.
iOS Localization(Yerelleştirme) Parametreler
Merhaba arkadaşlar, "iOS Localization(Yerelleştirme)" yazımdan sonra genel olarak "parametreli durumlarda yerelleştirme nasıl yapılıyor?" sorusunu aldım. Aşağıda küçük bir örnek ile bu soruyu cevaplıyorum.
Haydi başlayalım!
Swift Skop Belirteçleri - Access Control
Skop Belirteçleri
Swift’te
skop yani faaliyet alanı belirten dört adet anahtar sözcük bulunmaktadır. Bu
anahtar sözcükler encapsulation prensibinin
uygulanmasını sağlamaktadır. Bu prensip; “modellenmeye çalışılan sisteme ait
bazı kritik özellik veya işlevlerin, o sistemi kullanacak olan taraftan
bilinçli olarak gizlenmesi” biçiminde tanımlanır.
Resmi
dokümantasyon “erişim kontrolü” başlığı altında incelenen model, kaynak kod
dosyaları ve modüllere dayandırılmıştır. Modül; kod dağıtım birimi.
Mülakat Sorusu -1
Merhabalar, yeni bir seriye başlayarak iş görüşmelerinde sorulan mülakat sorularını sizlerle paylaşmak istiyorum. Bu sorular iş görüşmesinde sizlerin ne kadar hızlı ve pratik düşünce yapınız olduğunu öğrenmek amacıyla sorulmaktadır. Zaman genellikle kısa olmaktadır. Gelelim sorumuza;
Haftanın 7 günü var bizden istenen bir fonksiyon yazmamız ve bu fonksiyonda ilk parametre olarak gün ismi diğer parametre ise ilerlenecek gün sayısı. Yani fonksiyona Mon – 3 değerlerini gönderdiğimizde bize Thu cevabını döndürmesi gerekmekte.Bu problemin bir çok çözümü bulunmaktadır. Benim çözümümü aşağıda paylaştım;
Swift Yüksek Mertebeli Fonksiyonlar
Yüksek mertebeli fonksiyonlar, parametreleri fonksiyon olan fonksiyonlardır.
Map
Bir koleksiyon üzerinde döngü oluşturmak ve koleksiyondaki her öğeye aynı işlemi uygulamak için kullanılabilir.
NSNotification & NotificationCenter
Notification Center
Nesneler
arası iletişim için kullanılabilecek yöntemlerden biri NotificationCenter’dır.
Bu yapıda siz bir veriyi post ettiğiniz zaman register olmuş tüm nesnelerin bu
veriyi alması ve tetiklenmesi sağlanır.
AViewController.swift (Tetikleyen)
iOS Localization(Yerelleştirme)
Localization, uygulamanızın diğer dilleri desteklemesini sağlama sürecidir. Çoğu durumda, uygulamanızı önce İngilizce veya Türkçe kullanıcı arayüzü ile yaparsınız ve ardından uygulamayı Japonca gibi diğer dillere yerelleştirirsiniz. Lokalizasyon süreci can sıkıcıdır ve XCode'un güncellenmesi ile ilgili adımlar azar azar değişmektedir. Bu yazıda XCode 10.1 temel alınmıştır.
Yerelleştirme çalışmasına başlamadan önce, “Use Base Internationalization” onay işaretini seçtiğinizden emin olun.
Yerelleştirme çalışmasına başlamadan önce, “Use Base Internationalization” onay işaretini seçtiğinizden emin olun.
Xcode'da performans analizi oluşturma
Xcode 10 ile birlikte Build performansını analiz etmenin yeni yollarını sunuldu. Yeni Build Timing Özetini kullanarak Build performansınıza dair değerli bilgiler edinin.
Xcode özel dosya şablonlarını GIT ile kullanma
Xcode özel dosya şablonları, biraz daha hızlı gelişmek için harika bir yoldur ve dahil edilen tüm tekrarlanan çalışmalarla bir temel şablon tanımlamanızı sağlar. GIT ile birleştirmek, bu dosyaları ekibinizde paylaşmanızı ve onların da yararlanabilmelerini sağlar.
Xcode özel dosya şablonları için bir GIT deposu oluşturma
Xcode için kullanıcı tanımlı şablonlar ~ / Library / Developer / Xcode / Templates / File Template içinde bulunur. Eğer böyle bir klasör eksikse, bunu kendiniz oluşturabilir ve Xcode yeniden başlatıldığında ona bağlanabilir. Alt klasörler, şablonlarınız için özel bir başlık oluşturmak için kullanılabilir.GIT deponuz için bir alt klasör oluşturun ve bu yeni konumu özel şablonlarınız için kullanın.
Az Bilinen Xcode İpuçları
Xcode, macOS, iOS, watchOS ve tvOS için yazılım geliştirmek için ana IDE'dir. Hızlıca Aç (⇧ + ⌘ + O), yardımcı editör ve tests + U gibi kullanışlı kısayolları çok hızlı bir şekilde test etmek için çok iyi bilinen özellikler içeriyor. Stroyboard üzerinde (⇧ + ⌘ + L) kısayolu ile komponentlere ulaşabiliriz ve medya dosyalarına da (⇧ + ⌘ + M) kısayolu ile ulaşabilmekteyiz.
Aynı İsimlileri Düzenle (Edit All in Scope)
(⌃ + ⌘ + E) kısayolu ile imlecin üzerinde olduğu yazı ile aynı isimde olan tüm yazıların değiştirilmesi sağlanabilmektedir.
Xcode'da isteğe bağlı özelliklerin etkinleştirilmesi
WWDC 2018 sırasında Apple Xcode 10'u birçok yeni özellik ile duyurdu. Birçoğu sizin için otomatik olarak kullanılabilir ve varsayılan olarak etkinleştirilir, ancak bazılarının görünmeyebilir ve bazı manuel ayarlamalar gerekebilir.
Code Folding (Kod Katlama)
Birçok IDE'de bulunan bu özellik sayesinde kodların katlanmasını sağlıyoruz. Kullanımı için;
Xcode Kısayol Tuşları
Xcode Kısayollar
Arama
Cmd
+ F --> Dosyada bul
Cmd
+ Alt + F --> Dosyayı bul ve değiştir
Cmd
+ Shift + F --> Projede bul
Cmd
+ Shift + Alt + F --> Projede bul ve değiştir
Sekmeler
Cmd
+ T --> Yeni sekme
Cmd
+ } --> Önceki sekme
Cmd
+ { --> Sonraki sekme
Enumeration - 3
Enum’larda Fonksiyon ve Initializer Kullanımı
Swift’te enum’ların üye fonksiyonları olabileceği gibi parametrik olan veya olmayan initializer’ları da olabilir. Enum’lar içerisine initializer yazmanın gerekçesi; enum’a kendi sabitlerinden birisiyle ilk değer vermektir. Aşağıda “Bilimsel” isimli enum’a örnek olarak iki farklı init() yazılmıştır.enum Bilimsel : Float {
case g = 9.28
case e = 2.71
case pi = 3.14
init() {
self = .pi }
init (prm:Bilimsel) {
self = prm } }
Enumeration - 2
Enumeration Sıralama
enum Planet: Int {case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
//Planet diye bir enum tanımladık. İlk değer verildikten sonra değer sıralaması kendiliğinden yapılır.
let earthsOrder = Planet.Earth.toRaw()
// Earth isimli elemanın sırası 3'e eşit.
let possiblePlanet = Planet.fromRaw(7)
// 7. sıradaki eleman Planet.Uranus'e eşit.
Enumeration - 1
Enumeration
Enumaration aynı tipteki benzer yapıların gruplamasında kullanılan yapıdır.enum Yonler{
case dogu
case bati
case kuzey
case guney
}
enum Gezegenler{
case merkur, venus, dunya, mars, jupiter, saturn, uranus, neptun
}
var evinCephesi = Yonler.bati //uzun gösterim
evincephesi = .dogu //kısa gösterim
Paylaş (Share) Butonu
Paylaş (Share) Butonu
Uygulama içerisinde paylaşmak istediğimiz verileri başka uygulamalar aracılığıyla paylaşım yapmak için kodlarımız aşağıdadır;
Closures - Kapatmalar - 4
Bir
fonksiyon ya da metot () -> T türünden bir fonksiyon parametresine sahipse
onu hiç küme parantezleri olmadan çağırabiliriz. Bunun için parametre
değişkeninin @autoclosure özniteliği ile niteliklendirilmesi gerekir.












