← XcodeKit

Temeller

XcodeKit Dokümantasyonu

XcodeKit kullanarak Xcode kaynak editörü uzantıları oluşturmanın ve test etmenin temelleri.


Kaynak Editörü Uzantısı Oluşturma

Makale | XcodeKit

Xcode projenize bir kaynak editörü uzantısı ekleyin ve yapılandırın.

XcodeKit kullanarak Xcode'daki kaynak editörüne uzantılar oluşturursunuz. Kaynak editörü uzantıları, bir kaynak dosyanın içeriğini okuyup değiştirebilir, ayrıca editör içindeki mevcut metin seçimini de okuyup değiştirebilir.

Bir kaynak editörü uzantısı oluşturmak için, Xcode'da yeni bir macOS projesi oluşturarak başlayın. Aşağıdaki şekilde gösterildiği gibi projenize yeni bir Xcode Kaynak Editörü Uzantısı (Source Editor Extension) hedefi ekleyin ve istendiğinde ilişkili şemasını etkinleştirin. Projeniz artık kaynak editörü uzantıları şablonundan dosyalar içeren ek bir kaynak klasörü içerir.

Uzantınız Xcode içinde çalıştığı için, projenizdeki her hedef için geliştirme imzalamayı (development signing) etkinleştirmeniz gerekir. Geliştirme sırasında projeler için kod imzalama hakkında daha fazla bilgi için App Distribution Quick Start sayfasına bakın.

Farklı proje hedeflerini gösteren Xcode ekran görüntüsü. Mevcut hedefler arasında, Xcode Kaynak Editörü Uzantısı seçilidir.

Yeni uzantınızdaki şablon SourceEditorCommand sınıfını oluşturur. Bu sınıf, kodunuzun XCSourceEditorCommand protokolüne uymasını sağlar, böylece Xcode bir komutu kodunuzla ilişkilendirebilir. perform(with:completionHandler:) yöntemi, uzantınızda tanımlanan komutları işlemek için giriş noktasıdır. Bu yöntem, bir kullanıcı Editör menüsünden uzantınızın komutlarından birini her seçtiğinde çağrılır.

perform(with:completionHandler:) yönteminin gövdesini doldurarak kaynak editörü uzantınıza özelleştirilebilir davranışlar ekleyin. Aşağıdaki örnek, bir kaynak editöründeki satırların sırasını tersine çeviren bir komutu göstermektedir:

class SourceEditorCommand: NSObject, XCSourceEditorCommand {
    func perform(with invocation: XCSourceEditorCommandInvocation, completionHandler: @escaping (Error?) -> Void ) -> Void {
        // Mevcut kaynak editörünün içeriğini al.
        let lines = invocation.buffer.lines
        // Bir kopyadaki satırların sırasını tersine çevir.
        let updatedText = Array(lines.reversed())
        lines.removeAllObjects()
        lines.addObjects(from: updatedText)
        // Komutun tamamlandığını Xcode'a bildir.
        completionHandler(nil)
    }
}

Uzantı şablonu varsayılan olarak yalnızca bir komut tanımlayacak şekilde yapılandırılmıştır. Adını değiştirmek veya daha fazla komut eklemek için uzantı hedefinizin Info.plist dosyasını düzenleyin.

Ek komutlar ekleme ve yapılandırma hakkında bilgi için XCSourceEditorCommandDefinitionKey sayfasına bakın.


Kaynak Editörü Uzantınızı Test Etme

Makale | XcodeKit

Kaynak editörü uzantınızı test etmek için Xcode'un özel bir örneğini başlatın.

Kaynak editörü uzantıları, geliştirme aşamasındaki uzantınızdaki hataların geliştirme ortamınıza müdahale etmesini önlemeye yardımcı olmak için Xcode'un ayrı bir örneğinde çalışır.

Geliştirmekte olduğunuz bir kaynak editörü uzantısını, uzantınızın şeması seçiliyken projenizi çalıştırarak test edin. Çalıştırılacak bir uygulamayı seçmenizi isteyen bir iletişim kutusu görünür.

Çalıştırılacak uygulamaların bir listesini içeren bir Xcode iletişim kutusunu gösteren ekran görüntüsü. Seçilen uygulama Xcode'dur.

Xcode'u seçin ve kaynak editörü uzantınız Xcode'un ikinci örneğinin içinde başlatılır. İki Xcode örneğini uygulama simgelerinin arka plan rengine göre ayırt edebilirsiniz. Kaynak editörü uzantınızı çalıştıran Xcode örneğinin, ilk örneğin daha açık mavi arka planı yerine siyah bir arka planı vardır.

