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

  • Justin Schenck

    Justin Schen

    24 Kasım 2006
  • The Pet Collective

    The Pet Coll

    5 Ocak 2012
  • thegeniuses.tv

    thegeniuses.

    11 Aralık 2006