2010-01-01 18 views
7

Bir nesneyi birden çok kez çağırdığınızda neler olur, bazı gizli yan etkiler var mı? Ek belleğin ayrılmamış olduğunu varsayabilir misiniz? Böyle bir fikre karşı herhangi bir şey gelir miydi?Arama-Objectit-C'de birden çok kez oturum açma

+0

Hayır, bir nesnenin başlatıcısının bellek ayırmadığını varsayamazsınız. Neden ilk etapta olmak istersin? –

+1

Bir nesne oluşturmak ve ilgili kontrolör çıkışına bağlamak için IB'yi kullandım. Bu nesnenin başlatıldığını gözlemledim, bu yüzden + tahsis ve -sinit çağrılmalıydı. Yani soru ortaya çıktı, eğer nesneyi farklı değerler ile tekrar kurabilirsem. – CipherCom

+2

Arabirim Oluşturucusu'nda bir nesneyi başlattıysanız, nesne-düğümde arşivlendiğinden ve uygulama için kullanılabilir hale gelmesi için arşivden kaldırılması gerektiğinden, '-init 'yerine bunun yerine -initWithCoder: işlevini geçersiz kılmanız gerekir. . Alternatif olarak, sadece -awakeFromNib işlevini uygulayın ve istediğiniz noktada istediğiniz ayarları değiştirin. –

cevap

31

-init birden çok kez çağrılması desteksiz, tanımlanmamıştır ve böcek, çöker ve diğer beklenmedik davranışa olacak kurşun.

Birçok sınıflar - NSString örneğin NSArray ve NSDictionary, - aslında +alloc yöntemi denir şey öncelik sırasına sahiptir. Çeşitli -init* yöntemlerinden birinin, sorduğunuz her şeyi yapmanın en etkili yolunu bulmak için nesnenin yeterli içeriğe sahip olduğu söylenene kadar değildir.

3

Bill'in yanıtına eklemek isterim ki, kendi -init yöntemlerinizi yazarken, kod çalışmasında kendilendedir ve yalnızca bir kez yayınlanacağını varsaymayın.

+2

Nesnede hiçbir init yönteminin çağrılmadığını zarif bir şekilde kontrol etmekten nasıl bahsediyorsunuz? – jbat100