[]

objective-c release\autorelease

merhaba arkadaşlar,
Türkçe kaynak fazla olmadığı için ve benim de ingilizcem pek iyi olmadığı için bu memory management olayını pek anlayamadım. daha önce c# kullandığım için böyle şeylerle uğraşmamıştım daha önce :)

şimdi sormak istediğim şey şu: bir harita nesnesi üzerine pin'ler yerleştiriyorum. her pin benim kendi oluşturduğum bir nesne (haritaya yerleştirilen pin nesnesinden türemiş bir nesne). bu nesneleri de başka bir class'ın geri dönüş tipi pin olan bir method'unu çağırarak oluşturuyorum.

bir for döngüsü içinde 10 tane nesne oluşturunca sorun olmuyor ama 1000 tane nesne oluşturduğum zaman program açılıyor ama ekranda biraz hareket ettiğim zaman program sonlandırılıyor. sanırım bunun sebebi memory'nin dolması yüzünden olsa gerek.

tahminime göre bu problemin çözümü de oluşturduğum nesneneri release etmediğim için oluyor. aslında etmek istiyorum ama edemedim bir türlü. çünkü nesneyi bir class içindeki method'da oluşturduğum için return'den önce release etsem olmaz, return'dan sonrasına zaten kod geçmiyor. nesneyi oluşturduğum for döngüsü içinde ise release edemiyorum. autorelease diyorum ama bu autorelease ne işe yarar onu da anlayamadım.

ama aklıma takılan bir başka şey ise, şimdi ben nesnemi oluşturdum, bu nesneyi haritaya koydum ve release ettim diyelim. o zaman haritadaki nesneye tıklandığı zaman o nesneye erişemem sanırım değil mi? ya da galiba benim sorunum release edip etmemekle değil telefonun kısıtlı hafızasına çok yüklendiğim için oluyor.

 
uykusuzluktan sorunu tam idrak edemedim ama ingilizcene kuvvet diyorum :

stackoverflow.com

edit : burada da basic memory management bölümüne bakman yrinde olur

cocoadevcentral.com
  • kimlanbu  (11.07.11 10:42:05 ~ 10:44:19) 
Teşekkürler, stackoverflow'dakine ingilizcem yetmez sanırım :)
diğeri de tam olarak dediğimi karşılamıyor, youtube'da da bir şeyler varmış. Akşam eve gidince bir de onlara bakayım :)

  • barix  (11.07.11 10:47:42) 
selam,

"bu nesneleri de başka bir class'ın geri dönüş tipi pin olan bir method'unu çağırarak oluşturuyorum." demissin, metod hangi metod acaba? init veya copy ile baslayan bir metodsa release etmen gerekir. ayrica for dongusunde 1000 tane pin olusturuyorsan autorelease in ise yaramasi icin autoreleasepool olusturmanda fayda var, her seferinde autoreleasepool u da bosalt ki nesne release edilebilsin.

ayrica metodlarin son satirinda return [pin autorelease]; seklinde de gonderdigin nesneyi daha sonra autorelease edilecek sekilde gonderebilirsin.

biraz gecmis uzerinden ama umarim faydasi olur.
  • bushwacker  (27.04.12 17:10:51) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.