Tüm Yazılar
KategoriAI
Okuma Süresi
22 dk okuma
Yayın Tarihi
...
Kelime Sayısı
2.667kelime

Kahveni hazırla - bu içerikli bir makale!

GPT-4o ile sesli sohbet, görsel analiz, real-time çeviri ve Advanced Voice Mode. Geliştiriciler için API entegrasyonu ve omnimodal uygulama geliştirme.

GPT-4o: Omnimodal AI Deneyimi

# GPT-4o: Omnimodal AI Deneyimi

Yapay zeka modellerinin buyuk cogunlugu tek bir modalitede calisir: ya metin, ya gorsel, ya da ses. GPT-4o ise bu sinirlari yikiyor — metin, ses, gorsel ve videoyu tek bir model icinde birlestiren ilk gercek omnimodal AI. "O" harfi "omni" anlamina geliyor ve bu isim tesadufi degil. GPT-4o ile bir gorseli analiz ederken ayni anda sesli sohbet edebilir, real-time ceviri yapabilir ve kod yazabilirsin. 320 milisaniyelik yanit suresiyle dogal konusma ritmine yaklasan Advanced Voice Mode, gorsel analiz ve OCR yetenekleri, Realtime API uzerinden WebSocket entegrasyonu, iOS ve Flutter icin mobil SDK ornekleri ve maliyet optimizasyonu stratejileri — tum bunlari pratik kod ornekleriyle birlikte kesfedeceksin.

💡 Pro Tip: GPT-4o, GPT-4 Turbo'ya gore 2x daha hizli, %50 daha ucuz ve cok daha iyi Turkce destegi sunuyor. Eger hala GPT-4 kullaniyorsan, gecis yapmanin tam zamani.

Icindekiler


1. GPT-4o Nedir? Omnimodal Ne Demek?

GPT-4o (omni), OpenAI'in Mayis 2024'te duyurdugu ve 2025-2026 boyunca surekli gelistirdigi tek catili cok-modaliteli bir AI modelidir. Onceki GPT-4V (vision) ve Whisper gibi modeller ayri moduller olarak calisirken, GPT-4o tum modaliteleri tek bir sinir agi icinde birlestiriyor.

Neden Bu Onemli?

Eski Yaklasim
GPT-4o Yaklasimi
Ses → Whisper → Metin → GPT-4 → Metin → TTS → Ses
Ses → GPT-4o → Ses
3 ayri model, 3 ayri latency
1 model, 1 latency
Duygusal tonlama kaybi
Duygusal tonlama korunur
~3-5 saniye yanit suresi
~320ms yanit suresi
Modaliteler arasi bagLam kopuklugu
Tam bagLam butunlugu

Eski pipeline'da ses once metne cevrilir, GPT-4 metni isler, sonuc tekrar sese donusturulur. Bu surecte duygusal ton, vurgu ve bagLam bilgisi kaybolur. GPT-4o ise sesi dogrudan anlar ve dogrudan sesle yanit verir — aradaki "ceviri" katmani yok.

💡 Pro Tip: GPT-4o'nun gercek gucu modaliteler arasi cikarsim yapabilmesi. Bir gorseldeki duyguyu anlayip sesli yanitinda uygun tonlama kullanabilir. Bu, onceki hicbir modelde mumkun degildi.

2. Teknik Mimari: Unified Model

GPT-4o'nun mimarisi hakkinda OpenAI detayli teknik makale yayinlamadi, ancak arastirma toplulugunun analizleri ve OpenAI'in aciklamalari su mimariyi isaret ediyor:

Encoder-Decoder Fuzyonu

swift
1Text Input ──┐
2 ├──→ Unified Transformer ──→ Text Output
3Image Input ──┤ (Shared Attention) Audio Output
4 ├──→ Layers Image Output
5Audio Input ──┘

Her modalite kendi tokenizer/encoder'i ile islenir:

  • Metin: BPE tokenizer (GPT-4 tarzı)
  • Gorsel: Vision Transformer (ViT) patch embedding
  • Ses: Mel-spectrogram + audio encoder

Bu encoder'larin ciktilari ortaklik bir embedding uzayinda birlestirilir ve unified transformer katmanlarindan gecirilir.

Cross-Modal Attention

