Objective-C
- Okunuşu
- ıbcektiv si
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
#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
- SwiftProgramlama Dilleri, s. 31Swift, güvenlik ve hız için tasarlanmış, derlenen ve statik tipli bir dildir; çoğunlukla Apple platformları için uygulama geliştirmede kullanılır.
- CProgramlama Dilleri, s. 3C, belleğe doğrudan erişim sağlayan, derlenen ve düşük seviyeli bir programlama dilidir; işletim sistemlerinde, sürücülerde ve gömülü yazılımlarda kullanılır.
- C++Programlama Dilleri, s. 5C++, C'yi sınıflar ve şablonlarla genişleten; bellek ve performans üzerinde düşük seviyeli kontrolü koruyan, derlenen ve statik tipli bir dildir.
- OOPProgramlamanın Temelleri, s. 41OOP, yani nesne yönelimli programlama, kodu ilişkili verileri onlar üzerinde işlem yapan fonksiyonlarla birleştiren nesneler etrafında düzenleme yöntemidir.
- Çöp toplamaProgramlamanın Temelleri, s. 9Çöp toplama, dil çalışma zamanının programın artık kullanamadığı verileri bulup bu belleği yeniden kullanıma açtığı otomatik bellek yönetimidir.
- NullProgramlamanın Temelleri, s. 40Null, “burada değer yok” anlamına gelen özel bir değerdir; bir değişken bilerek hiçbir nesneye ya da veriye başvurmadığında kullanılır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin