‘ iPhone ’ Adlı Kategori

Heap – Stack

Ekim 28, 10 Yazan: akın

Yazılımlarımızda kullandığımız nesneler ve değişkenler memory’de heap ve stack adı verilen iki bölgede tutulurlar.

Stack kısmında int, float gibi runtime öncesinde tanımlanan veriler tutulurken, Heap bölgesinde ise runtime da oluşturduğunuz nesnelerin, fonksiyonların verileri tutulmaktadır.

Örneğin; Test t = new Test(); şeklinde runtime’da bir nesne tanımladığınızda bu nesne heap bölgesinde tutulup, yazılımınızdan referans almadığı zaman Garbage Collector tarafından temizlenecektir.

Stack bölgesi her zaman heap bölgesine oranla daha hızlı çalışacaktır. C,C++ ve C# dilleri her zaman Main() methodu ile başlarlar. Doğal olarak Main methodun’da tanımlanan tüm değişkenler stack bölgesinde tutulacaktır.

Main bloğundan bir method çağırdığınız zaman ise bu method ve değişkenlerinin hepsi heap bölgesinde tutulacaktır.

String tiplerinde işler biraz değişiyor. String yazi; şeklinde bir değişken tanımladığınız zaman, bu değişken, new ile oluşturulacağı için referans tipi olur ve heap bölgesinde tutulur. Yazılımlarınızda o yüzden string değişkenlerine oldukça dikkat etmelisiniz.

Stack bölgesi LIFO mantığına göre (Last In First Out) dizilir. Heap bölgesinde böyle bir kural bulunmamaktadır.

Yazılımlarınız Heap Size Over gibi bir hata verdiğinde, runtime’da oluşturulan nesnelerin veya değişkenlerin boyutlarının izin verilenden fazla olduğunu bilmelisiniz.

Happy Coding:)

http://fizy.com/#s/1lsv9n

[del.icio.us] [Facebook] [Fark] [Faves] [Furl] [Google] [MySpace] [MyWeb] [Newsvine] [Reddit] [Slashdot] [StumbleUpon] [Windows Live] [Yahoo!] [Email] 

Tespitler

Ekim 26, 10 Yazan: akın

Bu yazımda sağda solda internette gördüğüm bazı tespitlerimi yazmak istiyorum. Bunların hepsi kişisel tespitler olduğundan bir geçerliliği olmadığı gibi kimseye bir yararı da olmayabilir. Hemen tespitlere geçeyim.

Bir süredir var olan uyku problemimi çözmeye karar verdim çünkü vücut direncimin düştüğünü hissediyorum. Nereden mi biliyorum? İkinci kez grip olmak üzereyim. Üstelik c vitamini ağırlıklı beslenmeme rağmen. Kahveyi azaltsam sorun ortadan kalkacak gibi. Hatta bazı girişimlerim de yok değil:p Bugün tüm gün bitki çayı içtim mesela. Hala uykum yok ama bir iki güne kadar bende normal saatlerde yatmaya başlarım heralde.

Bodyworlds sergisine gitmeyenler veya daha önce başka bir ülkede görmemiş olanların mutlaka gitmelerini öneriyorum. Belki çok ilginizi çekmiyor şu anda ama bunun bir resim sergisi olmadığını belirtmek istiyorum. Vücudunuz hakkında detaylı bilgi ediniyor, güncel hastalıkların nasıl oluştuklarını öğreniyorsunuz. Gidin, gezin yani:)

Annemin uzun süreden sonra ziyaretime gelmesi bizi değişik aktivitelere itiyor. Örneğin Cumartesi tiyatroya gideceğiz. Müjdat Gezen sahnesine. Oyunu izleyebilmek için 10 gün önceden biletleri aldık. Yoksa yer bulunmuyor. O yüzden size tavsiyem tiyatro planlarınız varsa 2 hafta sonrasını hedef alarak şimdiden hazırlıklara başlayın:p

tt

Twitter’ın Türkiye’deki kullanımı çok garip. Bazı kullanıcılar, Twitter’ı, genelde “şunu yaptım”, “bunu yapıyorum”, “şu anda buradayım” gibi tweetler göndererek kullanıyorlar. Bazı zeki! tweet’çiler ise genelde atasözü ve özlü söz yazıyorlar. Bunu yapınca da kendilerini zeki zannedip, diğerlerinin zeka yoksunu olduklarını düşünüyorlar. Hatta daha da ileri gidip tweet lememeleri gerektiğini düşünüyorlar. Halbuki Twitter (yukarıda gördüğünüz gibi) çok basit bir soru soruyor: “What’s happenning?” . Şimdi düşünün, bu Twitter’ı, hangi kesim doğru kullanıyor? Karar sizin.

pasta

Son olarak gecenin bu saatinde uyumadan önce kaç kişi şu yukarıdakinden yemek isterdi? Ulaşabileceğiniz bir yerdeyse bu saatte bence hiç bulaşmayın:)

Bir sonraki yazıda görüşmek üzere.

http://fizy.com/#s/1ludh7

[del.icio.us] [Facebook] [Fark] [Faves] [Furl] [Google] [MySpace] [MyWeb] [Newsvine] [Reddit] [Slashdot] [StumbleUpon] [Windows Live] [Yahoo!] [Email] 

iPhone Autosizing

Ekim 22, 10 Yazan: akın

Dün yazdığım Rotation konulu yazıda ekranda kullandığınız controllerin “evrilip çevrilme” esnasında kendiliğinden yer ve boyut değiştirdiğinden bahsetmiştim. Bunun anlamı aslında herhangi bir kod yazmanızın gerekmediği idi. Tek yapmanız gereken Size Inspector’da Autosizing bölümünde ilgili controlünüzün ayarlarnı yapmaktı.

Bugün biraz daha detaya inmek istiyorum. Ekrandaki kontroller, telefon yan yatırıldığında veya dikleştirildiğinde, her zaman muntazam bir şekilde yeni ekrana yerleşmeyebiliyorlar. Ekranınızda çok fazla control kullanmışsanız (button,textbox..vs) telefonun duruşu değiştiğinde birbirlerinin üstlerine girebiliyorlar. Bu sorunu ortadan kaldırmak için biraz elinizi kirletip kod yazmanız gerekiyor.

Rotation anında iPhone arka planda (void)willAnimateRotationToInterfaceOrientation methodunu çağırmaktadır. Bu methodu override edip kendi kodunuzu çalıştırabilirsiniz. Kontrolleri yeni ekranda yerleştirmek için Apple’ın sağladığı Core Graphics classını kullanabilirsiniz.

(void)willAnimateRotationToInterfaceOrientation methoduna aşağıdaki kodu eklerseniz ekranınızda butonunuz istediğiniz noktaya yerleşecektir.

if(intOrientation == UIInterfaceOrientationPortrait || intOrientation == UIInterfaceOrientationPortraitUpsideDown)

{

button1.frame = CGRectMake(20,20,125,125);

}

else

{

button1.frame = CGRectMake(150,20,125,125);

}

Ekrandaki controllerin yerini değiştirmek için frame property’sini kullanmamız gerekiyor. intOrientation değişkeni, methodun aldığı bir parametredir ve telefonun yeni pozisyonunu size bildirmektedir.

http://fizy.com/#s/1m7bhj

[del.icio.us] [Facebook] [Fark] [Faves] [Furl] [Google] [MySpace] [MyWeb] [Newsvine] [Reddit] [Slashdot] [StumbleUpon] [Windows Live] [Yahoo!] [Email] 

iPhone AutoRotation – AutoSizing

Ekim 21, 10 Yazan: akın

