Ana içeriğe geç

Objective-C

Okunuşu
ıbcektiv si
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/objective-c

Kısaca

Objective-C, Smalltalk tarzı mesajlaşma ekleyen nesne yönelimli bir C üst kümesidir ve Swift gelmeden önce macOS ile iOS uygulamalarının ana diliydi.

Objective-C nedir?

Objective-C, Brad Cox ve Tom Love tarafından 1980'lerin başında geliştirilen, genel amaçlı ve nesne yönelimli bir programlama dilidir. C'nin üzerine, Smalltalk dilinden esinlenen nesneleri ve mesaj iletmeyi ekler; geçerli her C kodu aynı zamanda geçerli bir Objective-C kodudur. NeXT onu 1980'lerin sonunda benimsedi ve Apple, NeXT'i satın aldıktan sonra macOS'in ve daha sonra iOS'in geliştirme temeli oldu.

En belirgin özelliği köşeli parantezli mesaj sözdizimidir: [greeter sayHelloTo:@"Ada"], greeter nesnesine sayHelloTo: mesajını gönderir. Mesajlar çalışma zamanında yönlendirilir; bu da dili çok dinamik kılar: çalışacak metot program çalışırken aranır ve kategoriler (categories), sistem kütüphanelerinden gelenler dahil mevcut sınıflara metot ekleyebilir. 2011'den beri bellek, geliştiricilerin bir zamanlar elle yazması gereken retain ve release çağrılarını kendisi ekleyen Otomatik Referans Sayımı (ARC) ile yönetilmektedir.

Objective-C, Apple'ın Cocoa ve Cocoa Touch çatılarını oluşturmak için kullanıldı ve mevcut uygulama ile sistem kodunun büyük bir bölümü hâlâ onunla yazılmıştır. Yeni Apple uygulamaları genellikle Swift ile yazılır, ancak Objective-C eski kod tabanlarının bakımı ve Objective-C++ adı verilen varyant dahil C ve C++ kütüphaneleriyle karıştırma için önemini korur.

Objective-C en sık, Apple platformlarındaki halefi Swift ile kıyaslanır. Swift'in daha temiz bir sözdizimi, daha güçlü statik tip güvenliği, eksik değerleri açık kılan isteğe bağlı tipleri ve struct gibi değer tipleri vardır; Objective-C ise daha dinamiktir ve nil'e mesaj göndermeyi hata yerine zararsız bir işlem yapmama olarak ele alır. İkisi birlikte çalışabilir, bu yüzden tek bir uygulama ikisini de içerebilir. Objective-C ayrıca, C'ye nesne yönelimini tamamen farklı, derleme zamanına odaklı bir biçimde ekleyen C++'tan da farklıdır.

Önemli noktalar

  • Objective-C, Smalltalk tarzı nesneler ve mesajlaşma ekleyen, C'nin katı bir üst kümesidir.
  • Metot çağrıları, köşeli parantezlerle yazılan ve çalışma zamanında yönlendirilen mesajlardır.
  • Swift'ten önce macOS ve iOS geliştirmenin ana diliydi.
  • Bellek, Otomatik Referans Sayımı (ARC) ile yönetilir.
  • Objective-C ve Swift aynı projede karıştırılabilir.

Örnek

Objective-C'de mesaj göndermekobjective-c
#import <Foundation/Foundation.h>

int main(void) {
    @autoreleasepool {
        // Square brackets send a message to an object
        NSArray *langs = @[@"C", @"Smalltalk", @"Objective-C"];
        NSString *joined = [langs componentsJoinedByString:@" + "];
        NSLog(@"%@", joined);  // C + Smalltalk + Objective-C

        // Messages can be nested, and a message sent to nil is ignored
        NSString *nothing = nil;
        NSLog(@"%@ %lu", [joined uppercaseString], [nothing length]);  // C + SMALLTALK + OBJECTIVE-C 0
    }
    return 0;
}

Sık sorulan sorular

Objective-C hâlâ kullanılıyor mu?

Evet, çoğunlukla mevcut Apple kod tabanlarında ve sistem çatılarında. Yeni iOS ve macOS kodlarının çoğu Swift ile yazılır, ancak Objective-C desteklenmeye devam eder ve aynı uygulamada Swift ile karıştırılabilir.

Objective-C ile Swift arasındaki fark nedir?

Objective-C, köşeli parantezli mesajlaşmaya sahip, C'nin dinamik bir üst kümesidir; Swift ise daha güçlü tip güvenliği, isteğe bağlı tipler, değer tipleri ve daha temiz bir sözdizimi olan daha yeni bir dildir. Apple yeni kod için Swift'i önerir ve ikisi birlikte çalışabilir.

Objective-C ile C++ arasındaki fark nedir?

İkisi de C'yi nesne yönelimli özelliklerle genişletir, ama farklı yollarla. Objective-C, Smalltalk'tan esinlenen dinamik, çalışma zamanı mesaj iletimini ekler; C++ ise sınıfları, şablonları ve derleme zamanı özelliklerini ekler ve ikisi Objective-C++ içinde birleştirilebilir.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar