Objective-C: Apple'ın anahtar dili hakkında bilmeniz gereken her şey

Son Güncelleme: 19 Haziran 2025
  • Objective-C, C dilinin bir uzantısı olarak oluşturulmuş nesne yönelimli bir dildir ve onlarca yıldır Apple için uygulama geliştirmede kullanılır.
  • Esnekliği, C kodu ve nesne yöneliminin karışımı, eski API'ler ve çerçevelerle uyumluluğu ve dinamik mesajlaşma sistemiyle öne çıkıyor.
  • Şu anda Apple projelerinde Swift ile birlikte varlığını sürdürüyor ve eski uygulamaların ve kütüphanelerin bakımı ve birlikte çalışabilirliği açısından vazgeçilmez olmaya devam ediyor.

Objective-C programlama dili

Objective-C , son zamanlarda Swift'in yükselişiyle biraz gölgede kalsa da, Apple sistemleri için programlamanın tarihinde ve günümüzde hayati bir araç olmaya devam eden programlama dillerinden biridir. iOS veya macOS için uygulama geliştirme hakkında bir şeyler duyduysanız , neredeyse kesinlikle bu dille karşılaşmışsınızdır, çünkü yirmi yılı aşkın süredir Apple ekosisteminde geliştirmenin temel taşı olmuştur.

Bu makalede, Objective-C'yi anlamak için bilmeniz gereken her şeyi inceleyeceğiz : en belirgin özellikleri, kökenleri, şu anda nerede kullanıldığı ve Swift gibi alternatiflerle karşılaştırması. Ayrıca, sözdizimini, yapısını ve yeteneklerini anlamanıza yardımcı olacak pratik örneklerin yanı sıra bellek yönetimi, nesne yönelimli paradigma, protokoller ve daha birçok önemli konuyu da göreceksiniz. Hazır olun, çünkü bu büyüleyici dilin her köşesine dalacağız.

Objective-C Nedir?

Objective-C, C dilini genişletmek ve özellikle Smalltalk'tan esinlenen nesne tabanlı dillerin tipik özelliklerini kazandırmak için tasarlanmış nesne yönelimli bir programlama dilidir. Kökenleri, 1980'lere, Brad Cox ve StepStone Corporation'a dayanmaktadır ve amaç, C'ye Smalltalk tarzı bir mesajlaşma sistemi sağlayarak programlamada daha fazla esneklik ve modülerlik sunmaktı.

Saf C'nin aksine , Objective-C nesneler oluşturmanıza ve manipüle etmenize olanak tanır; bu da kodunuzu hem veriye hem de ilişkili işlevlere sahip varlıklar etrafında yapılandırabileceğiniz anlamına gelir. Bu, özellikle karmaşık uygulamalar geliştirirken kod organizasyonunu, yeniden kullanımını ve sürdürülebilirliğini teşvik ettiği için faydalıdır.

Objective-C'nin en büyük başarılarından biri, sözdizimi ve çalışma şeklinin C dilinde yazılmış kodu nesne yönelimli işlevlerle birleştirmeye olanak sağlaması , böylece mevcut C projelerinden geçişi kolaylaştırması ve yeni, çok daha gelişmiş özellikleri entegre etmesidir.

Objective-C'nin tarihi ve evrimi

Objective-C'nin kökenleri, 80'lere kadar uzanmaktadır. O dönemde StepStone'da yazılım geliştiricisi olan Brad Cox ve Tom Love, o zamanlar nesne yönelimli programlamanın önde gelen dili olan Smalltalk'a benzer yetenekleri C'ye ekleme ihtiyacını fark etmişlerdir. Amaçları, C'nin gücünü, hızını ve popülerliğini Smalltalk'ın esnekliğiyle birleştirerek, her iki dünyanın da en iyisini sunan hibrit bir dil oluşturmaktı.

İlk sürüm 1984'te piyasaya sürüldü ve daha sonra Steve Jobs'ın Apple'dan geçici olarak ayrılmasının ardından kurduğu NeXT gibi şirketler tarafından benimsendi. NeXT, Objective-C'yi NeXTSTEP işletim sisteminin ana dili olarak entegre etti ve bu da Apple'ın 90'ların sonlarında NeXT'i satın almasıyla ortaya çıkacak olan macOS ve iOS'un temelini attı.

O zamandan beri ve neredeyse otuz yıldır Objective-C, Apple'ın işletim sistemlerinde yazılım geliştirmek için tartışmasız standart olmuştur. Apple, 2014 yılında Swift'i uygulama geliştirme için yeni referans dili olarak duyurdu, ancak Objective-C, özellikle mevcut uygulamaları sürdürmek ve henüz taşınmamış eski API'lere ve çerçevelere erişmek için ekosistemin temel bir parçası olmaya devam etti.

Şu anda Swift yeni uygulamaların geliştirilmesinde baskın olsa da, Objective-C eski kod tabanları, Swift'e uyarlanmamış çerçeveler üzerinde çalışan ekipler ve belirli platformlar arası projeler için bir köprü görevi görmesi bakımından önemini koruyor.

Objective-C ne için kullanılır?

Objective-C, özellikle Apple'ın macOS ve iOS işletim sistemleri ile en popüler yerel çerçeveleri olan Cocoa ve Cocoa Touch için kullandığı birincil programlama dili olarak öne çıkmaktadır . Mac'in grafik arayüzünden iPhone ve iPad için en karmaşık mobil uygulamalara kadar Objective-C, sağlam, verimli ve bakımı kolay yazılımların oluşturulmasını kolaylaştırmıştır.

Başlıca avantajlarından biri, C kodu ile nesne yönelimli kodu karıştırmaya olanak sağlaması ve modern projelerde C kütüphanelerinin kullanımını mümkün kılmasıdır; bu da özellikle maksimum performans gerektiren veya eski kodlarla entegrasyon gerektiren uygulamalar için faydalıdır.

Objective-C'nin en öne çıkan kullanım alanlarından bazıları şunlardır:

  • iOS ve macOS için Yerel Uygulama Geliştirme: Bugün bile App Store'daki uygulamaların önemli bir kısmı, kısmen veya tamamen Objective-C ile yazılmıştır.
  • Eski Apple API'lerine erişim: Sistem özelliklerinin birçoğu sadece bu dilde mevcut olduğundan, uzun süredir devam eden projelerin sürdürülmesi ve iyileştirilmesi için vazgeçilmezdir.
  • Çerçeveler ve tescilli kütüphaneler: Büyük geliştirme ekiplerinin verimlilik ve uyumluluk için Objective-C kütüphanelerini sürdürmeye devam etmesi yaygındır.
  • GNUstep ve diğer platformlarla uyumluluk: Apple'ın yanı sıra, GNUstep gibi diğer uygulamalar Objective-C'nin Apple dışı sistemlerde de kullanılmasına olanak sağlıyor.
  Algol programlama dili: 10 temel husus

Objective-C'nin temel özellikleri

Objective-C , özellikle C dünyasından gelen programcılar tarafından çok değer verilen bir dizi özellik sunmaktadır . Aşağıda, diğer dillere kıyasla onu benzersiz kılan özelliklerin en önemlilerini inceleyeceğiz:

  • Nesne yönelimli dil: Her şey nesneler etrafında döner, bu da sınıfların tanımlanmasına, kalıtımın, çok biçimliliğin ve kapsüllemenin yanı sıra net kod bölünmesine olanak tanır.
  • C'nin üst kümesi: C'nin tüm işlevselliğini korur ve geleneksel komut setlerinin (örneğin) dahil edilmesine olanak tanır. while, for, do-while) ve nesnelerle birlikte ilkel verileri de işleyebiliriz.
  • Smalltalk tarzı mesajlaşma: Metot çağrısı, nesnelere mesaj gönderilerek gerçekleştirilir ve bu da geliştirmeye büyük esneklik ve dinamizm sağlar.
  • Açık bellek yönetimi: Otomatik bellek yönetimine sahip modern dillerin aksine, Objective-C programcının her nesnenin oluşturulmasını ve serbest bırakılmasını kontrol etmesini gerektirir, ancak 2011'den bu yana ARC'nin (Otomatik Referans Sayımı) gelişiyle bu görev önemli ölçüde basitleştirildi.
  • C kütüphanesi desteği: C ile yazılmış kütüphaneleri tekrar kullanmanıza olanak tanır, eski kodların entegrasyonunu kolaylaştırır ve gerektiğinde performansı artırır.
  • Protokol ve kategorilere destek: Protokolleri kullanarak soyut arayüzler tanımlayabilir, kategorileri kullanarak mevcut sınıflara ek metotlar ekleyebilirsiniz.