Eski verilerimi kaybetmenin dayanılmaz hafifliğiyle ilk teknik yazımı yazmaya karar verdim.p Aslında tam anlamıyla teknik bir yazı sayılmaz. İçinde bolca kod olmayacak sadece iPhone’larda “rotation” dediğimiz yani telefonu yana yatırma, evirme çevirme hareketlerinin çalışma mantıklarını açıklayacağım.

Böyle bir yazı yazmamın nedeni biraz önce msn’den çok pis laf yemem. Öyle böyle değil:) En basiti şuydu “bir aydır uğraşıyorsun nerde uygulama?” ve daha neler neler.:) (tam bu sırada düzeltme geldi, bir ay değilmiş 3 aydır uğraşıyormuşum!) Hatta aynen şöyle geldi: “1 aymı dedim, 3 ay olacaktı o”.. neyse..

Şu anda bu yazıyı okuyup da iPhone’u eline almamış bir ziyaretçi yoktur heralde? Yoktur tabii. iPhone’lardaki en güzel ve havalı özelliklerden biri telefonu yatırdığınızda veya ters çevirdiğinizde, kısaca evirip çevirdiğinizde telefonun ekranın farklı tepkiler vermesi. Örnek vermek gerekirse forex yazılımlarında borsa bilgilerini görmek için telefonu yana yatırmanız gerekiyor fln..

iPhone ekranın iki modu vardır. Telefonun dikey duruşuna portrait yatay duruşuna ise landscape deniyor. Kullanıcı telefonun duruşunu değiştirdiğinde active viewcontroller yazılımınıza bu harekete izin verip vermediğinizi soracaktır. Eğer sizden YES cevabını alırsa, ekran hemen harekete uygun olarak yatay veya dikey olacaktır. Bu noktada Autosizing devreye giriyor ve telefonun yatay veya dikey olmasına göre ekran içindeki controllerinizin boyutlarını otomatik olarak değiştiriyor. Herşey ne kadar da kendi kendine oluyor değil mi? iPhone’da yazılım geliştirmenin en güzel yanı da bu zaten, ayrıntı bilmenizi istiyor ama ayrıntıları uygulamakla uğraşmanızı istemiyor.

Sanırım bu sorma işleminde telefonun duruşunun değiştiğini ve kendinize özel kodları yazmaya başlayabileceğinizi belirtmeme gerek yok. Mesela ekranın değişmesi için yapmanız gereken “comment” lenmiş kodları çalışır hale getirmeniz gerekir. Yani (BOOL)shouldAutorotateToInterfaceOrientation methodunu çalışır hale getirmeniz yetecektir.

Bu method aynı zamanda bir parametre almaktadır. interfaceOrientation parametresi telefonun hangi yöne dönderildiğini size verecektir. Bu bilgi ile daha spesifik özellikler ekleyebilirsiniz.

Son olarak, size gelen parametrenin hangi bilgileri içerebileceğiniz belirteceğim. Parametre telefonun dönderilişine göre 4 değer alacaktır.

- UIInterfaceOrientationPortrait // Telefonun normal duruma gelmesi

- UIInterfaceOrientationPortraitUpsideDown // Telefonun ters çevrilme durumu. Apple bu hareketi pek önermiyor

- UIInterfaceOrientationPortraitLandscapeLeft // Sola yatırılması

- UIInterfaceOrientationPortraitLandscapeRight // Sağa yatırılması

Unutmadan şunu söylemek istiyorum, Landscape modunda, telefonun statusbar ı ortadan kaybolacaktır. Yani pil durumu, saat bilgisi gibi bilgiler ekrandan gidecektir. Kullanıcının bu bilgilerden mahrum kalacağını hep dikkate alın!

Happy Development..

http://fizy.com/#s/1d3b7w

[del.icio.us] [Facebook] [Fark] [Faves] [Furl] [Google] [MySpace] [MyWeb] [Newsvine] [Reddit] [Slashdot] [StumbleUpon] [Windows Live] [Yahoo!] [Email]