SORU
19 Temmuz 2009, Pazar


Kullanım " için tamam mı;klasik" malloc()/ücretsiz (Objective-C/iPhone uygulamaları?

Bir süre için iPhone geliştirme ile oynamak oldum, ve bir bit olunca garip geliyor olsa da"" . sert çekirdekli NET geliştirici, alışınca o kadar da kötü değil.

Her kitapta Objective-C, okudum sadece bellek yönetimi/release (referans sayma) korumak hakkında konuşuluyor. Eski toprak bir C/C geliştiricisi olarak, ayrılırken garip görünüyor "normal" bir şekilde kullanarak malloc() ve free() sadece bazı dipnotlarda belirtilir.

Biliyorum bu malloc() ve free() Ama eğer yaygın bir uygulamadır merak ediyorum ya da değil, Objective-C,. çalışma Eğer 100 dizisi ayırmak istiyorum, tüm sonra, bu bunu yapmak için en etkili yol gibi görünüyor:

int *array = malloc(sizeof(int) * 100);

memset(array,0,sizeof(int) * 100);

// use the array

free(array);

Bu gerçekten en iyi yoldur, ya da düz C bellek yönetimi kaçınmak gerekir?

CEVAP
20 Temmuz 2009, PAZARTESİ


Benzer görevler için kullanmayı çok seviyorum ki Objective-C sarıcı etrafında raw bellek: NSMutableData. Dizinin kolayca büyüyebilir artı/release mülkiyeti muhafaza (realloc kendiniz yapmak zorunda kalmadan) vermenin yararı vardır.

Sizin kod gibi görünecektir:

NSMutableData* data = [NSMutableData dataWithLength:sizeof(int) * 100];
int* array = [data mutableBytes];
// memory is already zeroed

// use the array

// decide later that we need more space:
[data setLength:sizeof(int) * 200];
array = [data mutableBytes]; // re-fetch pointer in case memory needed to be copied

// no need to free
// (it's done when the autoreleased object is deallocated)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • My name is Festis and I'm free

    My name is F

    2 EKİM 2011
  • Influencer Plus

    Influencer P

    2 Ocak 2013
  • Learn Math Tutorials

    Learn Math T

    20 Kasım 2011