GPT-4o'nun en kritik yeniligi cross-modal attention mekanizmasidir. Bu mekanizma sayesinde model, bir gorseldeki bilgiyi sesli yanitinda kullanabilir veya sesli bir komuttaki niyeti gorsel cikti icin yorumlayabilir.

python
1# Cross-modal attention pseudocode
2class CrossModalAttention(nn.Module):
3 def __init__(self, dim=1024, num_heads=16):
4 super().__init__()
5 self.text_attn = nn.MultiheadAttention(dim, num_heads)
6 self.vision_attn = nn.MultiheadAttention(dim, num_heads)
7 self.audio_attn = nn.MultiheadAttention(dim, num_heads)
8 self.cross_attn = nn.MultiheadAttention(dim, num_heads)
9 
10 def forward(self, text_emb, vision_emb, audio_emb):
11 # Her modalite kendi self-attention'i
12 text_out = self.text_attn(text_emb, text_emb, text_emb)[0]
13 vis_out = self.vision_attn(vision_emb, vision_emb, vision_emb)[0]
14 audio_out = self.audio_attn(audio_emb, audio_emb, audio_emb)[0]
15 
16 # Modaliteler arasi cross-attention
17 # Metin, gorselden bilgi aliyor
18 fused = torch.cat([text_out, vis_out, audio_out], dim=1)
19 cross_out = self.cross_attn(fused, fused, fused)[0]
20 
21 return cross_out

Parametre ve Benchmark

Metrik
GPT-4 Turbo
GPT-4o
GPT-4o-mini
Parametre (tahmini)
~1.8T
~200B (verimli)
~8B
MMLU
86.4%
88.7%
82.0%
HumanEval
86.6%
90.2%
87.0%
Vision (MMMU)
56.8%
69.1%
59.4%
Audio (Multilingual ASR)
-
WER 2.1%
WER 3.8%
Yanit suresi (metin)
~3s
~1.5s
~0.8s
Yanit suresi (ses)
~5s
~320ms
~500ms
Fiyat (1M input token)
$10
$2.50
$0.15

Bu tablo GPT-4o'nun neden devrim niteliginde oldugunu gosteriyor: daha kucuk, daha hizli, daha ucuz ama neredeyse ayni kalite.


3. Advanced Voice Mode

GPT-4o'nun en etkileyici ozelligi Advanced Voice Mode (AVM). Bu mod, gercek zamanli sesli konusma yapmanı sagliyor — ve bu basit bir speech-to-text + text-to-speech degil.

AVM Yetenekleri

  • Duygusal tonlama: Mutlu, uzgun, heyecanli, sakin gibi duygulari algilar ve yanit verir
  • Coklu ses karakteri: 9 farkli ses secenegi (Amber, Breeze, Cove, Ember, Juniper, Maple, Sol, Spruce, Vale)
  • Sarkı soyleme: Melodi ve ritim anlayisi var (sinirli)
  • Kesinti yonetimi: Konusurken araya girebilirsin, model dogal sekilde durur
  • Coklu dil: 50+ dilde dogal konusma, aksansiz gecis
  • Anlık ceviri: Canli tercumanlik yapabilme

Teknik Detaylar

swift
1Kullanici sesi → Ses encoder → Unified model → Ses decoder → Yanit sesi
2 
3Latency breakdown:
4- Ses encoding: ~50ms
5- Model inference: ~200ms
6- Ses decoding: ~70ms
7- TOPLAM: ~320ms (insan algilama esigi ~400ms)

320ms yanit suresi, dogal bir konusma ritmine cok yakin. Telefonla konusurken hissettigin gecikme genellikle 150-300ms arasi — GPT-4o buna neredeyse esit.

💡 Pro Tip: AVM'de en iyi deneyim icin kaliteli bir mikrofon kullan. Model, ortam gurultusune karsi dayaniKli olsa da, temiz ses girdisi cok daha dogal yanitlar uretiyor.

Sesli asistan gelistirme konusunda iOS Security yazimda anlattigim guvenlik prensipleri burada da kritik — ses verisi hassas kisisel veri kategorisinde.


4. Gorsel Analiz ve Vision Yetenekleri

GPT-4o'nun gorsel anlama yetenekleri GPT-4V'ye gore buyuk bir sicrama gosteriyor.

Desteklenen Gorsel Islemler

Islem
Aciklama
Ornek Kullanim
Gorsel tanimi
Goruntudeki her seyi aciklama
Urun fotografi analizi
OCR
Goruntudeki metni okuma
Belge tarama, makbuz okuma
Nesne tespiti
Goruntudeki objeleri bulma
Envanter sayimi
Duygu analizi
Yuz ifadesi/sahne analizi
Kullanici deneyimi testi
Karsilastirma
Iki gorseli karsilastirma
Oncesi/sonrasi analiz
Tablo/grafik
Veri gorsellestirmelerini anlama
Rapor okuma
Kod okuma
Ekran goruntusunden kod cikarma
Debugging yardimi
Tasarim analizi
UI/UX gorselleri hakkinda geri bildirim
Tasarim incelemesi

API ile Gorsel Analiz

python
1from openai import OpenAI
2import base64
3 
4client = OpenAI()
5 
6def analyze_image(image_path: str, question: str) -> str:
7 """Gorseli analiz et ve soruya yanit ver"""
8 with open(image_path, "rb") as f:
9 image_data = base64.b64encode(f.read()).decode()
10 
11 response = client.chat.completions.create(
12 model="gpt-4o",
13 messages=[
14 {
15 "role": "user",
16 "content": [
17 {"type": "text", "text": question},
18 {
19 "type": "image_url",
20 "image_url": {
21 "url": f"data:image/jpeg;base64,{image_data}",
22 "detail": "high" # low, auto, high
23 }
24 }
25 ]
26 }
27 ],
28 max_tokens=1000
29 )
30 
31 return response.choices[0].message.content
32 
33# Kullanim ornekleri
34# 1. UI tasarim incelemesi
35result = analyze_image(
36 "app_screenshot.png",
37 "Bu mobil uygulama ekranindaki UI/UX sorunlarini listele"
38)
39 
40# 2. Makbuz okuma
41receipt = analyze_image(
42 "receipt.jpg",
43 "Bu makbuzdaki toplam tutari ve kalemleri JSON formatinda ver"
44)
45 
46# 3. Whiteboard'dan kod cikarma
47code = analyze_image(
48 "whiteboard.jpg",
49 "Bu whiteboard'daki algoritmayı Python koduna cevir"
50)

5. Real-Time Ceviri ve Dil Destegi

GPT-4o'nun cok dilli yetenekleri ozellikle real-time ceviri alaninda cok guclu.

Desteklenen Diller (Tier 1)

Ingilizce, Turkce, Almanca, Fransizca, Ispanyolca, Italyanca, Portekizce, Japonca, Korece, Cince (Mandarin), Arapca, Hintce, Rusca, Lehce, Hollandaca

Canli Tercuman Modu

GPT-4o Advanced Voice Mode ile canli tercumanlik yapabilirsin:

python
1# Real-time ceviri pipeline ornegi
2import asyncio
3from openai import AsyncOpenAI
4 
5client = AsyncOpenAI()
6 
7async def live_translate(source_lang: str, target_lang: str):
8 """Canli sesli ceviri"""
9 
10 system_prompt = f"""Sen profesyonel bir canli tercumansin.
11 {source_lang} dilinde konusulanlari {target_lang} diline cevir.
12 Kurallarin:
13 - Anlam butunlugunu koru
14 - Kulturel bagLami adapte et
15 - Dogal konusma tonunda cevir
16 - Teknik terimleri hedef dilde acikla
17 """
18 
19 response = await client.chat.completions.create(
20 model="gpt-4o",
21 messages=[
22 {"role": "system", "content": system_prompt},
23 {"role": "user", "content": [
24 {"type": "input_audio", "input_audio": {
25 "data": audio_base64,
26 "format": "wav"
27 }}
28 ]}
29 ],
30 modalities=["text", "audio"],
31 audio={"voice": "alloy", "format": "wav"}
32 )
33 
34 return response.choices[0].message.audio

Bu ozellik seyahat, uluslararasi toplanti ve egitim alanlarinda muhtesem kullanim alanlari sunuyor. Flutter vs React Native yazimda anlattigim lokalizasyon konusuyla da dogrudan baglantili — artik sadece metin degil, ses de lokalize edilebiliyor.

💡 Pro Tip: Real-time ceviri icin GPT-4o-mini daha uygun olabilir. Daha hizli yanit suresi ve daha dusuk maliyet, canli ceviri senaryolarinda kritik avantaj sagliyor. Kalite farki minimal.

