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

  • Elly

    Elly

    3 EKİM 2005
  • Flash CS6 Video Tutorials for Beginners (Actionscript 3 Gaming)

    Flash CS6 Vi

    14 EYLÜL 2012
  • HER0R

    HER0R

    16 Aralık 2007