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.
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.
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.
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;
JSON Parse
Önceki yazımda decodable ve encodable'dan bahsetmiştim. Şimdi codable ile JSON parse işlemini yapacağız.
Decodable & Encodable
Encoding ve Decoding
JSON gibi yapıların verileri encoding ve decoding hale getirilebilir.Swift standart kütüphanesi, veri kodlama ve kod çözme için standartlaştırılmış bir yaklaşım tanımlamaktadır. Bunlar, özel türlerde Encodable ve Decodable protokolleri uygulanarak sağlanabilir. Bu şekilde JSON verileri okuyabiliriz ya da kendi verilerimizi JSON formatına çevirebiliriz. Hem kodlamayı hemde kod çözmeyi sağlayan yapımız da Codable olmaktadır.
Activity Indicator
// Created by Atakan Cengiz KURT
import Foundation
import UIKit
open class ActivityIndicator {
var timer = Timer()
var second = 10
var container = UIView()
@objc func updateTimer(){
second -= 1
if second == 0 {
timer.invalidate()
customActivityIndicatory(container, startAnimate: false)
}
}
import Foundation
import UIKit
open class ActivityIndicator {
var timer = Timer()
var second = 10
var container = UIView()
@objc func updateTimer(){
second -= 1
if second == 0 {
timer.invalidate()
customActivityIndicatory(container, startAnimate: false)
}
}
String verilerde boşlukların kaldırılması
Tüm boşlukların silinmesi için;
import UIKit
extension String {
func removingWhitespaces() -> String {
return components(separatedBy: .whitespaces).joined()
}
}
var str = " TR54 5454 5001 0001 0012 5002 03 "
str = str.removingWhitespaces()
print(str) // TR545454500100010012500203
User Defaults (Verileri Kullanıcı Varsayılanlarıyla Kalıcı olarak Depolama)
String array
Save array
let array = ["horse", "cow", "camel", "sheep", "goat"]
let defaults = UserDefaults.standard
defaults.set(array, forKey: "SavedStringArray")
Collection Type
Swift içerisinde Array, Set ve Dictionary olmak üzere 3 temel collection type mevcuttur. Array içerisinde tekrarlı veri saklayabilen düzenli bir yapıdır. Set ise farklı olarak hem düzensizdir hemde varolan bir nesne tekrar eklenemez. Dictionary ise key-value ilişkisi şeklinde veri saklayabilen bir yapıdır. Yapısal olarak Objective-C’deki NSArray, NSSet ve NSDictionary ile aynı yapıdadır.
Swift Hakkında
