"Enter"a basıp içeriğe geçin

Etiket: objective C

Core Data verisini dolu kullanmak – iOS

İlk ve tek ücretli iOS uygulamamız Ebruli Osmanlıca Sözlük’ün son sürümündeki bazı teknik sıkıntılar nedeniyle epey kötü yorum almış bir developer olarak diğer işlerimden vakit ayırıp bu sorunlu versiyonu düzeltmeye karar vermiştim. Yılbaşında bu fırsatı değerlendirip kodu gözden geçirmiş, sorunlu yerlerin civatalarını sıkılaştırmıştım ama istediğim gibi olmamıştı. Araya bir de gâvurların noel tatili girince uygulamayı AppStore’a gönderememiştim. Bu gece Ebruli’yi kökünden halletmeye karar verdim. Sorun şuydu: Uygulamanın son versiyonunda Apple’in kendi veritabanı sistemi olan Core Data’yı kullanmak istemiştim. Core-Data’nın kendisi de zaten SQLite tabanlı bir sistem ama kötü bir kod olmasın, abudik gubidik sqlite işlemleri yapmayayım diye bu yolu seçmiştim.…

Tam PHP’yi bırakıyordum ki…

laravelPHP’yi ilk bırakmaya başladığım sene 2010 idi sanırım. Mesleğimin 10. yılında bırakırım, artık kendimi mobil dünyaya veririm diyordum. Kısmen öyle de olmuştu, iyi kötü iOS için uygulama yazmayı öğrenmiştik. Bir iki uygulama yayınladık. Oh artık PHP yazmayacağım derken ofisteki işimiz icabı Tercih.Tv‘yi sil baştan yazmak bize düştü. O zamanlar Slim PHP Framework ile yeni tanışmıştık, onun gazıyla Tercih.Tv’yi api’li olarak yazdık. Api’si boşa akmasın diye de hemen iOS uygulamasını da yazdık.

Daha sonra da bir kaç kere PHP’yi bıraktığımı söyleyip durdum. Fakat öyle büyük konuşmuşum ki bir keresinde kendimi hiç ama hiç bulaşmak istemediğim bir projenin satırları arasında buldum. Üstelik kendi ofisimde, kendi masamda bile değildim. Baya baya müşterinin ayağına kadar düşmüş, ne yazdırmak istediğini bilmeyen, bileni de dinlemeyen muhataplarımızla dolu dolu 15 gün geçirmiştik. Ama bu kan ve göz yaşı dolu maceradan zıpkın gibi fişşek gibi bir yazılımcımız doğmuştu: Mustafa Alkan. Zira bütün kodu bu genç arkadaşa yıkmıştım. Adamcağız  Yiğit Özgür’ün “Konuşmayı Söken Bebek” karikatüründeki gibi gözümün önünde developer olmuştu.

UIScrollView içine UIButton mu koydunuz.. Yaklaşın…

Hazırlamakta olduğum bir haber uygulaması için klasik manşet fotoğrafları bölümünün (yanyana n tane fotoğraf, sağa-sola kaydırılarak geçiş yapılıyor) beni bu kadar uğraştıracağını sanmıyordum. Nitekim bu işlevi elde etmek kısa sürmüştü. Uygulamanın diğer kısımlarından olan haber detay ekranını tamamladığımda manşet fotoğrafına tıklanma işini de kotaracaktım. Manşet bölümü UIScrollView içerisine yerleşmiş n tane UIImageView’dan oluşuyor. UIScrollView sağa-sola doğru kaydırıldıkça fotoğraflar ekrana geliyor. Bunların üzerine aynı ebatta birer tane görünmeyen UIButton eklediğimde bu sorunu çözeceğimi sanmıştım. Ne hikmetse eklediğim butonlar (farketmeniz için boylarını kısalttım ve yeşil transparan renk ile kapladım) dokunulduğunda tepki vermiyordu. İçinde bulundukları UIScrollView “bana dokunabilirsin, ama çocuklarıma asla!” diyordu. Google’ı…

XCode #pragma mark ne işe yarar?

Deneme yanılma ile öğrendiğim küçük ama faydalı bir Xcode özelliğinden kısaca bahsedeyim; çok seveceğinize eminim. Xcode’da kodlama yaparken herhangi bir yerde #pragma mark Burası Kodun Falanca Kısımları İle İlgilidir gibi bir ibare yazarsanız Xcode’un üst kısmındaki “Jump Bar” (kodun ilgili kısımlarına hızlıca dalma için kullanılıyor) alanında fonksiyonlar sizin belirttiğiniz açıklamalarla birlikte yer alıyor. “#pragma mark” ile fonksiyonları sadece başlıklar ile değil düz yatay çizgilerle de ayırabilirsiniz. Bunun için; #pragma mark – ifadesi yeterli..

NSNotification BAD_ACCESS verince..

İki gündür uğraştığım sorunun çözümüne nihayet ulaştım. Kısaca problemi anlatayım, başınıza gelirse demedi demezsiniz 🙂 UIButton’dan ürettiğim içinde timer olan özel bir class’ım vardı. Bu class’ın initWithFrame methodunda bir notification observer’i yani uygulamadan bir notification gelince cevap verecek fonksiyonu tanımlayan şu satır yer alıyordu. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ilgiliFonksiyon:) name:@”ilgiliNotification” object:nil]; Bu buton tipinden 3-4 tane oluşturup program ile ekrana yerleştiriyordum. Bu butonlara tıklandığında ekranda farklı işlemler oluyordu, mutlaka onlar da durumu etkiliyordu ama şimdi o detaylara girmeyeceğim. Butonlara hiç tıklamazsam ve ekranda herhangi bir şeyi değiştirmezsem sadece notification fırlatacak işlemleri yaptığımda uygulama sorunsuz çalışıyordu. Butonlar notification’lara düzgün tepki veriyordu. Fakat…

