2009-05-09 15 views
7

Bir NSMutableArray'ı NSArray'ın kolaylık yöntemiyle yukarıdaki gibi başlatırsanız, bir NSArray veya NSMutableArray alır mısınız?NSMutableArray öğesini başlat: [NSMutableArray array];

Herhangi bir sonuç var mı?

Eğer kullanarak başlatırsanız

+1

Basit bir soru için aşağıdaki ilginç tartışmayı takdir ediyorum. Birkaç ince Kakao puanını taşıyor. –

cevap

11

(I NSMutableArray arrayWithCapacity :, Sadece merak ettim" sahip olduğunu biliyoruz).

NSMutableArray *array = [NSMutableArray array]; 

Bir NSMutableArray almak Objective-C biri büyük bir özelliğidir Bu sınıf yöntemleri alt sınıflar tarafından miras edilir

Yani, bir sınıf yönteminde böyle bir şey yapabilirsiniz:.

+(id)array { 
    return [[[self alloc] init] autorelease]; 
} 

ve self, kodun yürütüldüğü sınıf nesnesine başvurulur (NSArray veya NSMutableArray).

+0

ahh, ilginç. Bu nedenle, Class Object: NSMutableArray öğesinin kendisine başvurur. Bu mantıklı. Kodumun neden kırılmadığını merak ettim! –

+1

Sanırım aslında yapacaksın: [[[self alloc] init] autorelease]; –

+0

Haklısınız, örnek kodu değiştireceğim. – pgb

4

Güncelleme: "Kendiniz test et" tavsiyem genellikle iyi bir fikir olsa da, bu durumda küçük bir tetikleyiciydi. Aşağıdaki önerim, bu sınıflar için iyi sonuç vermediğine işaret eden yorumlarda Jim'e teşekkür ederiz, çünkü NSArray'ın çeşitli formları bir CoreFoundation ücretsiz köprüleme sınıfı tarafından uygulanmaktadır. Böyle bir soruyu cevaplamak için -----

kolay yolu Aşağıda Bağlamında için

----- Orijinal Cevap kendiniz test etmektir. Diziyi merak ettiğiniz şekilde dizine ayırmayı deneyin, ardından kodunuzdan NSLog kodunu ekleyin:

NSLog (@ "% A aldık", NSStringFromClass ([TheArray sınıfı]));

+1

Elbette, bu her zaman 'NSCFArray'ı döndürür? –

+0

Harika nokta Jim. NSArray'ın bu tuhaflığını unuttum. Yanıtımı yukarıda düzenliyorum. Teşekkürler. – danielpunkass

+0

Hmmm giriş sınavı. Yani bir NSMutableArray bile bir NSCFArray'ı geri gönderecek mi? Bu, iç gözlemi gerçekleştirmeyi zorlaştırır ve değiştirmeyi denemeden önce değişken bir nesneyiniz olup olmadığını öğrenir. Bu durumdaToSelector'a cevap verebileceğini tahmin ediyorum. Bir yan not, harika podcast'iniz için teşekkürler. Geri döndüm ve Manton'un geçmiş bölümlerinin çoğunu dinledim. Oldukça eğlenceli ve bilgilendirici. –

İlgili konular