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

  • Blue Lightning TV

    Blue Lightni

    9 EKİM 2011
  • Gavin Hoey

    Gavin Hoey

    21 Aralık 2007
  • wafflepwn

    wafflepwn

    14 AĞUSTOS 2008