6. Gelistiriciler Icin API

GPT-4o API, geliştiricilere omnimodal yetenekleri kendi uygulamalarina entegre etme imkani sunuyor.

Temel API Kullanimi

python
1from openai import OpenAI
2 
3client = OpenAI()
4 
5# Cok-modaliteli sohbet
6response = client.chat.completions.create(
7 model="gpt-4o",
8 messages=[
9 {
10 "role": "system",
11 "content": "Sen yardimsever bir AI asistansin. Turkce yanit ver."
12 },
13 {
14 "role": "user",
15 "content": [
16 {"type": "text", "text": "Bu gorseldeki kodu analiz et ve iyilestirme onerileri ver"},
17 {"type": "image_url", "image_url": {"url": "https://example.com/code.png"}}
18 ]
19 }
20 ],
21 max_tokens=2000,
22 temperature=0.7
23)
24 
25print(response.choices[0].message.content)

Structured Output (JSON Mode)

python
1from pydantic import BaseModel
2from typing import List
3 
4class UIAnalysis(BaseModel):
5 overall_score: int
6 issues: List[str]
7 suggestions: List[str]
8 accessibility_notes: List[str]
9 
10response = client.beta.chat.completions.parse(
11 model="gpt-4o",
12 messages=[
13 {"role": "system", "content": "UI/UX analisti olarak gorsel incele"},
14 {"role": "user", "content": [
15 {"type": "text", "text": "Bu ekran goruntusunu analiz et"},
16 {"type": "image_url", "image_url": {"url": screenshot_url}}
17 ]}
18 ],
19 response_format=UIAnalysis
20)
21 
22analysis = response.choices[0].message.parsed
23print(f"Skor: {analysis.overall_score}/100")
24for issue in analysis.issues:
25 print(f" - {issue}")

7. Realtime API ve WebSocket

OpenAI'in 2024 sonunda duyurdugu Realtime API, GPT-4o'nun sesli yeteneklerini WebSocket uzerinden kullanmani sagliyor.

WebSocket Baglantisi

javascript
1// Realtime API WebSocket baglantisi
2const ws = new WebSocket(
3 'wss://api.openai.com/v1/realtime?model=gpt-4o-realtime-preview',
4 {
5 headers: {
6 'Authorization': 'Bearer ' + process.env.OPENAI_API_KEY,
7 'OpenAI-Beta': 'realtime=v1'
8 }
9 }
10);
11 
12ws.on('open', () => {
13 // Session konfigurasyonu
14 ws.send(JSON.stringify({
15 type: 'session.update',
16 session: {
17 modalities: ['text', 'audio'],
18 instructions: 'Sen Turkce konusan yardimsever bir asistansin.',
19 voice: 'alloy',
20 input_audio_format: 'pcm16',
21 output_audio_format: 'pcm16',
22 input_audio_transcription: { model: 'whisper-1' },
23 turn_detection: { type: 'server_vad', threshold: 0.5 },
24 temperature: 0.8
25 }
26 }));
27});
28 
29// Ses verisi gonder
30ws.on('message', (data) => {
31 const event = JSON.parse(data);
32 
33 switch (event.type) {
34 case 'response.audio.delta':
35 // Ses parcasini oynat
36 playAudioChunk(Buffer.from(event.delta, 'base64'));
37 break;
38 
39 case 'response.audio_transcript.delta':
40 // Transkript guncelle
41 updateTranscript(event.delta);
42 break;
43 
44 case 'input_audio_buffer.speech_started':
45 // Kullanici konusmaya basladi
46 stopCurrentPlayback();
47 break;
48 
49 case 'error':
50 console.error('Realtime API error:', event.error);
51 break;
52 }
53});
54 
55// Mikrofon verisini gonder
56function sendAudioChunk(pcmData) {
57 ws.send(JSON.stringify({
58 type: 'input_audio_buffer.append',
59 audio: pcmData.toString('base64')
60 }));
61}

WebSocket Real-Time yazimda anlattgim WebSocket mimarisi burada birebir uygulaniyor. Ayni event-driven yaklasim, ayni duplex iletisim — farkli icerik.

Server VAD (Voice Activity Detection)