Her zamanki mavi arka plan yerine siyah arka planlı Xcode uygulama simgesi.

Uzantınız tarafından tanımlanan komutları test etmek için, test Xcode örneğinde bir kaynak dosya açın. Uzantınız tarafından tanımlanan tüm komutlar, uzantınızın adı altında yuvalanmış olarak Editör menüsünde görünür. Bir komut seçmek, uzantınızda tanımlanan perform(with:completionHandler:) yönteminin, o komuta karşılık gelen bir komut tanımlayıcısını belirten bir komut çağrısıyla çağrılmasına neden olur.

Kaynak editörü uzantınızı test ederken, orijinal Xcode örneği çalışmaya devam eder. Hata ayıklamak veya test ettiğiniz uzantıdan gelen konsol çıktılarını görüntülemek için onu kullanın.


XCSourceEditorExtension

Protokol | XcodeKit

Xcode kaynak editörü uzantıları oluşturmak için uyguladığınız protokol.

protocol XCSourceEditorExtension : NSObjectProtocol

Belirlenen başlatıcı (designated initializer) dahil olmak üzere, herhangi bir Xcode Kaynak Editörü Uzantısı yönteminin hangi iş parçacığında veya kuyrukta yürütüldüğüne dair hiçbir garanti yoktur.

Uzantı Komutlarını Tanımlama

  • var commandDefinitions: [[XCSourceEditorCommandDefinitionKey : Any]]

Xcode tarafından komut adlarını bir uzantıdaki uygulamalarıyla ilişkilendirmek için kullanılan komut tanımları dizisi.

Uzantı Başlatmalarını İşleme

  • func extensionDidFinishLaunching()

Uzantıya başarıyla başlatıldığını ve editör komutlarını almaya başlayabileceğini bildirir.

commandDefinitions

Örnek Özelliği

Xcode tarafından komut adlarını bir uzantıdaki uygulamalarıyla ilişkilendirmek için kullanılan komut tanımları dizisi.

optional var commandDefinitions: [[XCSourceEditorCommandDefinitionKey : Any]] { get }

Uzantı hedefinizin Info.plist dosyasında belirtilen komut tanımlarını geçersiz kılmanız (override) gerektiğinde bu özelliği uygulayın. Bu özelliğe hangi iş parçacığında veya kuyrukta erişildiğine dair hiçbir garanti yoktur.

extensionDidFinishLaunching()

Örnek Yöntemi

Uzantıya başarıyla başlatıldığını ve editör komutlarını almaya başlayabileceğini bildirir.

optional func extensionDidFinishLaunching()

Bu yöntemin hangi iş parçacığında veya kuyrukta çağrıldığına dair hiçbir garanti yoktur.

XCSourceEditorCommandDefinitionKey

Yapı

Bir kaynak editörü komutunu tanımlayan sözlükteki bir anahtar.

struct XCSourceEditorCommandDefinitionKey

Kaynak editörü komutları, bir Xcode Kaynak Editörü Uzantısının Info.plist dosyasındaki NSExtensionAttributes anahtarının altındaki XCSourceEditorCommandDefinitions anahtarı altında bir sözlük dizisi aracılığıyla tanımlanır. Komutlar ayrıca bir uzantının XCSourceEditorExtension protokolüne uygunluğundaki commandDefinitions özelliği aracılığıyla da belirtilebilir.

Bir Komut Tanım Sözlüğünü Doldurma

  • static let classNameKey: XCSourceEditorCommandDefinitionKey

Özniteliklerinde kaynak editörü komutunun sınıfı.

  • static let identifierKey: XCSourceEditorCommandDefinitionKey

Özniteliklerinde kaynak editörü komutunun tanımlayıcısı.

  • static let nameKey: XCSourceEditorCommandDefinitionKey

Özniteliklerinde kaynak editörü komutunun adı.

Ham Bir Dize Kullanarak Anahtar Oluşturma

  • init(rawValue: String)

Belirttiğiniz dize değerini kullanarak bir kaynak editörü komutu için anahtarı oluşturur.

Tip Özellikleri

  • static let systemSymbolNameKey: XCSourceEditorCommandDefinitionKey

Sistemden komutla ilişkili bir SF Sembolü.


XcodeKit Sürüm Sabitleri

API Koleksiyonu

Bir Xcode örneğinde mevcut olan XcodeKit sürümünü belirleyin.

XcodeKit Sürümleri

  • var XCXcodeKitVersionNumber: Double

XcodeKit'in mevcut sürümü.

  • var XCXcodeKitVersionNumber_Xcode_8_0: Double

Xcode 8.0'a dahil edilen XcodeKit sürümü.