Objective-C Temel Sözdizimi ve Yapıları

Objective-C'nin sözdizimi, onu tanımlayan özelliklerden biridir ve ilk bakışta garip görünse de (özellikle mesaj göndermek için kullanılan köşeli parantez gösterimi), alıştıktan sonra oldukça mantıklı ve basittir. İşte temel unsurların bir özeti:

  • Değişkenlerin ve ilkel tiplerin bildirimi: Tıpkı C'de olduğu gibi, aşağıdaki gibi basit değişkenler bildirebilirsiniz: int, float o char. Nesneler için değişken adından önce bir yıldız işareti kullanılır (MyClass *objeto;).
  • Mesaj gönderme: Bir nesnenin metodunu çağırmak için parantez sözdizimini kullanırsınız: ;
  • Sınıflar ve yöntemler: Bir sınıfın tanımı iki dosyadan oluşur: arayüz (.h) ve uygulama (.m). Yönergeler kullanılır @interface y @implementation.
  • özellikleri: Bunlar ile tanımlanırlar @property ve genellikle şunlara eşlik eder: @synthesize getter ve setter metodlarını otomatik olarak uygulamak.
  • Kontrol de flujo: Klasik C ifadeleri mevcuttur: if, else, switch, while, for.
  • Koleksiyon türleri: Listeler (NSArray, NSMutableArray), sözlükler (NSDictionary, NSMutableDictionary) ve kümeler (NSSet, NSMutableSet) için nesneler vardır.

Bu sistem, geliştiricilerin C mantığının bir kısmını devralmasına olanak tanır, ancak büyük projelerde oldukça değer verilen bir soyutlama ve modülerlik katmanı ekler.

Pratik örnek: Objective-C'de Hello World

Objective-C'de konsola "Merhaba Dünya" yazdıracak basit bir örneğin nasıl göründüğüne bakalım:

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"Hola Mundo");
    }
    return 0;
}

Bu parçada birkaç unsur görüyoruz:

  • #içe aktarmak : Apple'ın temel nesne çerçevesini içe aktarır.
  • @autoreleasepool: Özellikle ARC kullanılmadığında nesne belleği yönetimi için gereklidir.
  • NSL Günlüğü: Konsolda bilgi görüntüleme işlevi, şuna eşdeğerdir: printf C dilinde ama Objective-C'ye uyarlanmış.

Objective-C'de nesne yönelimli paradigma

Objective-C, nesne yönelimli paradigmayı tamamen benimser ve sınıflar, nesneler, kalıtım, kapsülleme ve polimorfizm ile çalışmanıza olanak tanır. Her sınıf, örnek değişkenleri, kendi yöntemlerini ve özelliklerini tanımlayabilir ve davranışları miras almak ve değiştirmek için alt sınıflar aracılığıyla genişletilebilir.

Ayrıca, benzersiz bir özellik olarak, nesnelere dinamik olarak mesaj gönderebilme yeteneği , doğrudan Smalltalk'tan miras alınan bir fikirle, çalışma zamanı uyarlanabilirliğine sahip son derece esnek programların geliştirilmesini kolaylaştırır.

Ayrıca , alt sınıflar oluşturmadan mevcut sınıflara ek işlevsellik eklemeyi sağlayan kategoriler ve diğer dillerdeki arayüzlere benzer şekilde sınıfların benimseyebileceği yöntem sözleşmeleri tanımlamayı mümkün kılan protokoller kullanarak kodu düzenleme yeteneği de dikkat çekicidir .

Objective-C'deki kategoriler ve uzantılar

Kategoriler, orijinal kodunu değiştirmeden veya alt sınıflar oluşturmadan bir sınıfın işlevselliğini genişletmek için en güçlü araçlardan biridir . Uygulamasına erişiminiz olmasa bile herhangi bir sınıfa ek yöntemler eklemenize olanak tanır; bu da büyük kod tabanlarını düzenlemek veya özel işlevsellik uygulamak için son derece kullanışlıdır.

  Excel'de Python'a Tam Kılavuz: Veri Analizini Güçlendirmek

Öte yandan, uzantılar (veya "sınıf uzantıları"), sınıf uygulamasının içinde özel yöntemler ve özellikler bildirmek için kullanılır ve böylece iç ayrıntıların daha iyi kapsüllenmesine ve gizlenmesine olanak tanır.

Objective-C'deki Protokoller

Protokoller, sınıfların benimseyebileceği ve uygulayabileceği yöntemleri tanımlayan soyut sözleşmeler gibi işlev görür. Bu nedenle, herhangi bir sınıf belirli bir protokole bağlılığını belirtebilir ve yöntemlerini uygulamayı taahhüt edebilir. Bu, büyük bir esneklik sağlar ve iOS ve macOS uygulama geliştirmede çok yaygın olan yetkilendirme gibi kalıpların yerine getirilmesine yardımcı olur.

Örneğin, bir protokol şu yöntemleri belirtebilir: turnOnEngine o beNiceToSister:ve farklı sınıflar bu işlevselliğe ilgi duyuyorlarsa bu protokolleri benimseyebilirler.

Bellek Yönetimi: Tutma, Bırakma ve ARC

Objective-C'de bellek yönetimi geleneksel olarak programcılar için en büyük zorluklardan biri olmuştur . ARC'nin ( Otomatik Referans Sayımı ) ortaya çıkmasından önce, her nesnenin saklanması ve serbest bırakılması manuel olarak kontrol edilmek zorundaydı; bu da bellek sızıntısı ve tespit edilmesi zor hatalar riskini artırıyordu.

Temel döngü şunlardan oluşur:

  • Nesneyi oluştur (alloc).
  • Nesneyi kullan.
  • Nesneyi serbest bırak (release o autorelease).

Xcode 4.2 ve iOS 4'e entegre edilen ARC ile derleyici, retain , release ve autorelease komutlarını otomatik olarak ekleyerek geliştiricinin hayatını önemli ölçüde kolaylaştırıyor ve Objective-C'yi çöp toplama özelliğine sahip diğer dillerin deneyimine yaklaştırıyor.

Özellikler ve nitelikler: erişim denetimi ve bellek

W Objective-C'deki Özellikler tarafından beyan edilmiştir @property ve yönetimi, her değerin nasıl depolandığını ve erişildiğini kontrol eden çeşitli niteliklerle güçlendirilir. Ana nitelikler şunlardır:

  • atamak: Nesneyi tutmadan veya serbest bırakmadan doğrudan bir değer atar (genellikle ilkel türler veya zayıf referanslar için kullanılır).
  • sürdürmek: Nesneye güçlü bir referans sağlar ve her atandığında sayacı artırır.
  • kopya: Atanmış nesnenin bir kopyasını oluşturur; metin dizeleri veya değiştirilemez nesneler için kullanışlıdır.
  • zayıf: ARC ile tanıtılan, otomatik olarak ayarlanan zayıf bir referansı tanımlar nil orijinal nesne serbest bırakıldığında.
  • kuvvetli: Güçlü referans, özellik var olduğu sürece nesnenin bellekte mevcut olacağını garanti eder.

Bu ayrıntı düzeyi, geliştiricilerin kaynak tüketimini optimize etmelerine ve bellek erişim hatalarından kaçınmalarına olanak tanır.

Karşılaştırma: Objective-C ve Swift