Realtime API'nin en akillı ozelligi server-side VAD. Kullanicinin konusup konusmadigini sunucu tarafinda tespit ediyor:

  • Konusma basladığında model dinlemeye geciyor
  • Konusma bittiginde otomatik yanit olusturuyor
  • Kesinti durumunda (kullanici araya girerse) mevcut yaniti durduruyor
💡 Pro Tip: Gurultulu ortamlarda VAD threshold'unu 0.7'ye cikar. Varsayilan 0.5 degerinde ortam gurultusu konusma olarak algilanabilir.

8. Mobil Uygulama Entegrasyonu

GPT-4o'yu mobil uygulamana entegre etmek icin birkac yaklasim var:

iOS (Swift) Entegrasyonu

swift
1import Foundation
2import AVFoundation
3 
4class GPT4oService {
5 private let apiKey: String
6 private let session = URLSession.shared
7 
8 init(apiKey: String) {
9 self.apiKey = apiKey
10 }
11 
12 func analyzeImage(_ image: UIImage, question: String) async throws -> String {
13 guard let imageData = image.jpegData(compressionQuality: 0.8) else {
14 throw GPT4oError.invalidImage
15 }
16 
17 let base64Image = imageData.base64EncodedString()
18 
19 let requestBody: [String: Any] = [
20 "model": "gpt-4o",
21 "messages": [
22 [
23 "role": "user",
24 "content": [
25 ["type": "text", "text": question],
26 ["type": "image_url", "image_url": [
27 "url": "data:image/jpeg;base64,\(base64Image)",
28 "detail": "auto"
29 ]]
30 ]
31 ]
32 ],
33 "max_tokens": 1000
34 ]
35 
36 var request = URLRequest(url: URL(string: "https://api.openai.com/v1/chat/completions")!)
37 request.httpMethod = "POST"
38 request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
39 request.setValue("application/json", forHTTPHeaderField: "Content-Type")
40 request.httpBody = try JSONSerialization.data(withJSONObject: requestBody)
41 
42 let (data, _) = try await session.data(for: request)
43 let response = try JSONDecoder().decode(ChatResponse.self, from: data)
44 
45 return response.choices.first?.message.content ?? ""
46 }
47}

Flutter Entegrasyonu

dart
1import 'dart:convert';
2import 'package:http/http.dart' as http;
3 
4class GPT4oClient {
5 final String apiKey;
6 
7 GPT4oClient({required this.apiKey});
8 
9 Future chat({
10 required String message,
11 String? imageBase64,
12 String model = 'gpt-4o',
13 }) async {
14 final content = >[
15 {'type': 'text', 'text': message},
16 ];
17 
18 if (imageBase64 != null) {
19 content.add({
20 'type': 'image_url',
21 'image_url': {
22 'url': 'data:image/jpeg;base64,$imageBase64',
23 'detail': 'auto',
24 },
25 });
26 }
27 
28 final response = await http.post(
29 Uri.parse('https://api.openai.com/v1/chat/completions'),
30 headers: {
31 'Authorization': 'Bearer $apiKey',
32 'Content-Type': 'application/json',
33 },
34 body: jsonEncode({
35 'model': model,
36 'messages': [
37 {'role': 'user', 'content': content},
38 ],
39 'max_tokens': 1000,
40 }),
41 );
42 
43 if (response.statusCode != 200) {
44 throw Exception('API error: ${response.statusCode}');
45 }
46 
47 final data = jsonDecode(response.body);
48 return data['choices'][0]['message']['content'];
49 }
50}

Mobil entegrasyon konusunda iOS App Architecture yazimda anlattigim katmanli mimari burada da gecerli — API cagrilarini service layer'da izole et, UI'dan ayir.


9. Performans ve Maliyet

Fiyat Karsilastirmasi (Subat 2026)

Model
Input (1M token)
Output (1M token)
Gorsel (token/gorsel)
GPT-4o
$2.50
$10.00
~765 token (low)
GPT-4o-mini
$0.15
$0.60
~2833 token (low)
GPT-4 Turbo
$10.00
$30.00
~765 token
Claude 3.5 Sonnet
$3.00
$15.00
~1600 token
Gemini 1.5 Pro
$1.25
$5.00
Ucretsiz (sinirli)

Token Hesaplama

swift
1Metin: ~4 karakter = 1 token(Turkce icin ~3 karakter)
2Gorsel(low detail): ~85 token
3Gorsel(high detail): 85 + 170 * tile sayisi
4Ses: ~1 saniye = ~25 token(Realtime API)

