2013-07-09 14 views
6

Şu anda bilgi araştırıyorum..h ve .m dosyaları Objective-c

iş için bazı kodlar üzerinde çalışıyorum ve inceleme sonrasında ben tam bir beyin Fart vardı ve objektif-c .h bir şey ve .m dosyaları yapmak neden hatırlayamıyorum

  1. Dosyalarını neden ithal ettiğimizi ve .h dosyalarındaki yöntem adlarını neden belirlediğimizi merak ediyordum? (İşlemle ilgili olduğunu biliyorum, ancak ayrıntıları hatırlayamıyorum)
  2. Neden bazen dosyaları doğrudan .m dosyasına değil, bazı durumlarda .h dosyasına içe aktarıyoruz.
  3. .H dosyasında bir yöntem bildirdiğinizde bunu yapıyorsunuz çünkü kullandığınız sınıf ve/veya kütüphaneler bunlara da ihtiyacınız var mı?
  4. Herhangi bir kütüphanede veya .h dosyanızda bulunmayan bir yöntemi .m dosyanızda bildirdiğiniz bir durum var mı?

sayesinde herkes hepsi yapılmış anlamda umuyoruz.

+0

Ben aslında yapılan anlamda korkar hiçbiri değilim. :( –

+4

Erm ... bu sadece şimdi yanıtlayan. Mükemmel mantıklı. – Fogmeister

cevap

15
  1. Bir sınıfın genel ve özel bölümleri arasında ayırmak için kullanılır. .m dosyası implementation'dur. Tüm mantık nereye gider, tüm veriler işlenir ve saklanır, vs ... .h dosyası bu sınıfın interface'udur. Tam anlamıyla kendi sınıfınız için bir API gibi. Diğer sınıflara nasıl kullanacağını ve nasıl arabirimle bağlanacağını anlatır. Eğer bir dosyaya başvuru yaparken

  2. Bir sınıfını içe. Arayüzde bir şeye (yani bir mülke) referans verirseniz, onu .h. Sadece uygulamada başvurursanız, bunu .m. .h ilan

  3. Herhangi yöntemler böylece diğer sınıflar bunu çalıştırabilirsiniz orayı biliyor bulunmaktadır. yani kamusal yöntemlerdir. Bir beyanı deneyin ve kaldırın ve sonra bu yöntemi çağırın. Bir uyarı alacaksın.

  4. Hayır, bu mantıklı olmaz. Programınızı yazmanızın bir parçası olmadıkça ve test amaçlı olarak beyan ettiğiniz sürece.

+0

soruya cevabınız 2. Ben ilk kısmı anlıyorum. Bir uygulamaya referans vermekle ilgili ikinci kısmı örnek olarak açıklayabilir misiniz? – Jadex1

+0

"Uygulamada referans" dediğimde, sadece .m sınıfında kullanmak istedim. Örneğin. 'MyCustomClass' adlı bir özel sınıf oluşturursanız ve bir görünüm denetleyicisinde bunu kullanmaya karar verirseniz. Ardından, .m dosyasında içe aktarmanız gerekir. – Fogmeister

3
  1. .m dosyası içine ithalat koyarak onları özel kılan ve .h dosyasında dışına bağımlılıkları tutar Çünkü .h dosyasını sınıfının kamu arayüzü
  2. olduğundan (aşırı bağımlılık ithalatı ve potansiyel circularities engeller)
  3. Bu hizmeti sağladığınızı herkese açık olarak bildirmek üzere yapıyorsunuz
  4. Kullanmıyorsanız, kullanamazsınız (yine de varolmayacağınızı ve daha önce kontrol edeceğinizi bildirebilirsiniz) bunları gerçekten kullanmaya çalışın)
senin .h olarak 2 için ekstra

Bonus olası ithalat minimum sayıda (sadece üst sınıf ve kamuya uygulamak herhangi protokolleri) ve her şey için @class kullanmasını sağlamak için çaba dosya. Bu bağımlılık etkilerini en aza indirir.

+0

bana yardımcı senin açıklama için teşekkür ederiz. Yani .h dosyasında yöntemleri özel tutmak için. – Jadex1

+0

Jadex1 @ ben öyle haklıysam yardımcı olur tutarak .Fogmeister'in dediği gibi, özel olan m dosyası: ".m dosyası uygulamadır. Tüm mantığın nereye gittiği, tüm verilerin işlendiği ve depolandığı vb.". – 0x1ad2