2014'ten beri Apple ekosistemi için geliştirme, Objective-C ve Swift'in bir arada varlığıyla karakterize edilmiştir . Her iki dilin de güçlü ve zayıf yönleri vardır ve seçim büyük ölçüde projenin türüne ve geliştirme ekibinin deneyimine bağlıdır.

Objective-C'nin başlıca avantajları şunlardır :

  • C ve C++ ile doğrudan uyumluluk: Ham performans gerektiren uygulamalarda oldukça beğenilen, zorunlu ve nesne yönelimli kodları karıştırmanıza olanak tanır.
  • Olgunluk ve istikrar: Yıllardır test edilmiş, geniş bir topluluğa sahip ve bol miktarda dokümana sahip bir dildir.
  • dinamizm: Mesajlaşma ve yansıtma sistemi, çalışma zamanında uygulamaların davranışlarını değiştirmenize olanak tanır.

Swift ise şu katkıyı sunuyor:

  • Daha fazla güvenlik garantisi: Statik yazım, hata yönetimi ve modern bellek yönetimi sayesinde.
  • Daha açık ve öz sözdizimi: Özellikle C dünyasından gelmeyenler için kod yazmayı ve bakımını kolaylaştırır.
  • Modern araçlar: Ad alanlarına yönelik mükemmel destek, Oyun Alanları ile etkileşimli geliştirme ve işlevsel desenler.

İleriye baktığımızda, her şey Swift'in ivme kazanmaya devam edeceğini gösteriyor, ancak Objective-C büyük ölçekli eski projelerde ve eski çerçevelerle birlikte çalışabilirlik açısından önemini koruyacak .

Objective-C'nin Swift'e kıyasla avantajları ve dezavantajları

Bir dilin veya diğerinin seçimini etkileyebilecek bazı önemli noktaları gözden geçirmek faydalı olacaktır :

  • Amaç-C:
    • C ve C++ kütüphaneleriyle verimli bir şekilde çalışmanızı sağlar.
    • Çalışma zamanında davranışı değiştirmenize olanak tanıyan yöntem değiştirme gibi dinamik özellikler sunar.
    • Mevcut ikili çerçeveler ve üçüncü taraf kütüphanelerle uyumludur.
    • Ancak küçük bir ad alanına sahip olması, büyük projelerde çatışmalara ve hata ayıklaması zor hatalara yol açabiliyor.
    • Sözdizimi yeni programcılara karmaşık ve modası geçmiş görünebilir.
  • hızlı:
    • Statik yazım ve modern söz dizimi güvenliği ve üretkenliği artırır.
    • Playgrounds ile fonksiyonel desenler ve etkileşimli kod yönetimi için gelişmiş destek.
    • Büyük projelerde derlemenin daha yavaş olması ve modül formatlarında veya C++ ile birlikte çalışabilirlikte bazı dengesizlikler olması.

Pratik temel bilgiler ve kod örnekleri

Objective-C'ye yeni başlayanlar için, gerçek dünya projelerinde kullanımına dair bazı pratik örnekleri incelemek faydalı olabilir. İşte bazı temel yapılar ve kavramlar:

  Ruby geliştirme: dil, ekosistem ve güncel kullanım alanları

Sınıfları ve yöntemleri bildirme

// Archivo de cabecera: MyClass.h
#import <Foundation/Foundation.h>

@interface MyClass : NSObject
@property int contador;
- (void)incrementar;
@end
// Archivo de implementación: MyClass.m
#import "MyClass.h"

@implementation MyClass
- (void)incrementar {
    self.contador++;
}
@end

Bu örnekte, MyClass , Cocoa'daki çoğu nesnenin kök sınıfı olan NSObject'ten miras almaktadır .

Dizileri ve sözlükleri kullanma

NSArray *array = @;
NSString *elemento = array; // "dos"

NSDictionary *diccionario = @{ @"clave1": @"valor1", @"clave2": @"valor2" };
NSString *valor = diccionario; // "valor1"

Döngüler ve kontrol yapıları

for (int i = 0; i < 5; i++) { NSLog(@"Iteración %d", i); } if (array.count > 2) {
    NSLog(@"El array tiene más de dos elementos");
}

