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

Swift Deep Linking


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.




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;

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)
        }
    }
 
 

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


.dSYM Dosyası

Where ".dSYM" file is located in crash reports

1. Xcode içinde proje açıkken, Window -> Organizer seçilir ve arşiv ekranı açılır.

User Defaults (Verileri Kullanıcı Varsayılanlarıyla Kalıcı olarak Depolama)

UserDefault (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


Swift, C ve Objective-C yazılım dilleri tabanlı oluşturulmuş bir yazılım dilidir. Uygulama geliştiriciler, uygulama geliştirirken Cocoa ve Cocoa Touch uygulama katmanlarından faydalanırlar.