Maliyet Optimizasyonu Stratejileri

  1. Model secimi: Basit isler icin gpt-4o-mini, kompleks isler icin gpt-4o
  2. Detail level: Gorsel icin "low" detail yeterli olabilir (%80 daha ucuz)
  3. Caching: Ayni gorsel/prompt kombinasyonu icin sonuclari onbellekle
  4. Streaming: Kullanici deneyimini iyilestir, beklemeyi azalt
  5. Batch API: Acil olmayan isler icin %50 indirimli batch endpoint
💡 Pro Tip: GPT-4o'nun predicted_output ozelligi ile ortak iceriklerde (JSON sema, tekrarlayan yapilar) %40'a kadar output token tasarrufu saglayabilirsin. Modelden bekledigin yapinin bir kismini onceden belirtiyorsun, model sadece farkliliklari uretiyor.

Mobile DevOps yazimda anlattigim maliyet optimizasyonu prensipleri burada da gecerli — her API cagrisinin bir maliyeti var, pipeline'ini buna gore tasarla.


ALTIN İPUCU

Bu yazının en değerli bilgisi

Bu ipucu, yazının en önemli çıkarımını içeriyor.

Easter Egg

Gizli bir bilgi buldun!

Bu bölümde gizli bir bilgi var. Keşfetmek ister misin?

Okuyucu Ödülü

GPT-4o ile hizlica bir **AI-powered prototip** olusturma workflow'u: (1) Kagit uzerine UI wireframe ciz, (2) Telefonla fotograf cek, (3) GPT-4o'ya "Bu wireframe'i React Native koduna cevir" de, (4) Elde ettigin kodu Expo ile calistir, (5) Ekran goruntusunu tekrar GPT-4o'ya gonderip "Su kismi iyilestir" de. Bu dongu ile 30 dakikada kagittan calisan prototipe gecebilirsin. Ayrica [Expo Snack](https://snack.expo.dev) uzerinde dogrudan test edebilirsin — kurulum gerektirmez.

Sonuc ve Oneriler

GPT-4o, yapay zekanin "tek is yapan arac"tan "her seyi yapan asistan"a donusumunun en somut ornegi. Metin, ses, gorsel ve video anlama yetenekleriyle, insanin dogal iletisim bicimine en yakin AI modeli.

Onerilerin:

  1. Omnimodal dusun — Sadece metin degil, ses ve gorsel modalitelerini de entegre et
  2. GPT-4o-mini ile basla — Cogu senaryo icin yeterli ve %94 daha ucuz
  3. Realtime API'yi dene — Sesli asistan uygulamalari icin oyun degistirici
  4. Structured output kullan — JSON mode ile guvenilir veri cikar
  5. Guvenlik oncelikli — Ses ve gorsel verisi hassas veri — sifreleme ve izin yonetimi sart
  6. Maliyet takibi — Token kullanumini monitor et, budget alert kur

GPT-4o tek basina bir son degil, bir baslangic. Bu modelin yeteneklerini kendi uygulaman icin nasil kullanacagin, yaraticiligina ve muhendislik becerine bagli. Swift Async/Await yazimda anlattigim gibi, araclar degisir ama temel muhendislik prensipleri kalici — temiz mimari, test edilebilirlik ve kullanici odaklilik her zaman gecerli.

Sora 2, Sora Turbo ve GPT-4o uc yazi boyunca OpenAI ekosisteminin en guclu araclarini inceledik. Artik sira sende — bu araclari birlestirip kendi yaratici projelerini hayata gecirme zamani!

Etiketler

#AI#GPT-4o#OpenAI#Multimodal#Voice AI#ChatGPT#2026
Muhittin Çamdalı

Muhittin Çamdalı

Senior iOS Developer

12+ yıllık deneyime sahip iOS Developer. Swift, SwiftUI ve modern iOS mimarileri konusunda uzman. Apple platformlarında performanslı ve kullanıcı dostu uygulamalar geliştiriyorum.

iOS Geliştirme Haberleri

Haftalık Swift tips, SwiftUI tricks ve iOS best practices. Spam yok, sadece değerli içerik.

Gizliliğinize saygı duyuyoruz. İstediğiniz zaman abonelikten çıkabilirsiniz.

Paylaş

Bunu da begenebilirsiniz