Klasik bellek yönetimi (ARC olmadan)

MyClass *objeto =  init];
// Se usa el objeto
; // Liberar cuando termine de usarse

Uyumluluk ve desteklenen platformlar

Objective-C, Apple ekosisteminden ayrı düşünülemez olsa da, GNUstep gibi uygulamalar , Linux ve Windows dahil olmak üzere diğer platformlarda bu dille geliştirme yapılmasına olanak tanır. Bununla birlikte, macOS ve iOS ortamları dışındaki kullanımı çok sınırlıdır ve genellikle niş projeler veya eski kodlarla birlikte çalışabilirlik ile ilişkilidir. Objective-C nedir?

Apple'da Objective-C, macOS, iOS, iPadOS, tvOS ve watchOS'un tüm modern sürümlerinde desteklenmeye devam ediyor ve hem Xcode hem de komut satırı araçlarında geçerli bir seçenek.

Objective-C Kaynakları ve Öğrenme

Objective-C öğrenmek veya becerilerini geliştirmek isteyenler için çok sayıda kaynak, eğitim videosu ve çevrimiçi kurs mevcuttur. Üniversite platformlarından ve teknik eğitim okullarından video kanallarına ve resmi Apple dokümanlarına kadar öğrenme kolay ve çeşitlidir. Başarılı bir mobil uygulama geliştiricisi nasıl olunur öğrenin.

Eğitim için en yaygın seçenekler arasında şunlar yer almaktadır:

  • Açıklayıcı videolar.
  • E-kitaplar ve pratik kılavuzlar.
  • Adım adım anlatımlı, hem yazılı hem de videolu eğitimler.
  • Çevrimiçi geliştirici toplulukları ve teknik forumlar.
  • Temel seviyeden ileri seviyeye kadar uzanan özel platformlarda dersler.

Ayrıca bu platformların birçoğu, eğitim programlarını tamamlayanlara sertifika imkânı sunuyor ki bu da sektörde iş ararken bir artı olabilir.

Neden bugün Objective-C öğrenmelisiniz?

Günümüzde Objective-C öğrenmenin anlamsız görünmesi mümkün, özellikle de asıl amacınız yeni projeler başlatmaksa. Ancak, eski kod tabanlarına sahip şirketlerde çalışacaksanız, halihazırda üretimde olan uygulamaları sürdürecekseniz veya Apple platformlarının iç işleyişine ilgi duyuyorsanız, Objective- C'ye hakim olmak hala şiddetle tavsiye edilir . Objective-C'nin Swift ile uyumluluğu, her iki dilin de aynı projede birlikte var olmasına olanak tanıyarak, her şeyi sıfırdan yeniden inşa etmeye gerek kalmadan uygulamaların kademeli olarak geçişini kolaylaştırır.

Dahası, Objective-C'nin iOS ve macOS geliştirmenin birçok alanında teknik bir ölçüt olmaya devam etmesi, özellikle üst düzey pozisyonlar ve mimari veya teknik liderlik rolleri için iş piyasasında önemini garanti etmektedir.

Bu yolculuk boyunca, Objective-C dilinin Apple yazılım geliştirmesinde nasıl bir dönüm noktası oluşturduğunu ve C'yi genişletmeye ve nesne yönelimli paradigmaları entegre etmeye dayalı felsefesinin, sağlam, esnek ve son derece uyarlanabilir uygulamaların oluşturulmasını nasıl sağladığını gördünüz . Swift'in popülaritesi kullanımını bir nebze de olsa gölgede bırakmış olsa da, Objective-C'ye hakim olmak, Apple ekosisteminde kolaylıkla gezinmek ve modern programlamanın zorluklarının üstesinden gelmek ve büyük projeleri sürdürmek isteyen her geliştirici için temel bir varlık olmaya devam etmektedir. Uyumluluk nedenleriyle, eski mimarilerle veya sadece teknik merakla olsun, Objective-C öğrenmek, tüketici bilişiminin tarihine ve bugününe bir kapı açar.

OOP'de kalıtım
İlgili makale:
2024'te en çok kullanılan programlama dilleri