SORU
14 HAZİRAN 2009, Pazar


Statik yapıcı Objective-C eşdeğer?

Ben yeni Objective C ve I fırsatım olmadı bulmak varsa eşdeğer bir statik oluşturucu dili, statik bir yöntem içinde bir sınıf olacak otomatik olarak aramadan önce ilk örneği bu sınıf örneği. Ya Başlatma kendimi kodu aramam gerekiyor mu?

Teşekkürler

CEVAP
14 HAZİRAN 2009, Pazar


initialize yöntemi denirotomatik olarakbir sınıf, her sınıf önce ilk defa kullanılan yöntemler kullanılır veya örnekleri oluşturulur. Asla initialize Kendin aramalısın.

Ben de bu yolda seni ısırabilir öğrendiğim bir şey aktarmak istedik: initialize alt sınıflar tarafından miras alınır ve ayrıca kendi initialize sağlamayan her alt sınıflar denir. Bu initialize singleton başlatma saf bir şekilde uygularsanız, özellikle sorunlu olabilir. Peki çözüm gibi sınıf değişkeni türünü kontrol etmek için:

  (void) initialize {
  if (self == [MyParentClass class]) {
    // Once-only initializion
  }
  // Initialization for this class and any subclasses
}

NSObject gökyüzünden inen tüm sınıflar Class nesneyi döndürmek class -class yöntemler de var. Her sınıf için bir Sınıf nesnesi olduğundan, == operatörü ile eşitliği test etmek istiyoruz. Bu sadece bir kez daha, bir kez karşı verilen bir sınıf aşağıda bir hiyerarşi henüz mevcut olmayabilir) ve ayrı her sınıf için ne yapılması gerektiği süzmek için kullanabilirsiniz.

Teğetsel bir konu hakkında, eğer sığınak değil aşağıdaki ilgili yöntem, zaten: öğrenmeye değer


Düzenleme:Bu mesaja bakın@bbumdaha initializehakkında açıklayan: http://www.friday.com/bbum/2009/09/06/iniailize-can-be-executed-multiple-times-load-not-so-much/

Ayrıca, Mike Ash initialize load yöntemleri hakkında yeterince detaylı bir Cuma soru cevap yazdı: https://www.mikeash.com/pyblog/friday-qa-2009-05-22-objective-c-class-loading-and-initialization.html

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ODN

    ODN

    26 Kasım 2006
  • ThePhestor

    ThePhestor

    22 Mart 2011
  • Ty Moss

    Ty Moss

    20 Kasım 2007