NSIstanbul Etkinliği

Bir kaç haftadır evden çalışıyorum. Garip ama bazan bir işe konsantre olup bitirmek için ofis en kötü ortam olabiliyor. Evde daha az insan olduğu için etkileşim (goygoy) daha sınırlı kalıyor demek ki 🙂 Bu yoğun tempoya hem mesai arkadaşım, hem de kuzenzadem olan genç developerlardan Hüseyin Kabil de dahildi. Sabahlara kadar o controller senin, bu view benim bir yandan kod temizliyor, bir yandan da yenilerini yazıyorduk. Hüseyin’in baskısı ile geçtiğimiz pazar günü koda ara verip Levent’teki Girişim Fabrikası’nda yapılan NSIstanbul etkinliğine gitmeye karar verdik. Amerikadan henüz dönen hayınçom Fehim Tabak da bizleydi. Eşim Şahika gelemedi, zira bir gün öncesinden Modanisa’nın…

Objective-C Arkaplanda Ses Çalma – Audio Session

Uygulamanızda audio özellikleri kullanıyorsanız, yani bir servisten veya bir dosyadan ses oynatıyorsanız uygulamayı kapattığınızda arkaplanda sesin devam etmesini isteyebilirsiniz. Bunun için yapılması gereken işlem oldukça basit. Öncelikle uygulamanızın plist dosyasına  “UIBackgroundModes” nodu ekleyip karşısına “audio” yazmak lazım (Xcode bu yazdıklarınızı sürümüne göre başka kelimelerle otomatik olarak değiştiriyor, şaşırmayın). Sonra uygulamanızın AppDelegate.m dosyasındaki init veya applicationDidFinishLaunching fonksiyonlarından birine şu kodu yazıyorsunuz. -(id) init { [[AVAudioSession sharedInstance] setDelegate: self]; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; }

AFNetwork Expected content type hatası

Geçen yıl başladığım bir uygulamayı tamamlamaya niyetlendim. Uygulamanın bir kısmında RSS okumam icab ediyordu. Bunun için AFXMLRequestOperation kullandım fakat sürekli olarak “Expected content type” hatası verip listelediği application/xml, text/xml tiplerinden biri olması gerektiğini bağırıp durdu. Google’da aratınca öğrendim ki AFNetwork kütüphanesinde AFXMLRequestOperation.m dosyası içerisinde hangi xml dosya tiplerini kabul ettiğine dair yukarıdaki listenin tutulduğu bir fonksiyon varmış: + (NSSet *)defaultAcceptableContentTypes { return [NSSet setWithObjects:@”application/xml”,@”application/rss+xml”, @”application/atom+xml”, @”text/xml”, nil]; } Bu kısma benim çalıştığım RSS dosyasının tipi olan application/rss+xml’i de eklediğimde sorunum çözülmüş oldu.

Objective-C’de Mail Gönderme Modal’ı Kullanmak

Bazı uygulamalarda gördüğümüz mail gönderme modalını hazırlamak çok basitmiş. Evvela projeye  MessageUI.framework framework’ünü eklemek gerekiyor.  Sonra mail modalını kullanacağımız ekranın OrnekViewController.h dosyasında aşağıdaki dosyaları yüklemek ve  ayrıca mail gönderme işlemleri ile ilgili delegate fonksiyonlarını da bu class’da kullanabilmek için MFMailComposeViewControllerDelegate ifadesini kullanmak gerekiyor. #import <UIKit/UIKit.h> #import <MessageUI/MessageUI.h> #import <MessageUI/MFMailComposeViewController.h> @interface OrnekViewController : UIViewController<MFMailComposeViewControllerDelegate>{ } @end Daha sonra OrnekViewController.m dosyasında şu iki fonksiyonu kullanmak yeterli.. – (IBAction)actionEmailComposer{ if ([MFMailComposeViewController canSendMail]) { MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init]; mailViewController.mailComposeDelegate = self; [mailViewController setSubject:@”Mail Konusu”]; [mailViewController setMessageBody:@”mesaj” isHTML:NO]; [self presentViewController:mailViewController animated:YES completion:nil]; } else { NSLog(@”Mail gonderilemiyor”); } } -(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error{ [self…

Mobilist’ten iOS Uygulama Geliştirme İpuçları

Geçen ay (21 Nisan) Bahçeşehir Üniversitesi’nde yapılan Mobilist – Mobil Uygulama Geliştirme Konferansı’nda aldığım bazı notları kaynakları ile birlikte yayınlamak istiyorum. Konferans’da iOS konusunda Sarp Erdağ, Taylan Pince ve Emrah Ayanoğlu konuşma yaptılar. Bilhassa Sarp Erdağ (Hızlı iOS ve Mac uygulama geliştirme) ve Taylan Pince’nin (iOS ve XCode Üzerine Pratik Öneriler) sunumları çok ilgimi çekti. Sarp Erdağ’ın sunumundan aldığım notlar: Uygulama inceleme siteleri: App Annie, 148Apps, Distimo Uygulamanızı minimum ihtiyaçları karışlayacak şekilde hızlıca çıkarın, sonraki güncellemelerle diğer özellikleri ekleyin. Geliştirme safhasını kısa tutun Arayüz sade ve kullanışlı olsun, abartılardan, karmaşık detaylardan kaçının Kimler nasıl mobil arayüzler hazırlamış diye inceleyin: pttrns.com…