SORU
18 HAZİRAN 2009, PERŞEMBE


Neden'İ ilan t *ile NSİnteger yok

İTunes U Stanford iPhone dersinde elimi çalışıyorum ve biraz işaretçiler hakkında kafam karıştı. İlk atama, böyle bir şey yapmaya çalıştım

NSString *processName = [[NSProcessInfo processInfo] processName];
NSInteger *processID = [[NSProcessInfo processInfo] processIdentifier];

Bir hata, etrafta körü körüne tinkeing sonra üretilen, sorun çıkaran NSİnteger satırında * olduğunu keşfetti.

Açıkçası ne oluyor anlamıyorum. Bence işe yarar nasıl anlatırım ve belki de birileri kusur işaret etmek yeterli olacaktır.

Web geliştirme aksine, ben şimdi ihtiyacım var bellek hakkında endişe, iyi, web geliştirme daha çok. Bu yüzden ne zaman ben bir değişken oluştur, bir tahsis olur bir yerde bit bellek (RAM varsayıyorum). Geçen yerine etrafında değişken bir işaretçi geçiyorum bellek bit civarında. Ve göstericiler isime tarafından ilan edilir * değişken adı.

Haklı olduğumu varsayarsak, ne beni sasirtiyor neden NSİnteger için olması gerekmez mi?

CEVAP
18 HAZİRAN 2009, PERŞEMBE


NSInteger demek ki ilkel bir türüdüryerel olarak saklanabilir yığında. Erişmek için bir işaretçi kullanın gerek yok, ama isterseniz yapabilirsiniz. Satır:

NSInteger *processID = [[NSProcessInfo processInfo] processIdentifier];

gerçek bir değişken adresini döndürür. Bunu düzeltmek için, * kaldırmak gerekir:

NSInteger processID = [[NSProcessInfo processInfo] processIdentifier];

Eğer gerçekten istiyorsan NSInteger bir gösterici olabilir:

NSInteger *pointerToProcessID = &processID;

İşareti operatörü adresidir. Değişken tamsayı için hafıza NSInteger değişkenin adresi eşit yerine işaretçi ayarlar.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • audivila

    audivila

    5 HAZİRAN 2009
  • dhcrr's channel

    dhcrr's chan

    2 Ocak 2007
  • Smith Micro Graphics

    Smith Micro

    15 Mayıs 2008