Kendimi büyük inek çiftliği kitabını kullanarak objektif-c öğretmeye çalışıyorum, gerçekten harika bir kitap ama bazı yönler beni şaşırtıyor.Objective-C setValue: forKey on c ilkel türleri
Geçerli bölüm, setOalue: forKey işlevini kullanmaktan bahsediyor, anladığım NSObject öğesinde tanımlanmış bir yöntem. kitap int veya şamandıra gibi ilkel ac bu kullanabilir söylüyor ve bu örnek verir
Ben Cihaz ve içinde adlandırılan özel sınıf voltajını saklayan gerilim adında tamsayı örneği değişkendir var geçerli cihaz Ben adlı yeni cihaz başlatmak bir
appliance *a = [[appliance alloc]init];
[a setValue:[NSNumber numberWithInt:240] forKey:@"voltage"];
o da voltajı için özel ayarlayıcı kurar ve onun o
-(void)setVoltage:int(x) {
NSLog(@"setting voltage to %d",x);
voltage =x;
}
çalışır kanıtlamak için adlandırılan gerilimi kaydeder Bana kafa karıştırıcı olan NSNumber numberWithInt öğesinin, yığınta depolanan bir NSNumber nesnesine bir işaretçi döndürmesi doğru mu? Öyleyse,% d belirtecini kullanarak NSNumber'de depolanan tam sayıyı nasıl günlüğe kaydeder. Anladığım kadarıyla bir tamsayı kaydeder, ancak bir nesneye girilmez mi? ayrıca voltajın bir tamsayı olarak tanımlandığından ve bir şeye bir işaretçi olmadığı için, adresinin hafızasındaki bir nesneyi tutamayacağını düşündüm. ya da NSNumber, aslında bir işaretçi olarak beyan edilen voltaj olmadan bellek adresini tutmaya zorlanıyor mu? Karışıklık için özür dilerim bu bölüm temel olarak benim popomu başlattı.
Normal kodlama uygulamalarında, * bir nesne üzerindeki değerleri ayarlamak/almak için * setValue: forKey: 'veya' valueForKey: 'işlevini kullanmazsınız. Sadece setter/getter'i doğrudan arayın. KVC büyük ölçüde, bağlamalar ve diğer meta programlama biçimleri gibi şeyleri desteklemek için var. – bbum