Pazar, Aralık 15, 2013

XCode Bölüm 02 – Sınıflar ve Temel Yapılar

Merhaba,

Bir önceki yazımızda (XCode Bölüm 01) iOS platformunda uygulama geliştirebilmek için kullanılan XCode IDE ‘sine nasıl erişebileceğimizi ve platformun görsel olarak nasıl bir görüntüye sahip olduğunu, projeyi ve emulatörü nasıl çalıştırabileceğimize göz gezdirmiştik.

Bu yazımızda ise pratikte iOS programlanın sınıf dosyalarına ve mimari yapısına göz atıyor olacağız. Yeniden bir proje oluşturmuyor ve bir önceki örneğimizdeki Boş demo projesinden devam ediyorum.
Öncelikle proje içerisinde yer alan sınıf dosyalarının isimlerine göz atalım.

Sınıf Dosyaları (Class Files)

Boş demo projesini oluşturduktan / açtıktan sonra sol bölümde proje dosyalarını görebiliyoruz. (Visual Studio kullanan arkadaşlar var ise Solution Explorer bölümünün görevini yapmaktadır.)

Blogpost1

AppDelegate.h
AppDelegate.m

ViewController.h
ViewController.m

Main.StoryBoard
    Main_iPhone.StoryBoard
    Main_iPad.Storyboard

Şimdi dosyalara göz attığımız da; AppDelegate sınıflarında uygulama seviyesindeki (Application Level) konmutları ekleyebilir ve kullanabiliriz. Bu sınıflar iOS uygulamalarını temsil eder.

AppDelegete sınıfının .m ve .h dosyalarından oluştuğunu göreceğiz. Bu dosyalar C++ kullananlar var ise hatırlayacağınız üzere .h dosyalarında Header file ‘ları (referanslar gibi düşünebilirsiniz) çağırır. .m ise implementasyon (implementation) dosyalarını çağırır.

ViewController adından da anlaşılacağı üzere form üzerinde yer alan objelerin bulunduğu dosyalardır.

Bir de görsel olarak grafikle göstermek gerekirse alt kısımdaki gibi olacaktır.

your_xcode_project_app_flow

Peki AppDelegate ve ViewController dan bahsettik. Ancak Main.Storyboard dosyalarından bahsetmedik. Bu nedir?

StoryBoard

ViewController sınıflarından yararlanan ve görsel objelerimizin bulunduğu bölümdür. Uygulamanın görsel görünümü ile ilgili olarak nesneleri ekleyebileceğimiz, sonuçlarını görebileceğimiz bölümdür.

Main.StoryBoard, ViewController sınıfları ile yönetilebilir kodların kullanılması mümkündür.

Main.StoryBoard, XCode IDE‘sin de InterfaceBuilder alanında yer almaktadır. ViewController.h sınıfı ile referans dosyalarını ve hazırladığımız metodları kullanabilriz.

 

BlogpostPic03 

Görsel olarak görmek gerekirse alt kısımda yer aldığı şekilde olacaktır.
Form üzerine ekleyebileceğimiz kontroller ise IDE ‘nin sağ alt kısmında yer almaktaıdr. Sürükleyip bırakmanız yeterlidir. Form üzerine kontrolleri eklerken hizamaları konusunda IDE yardımcı olmaktadır.

BlogPostPic04

Peki, bu sınıflar birbirleri ile nasıl ilişkili diye aklımıza bir soru takılıyor. Bunu da alt kısımda yer alan basit akış şeması cevaplamaktadır.

your_xcode_project_classes

Şimdi bu kadar konuyu incelediğimizde kafamıza çok geleneksel ama bir o kadar da önemli bir soru takılıyor. Bu uygulamanın objeleri canlı ortamda nasıl çalışıyor.

Uygulamalarınız canlı ortamda diğer bir çok uygulamalar gibi bellek üzerinde oluşmaktadır. Uygulamanın hata vermesi durumunda bellekte kullanmış olduğu alanı serbest bırakmaktadır. Eğer multi tasking bir uygulama geliştiriyor iseniz ise uygulama arka planda bellek kullanmaya devam etmektedir. Ancak farklı uygulamalar ile bu belleği paylaşabilmektedir. (Güzel bir teknoloji :) )

Daha önceden uygulama geliştiriciler eklemiş oldukları referansları ve kullanmış oldukları bellekleri boşaltmak / serbest bırakmaları gerekmekteydi. Daha şu anda güncel kullandığımız IDE lerde otomatik olarak referansları sayıyor ve gerekli temizlik işlemlerini sağlıyor. Sadece projeyi oluştururken Automatic Reference Counting seçeneğinin seçilmiş olması gerekiyor.

Yazımızın burada sonuna geliyoruz. Objective C ‘inin gelişimini ve bunu başımıza kimler sarmış diye merak edenler için wikipedia da yer alan yazıyı okuyabilirsiniz. (Yazının dili Türkçe dir)

http://tr.wikipedia.org/wiki/Objective-C
Umarım yararlı olabilmiştir.

--

TT

C/C++ & Objective C – Yazımsal Benzerlikler

Merhaba,

Objective C ‘ye merak salmış bir çok kimse C ile arasındaki farkları merak etmiş ve incelemiştir. C ya da C++ tecrübesi olan kişiler ise aradaki basit farkları görmüştür.

En temel anlamda yazımsal farklılıklara alt kısımda yer alan görüntü ile sizde mükayese edebilirsiniz.

Ekran Resmi 2013-02-11 01.17.24

Aslında çok benziyor değil mi? :)

İyi günler dilerim.

--

TT

Çarşamba, Aralık 11, 2013

Visual Studio 2013 – Tema Değişikliği (Color Theme)

Merhaba,

 

Visual Studio 2010 sonrasında çıkan editörleri inceleme ve kullanma şansım olmamıştı. Son bir kaç haftadır Visual Studio 2013 ile geliştirmeler yapıyordum. Çok hoşuma giden bir özelliğini sizler ile de paylaşmak istedim.

 

Uygulama geliştirirken, özellikle de dos ortamında uygulama geliştirmiş ya da 6-8 ay da olsa üniversite de ders almış arkadaşların Siyah arka plana bir vaafı vardır. Bunu gören Microsoft ‘ta bizlere güze temalar çıkartmış. Visual Studio arayüzünü ve kod geliştirme ekranında renksel değişikliklere olanak tanıyor.

 

Bu güzel özelliklerden bir kaç ekran görüntüsü alt kısımda yer aldığı şekildedir.

 

image

 

image

 

Kolay gelsin.

--

TT

Microsoft .Net Framework 4.0 & 4.5 – Full Download

Merhaba,

 

.Net ile yazılım geliştiricilerin özelliklede Framework 4.x ile geliştirenlerin başlıca sorunu kurulum dosyası hazırladıklarında .Net Framework ‘ü kurmak için internete bağlanmalarıdır. Çünkü kurulum dosyaları 2-3 MB arasıdır. Yavaş internet kullanıcılarında ve kurumsal şirketlerde projelerin çok ama çok geç kurulmasına sebep olmaktadır. Bu sebepten ötürü sizlere .Net 4.x Framework ‘lerin tam kurulabilir paketlerinin linklerini sizlere sunuyorum. Umarım yararlı olur.

 

.Net Framework 4.0

.Net Framework 4.5

 

Umarım yararlı olur.

--

TT

Sharepoint – Lokalizasyon (LCID) Kodları

Merhaba,

 

Geçen günlerde ilgilendiğim bir proje ile ilgili Localizasyon kodlarına gereksinim oldu. Elimin altında olması ve gerekirse sizlere de kolaylık sağlayabilmesi amacıyla alt kısımda bu listeyi paylaşıyorum.

 

Listenin alındığı orjinal adres: http://msdn.microsoft.com/en-us/goglobal/bb964664 şeklindedir.

Language - Country/Region LCID Hex LCID Dec
Afrikaans - South Africa 0436 1078
Albanian - Albania 041c 1052
Alsatian 0484 1156
Amharic - Ethiopia 045e 1118
Arabic - Saudi Arabia 0401 1025
Arabic - Algeria 1401 5121
Arabic - Bahrain 3c01 15361
Arabic - Egypt 0c01 3073
Arabic - Iraq 0801 2049
Arabic - Jordan 2c01 11265
Arabic - Kuwait 3401 13313
Arabic - Lebanon 3001 12289
Arabic - Libya 1001 4097
Arabic - Morocco 1801 6145
Arabic - Oman 2001 8193
Arabic - Qatar 4001 16385
Arabic - Syria 2801 10241
Arabic - Tunisia 1c01 7169
Arabic - U.A.E. 3801 14337
Arabic - Yemen 2401 9217
Armenian - Armenia 042b 1067
Assamese 044d 1101
Azeri (Cyrillic) 082c 2092
Azeri (Latin) 042c 1068
Bashkir 046d 1133
Basque 042d 1069
Belarusian 0423 1059
Bengali (India) 0445 1093
Bengali (Bangladesh) 0845 2117
Bosnian (Bosnia/Herzegovina) 141A 5146
Breton 047e 1150
Bulgarian 0402 1026
Burmese 0455 1109
Catalan 0403 1027
Cherokee - United States 045c 1116
Chinese - People's Republic of China 0804 2052
Chinese - Singapore 1004 4100
Chinese - Taiwan 0404 1028
Chinese - Hong Kong SAR 0c04 3076
Chinese - Macao SAR 1404 5124
Corsican 0483 1155
Croatian 041a 1050
Croatian (Bosnia/Herzegovina) 101a 4122
Czech 0405 1029
Danish 0406 1030
Dari 048c 1164
Divehi 0465 1125
Dutch - Netherlands 0413 1043
Dutch - Belgium 0813 2067
Edo 0466 1126
English - United States 0409 1033
English - United Kingdom 0809 2057
English - Australia 0c09 3081
English - Belize 2809 10249
English - Canada 1009 4105
English - Caribbean 2409 9225
English - Hong Kong SAR 3c09 15369
English - India 4009 16393
English - Indonesia 3809 14345
English - Ireland 1809 6153
English - Jamaica 2009 8201
English - Malaysia 4409 17417
English - New Zealand 1409 5129
English - Philippines 3409 13321
English - Singapore 4809 18441
English - South Africa 1c09 7177
English - Trinidad 2c09 11273
English - Zimbabwe 3009 12297
Estonian 0425 1061
Faroese 0438 1080
Farsi 0429 1065
Filipino 0464 1124
Finnish 040b 1035
French - France 040c 1036
French - Belgium 080c 2060
French - Cameroon 2c0c 11276
French - Canada 0c0c 3084
French - Democratic Rep. of Congo 240c 9228
French - Cote d'Ivoire 300c 12300
French - Haiti 3c0c 15372
French - Luxembourg 140c 5132
French - Mali 340c 13324
French - Monaco 180c 6156
French - Morocco 380c 14348
French - North Africa e40c 58380
French - Reunion 200c 8204
French - Senegal 280c 10252
French - Switzerland 100c 4108
French - West Indies 1c0c 7180
Frisian - Netherlands 0462 1122
Fulfulde - Nigeria 0467 1127
Galician 0456 1110
Georgian 0437 1079
German - Germany 0407 1031
German - Austria 0c07 3079
German - Liechtenstein 1407 5127
German - Luxembourg 1007 4103
German - Switzerland 0807 2055
Greek 0408 1032
Greenlandic 046f 1135
Guarani - Paraguay 0474 1140
Gujarati 0447 1095
Hausa - Nigeria 0468 1128
Hawaiian - United States 0475 1141
Hebrew 040d 1037
Hindi 0439 1081
Hungarian 040e 1038
Ibibio - Nigeria 0469 1129
Icelandic 040f 1039
Igbo - Nigeria 0470 1136
Indonesian 0421 1057
Inuktitut 045d 1117
Irish 083c 2108
Italian - Italy 0410 1040
Italian - Switzerland 0810 2064
Japanese 0411 1041
K'iche 0486 1158
Kannada 044b 1099
Kanuri - Nigeria 0471 1137
Kashmiri 0860 2144
Kashmiri (Arabic) 0460 1120
Kazakh 043f 1087
Khmer 0453 1107
Kinyarwanda 0487 1159
Konkani 0457 1111
Korean 0412 1042
Kyrgyz (Cyrillic) 0440 1088
Lao 0454 1108
Latin 0476 1142
Latvian 0426 1062
Lithuanian 0427 1063
Luxembourgish 046e 1134
Macedonian 042f 1071
Malay - Malaysia 043e 1086
Malay - Brunei Darussalam 083e 2110
Malayalam 044c 1100
Maltese 043a 1082
Manipuri 0458 1112
Maori - New Zealand 0481 1153
Mapudungun 0471 1146
Marathi 044e 1102
Mohawk 047c 1148
Mongolian (Cyrillic) 0450 1104
Mongolian (Mongolian) 0850 2128
Nepali 0461 1121
Nepali - India 0861 2145
Norwegian (Bokmål) 0414 1044
Norwegian (Nynorsk) 0814 2068
Occitan 0482 1154
Oriya 0448 1096
Oromo 0472 1138
Papiamentu 0479 1145
Pashto 0463 1123
Polish 0415 1045
Portuguese - Brazil 0416 1046
Portuguese - Portugal 0816 2070
Punjabi 0446 1094
Punjabi (Pakistan) 0846 2118
Quecha - Bolivia 046B 1131
Quecha - Ecuador 086B 2155
Quecha - Peru 0C6B 3179
Rhaeto-Romanic 0417 1047
Romanian 0418 1048
Romanian - Moldava 0818 2072
Russian 0419 1049
Russian - Moldava 0819 2073
Sami (Lappish) 043b 1083
Sanskrit 044f 1103
Scottish Gaelic 043c 1084
Sepedi 046c 1132
Serbian (Cyrillic) 0c1a 3098
Serbian (Latin) 081a 2074
Sindhi - India 0459 1113
Sindhi - Pakistan 0859 2137
Sinhalese - Sri Lanka 045b 1115
Slovak 041b 1051
Slovenian 0424 1060
Somali 0477 1143
Sorbian 042e 1070
Spanish - Spain (Modern Sort) 0c0a 3082
Spanish - Spain (Traditional Sort) 040a 1034
Spanish - Argentina 2c0a 11274
Spanish - Bolivia 400a 16394
Spanish - Chile 340a 13322
Spanish - Colombia 240a 9226
Spanish - Costa Rica 140a 5130
Spanish - Dominican Republic 1c0a 7178
Spanish - Ecuador 300a 12298
Spanish - El Salvador 440a 17418
Spanish - Guatemala 100a 4106
Spanish - Honduras 480a 18442
Spanish - Latin America 580a 22538
Spanish - Mexico 080a 2058
Spanish - Nicaragua 4c0a 19466
Spanish - Panama 180a 6154
Spanish - Paraguay 3c0a 15370
Spanish - Peru 280a 10250
Spanish - Puerto Rico 500a 20490
Spanish - United States 540a 21514
Spanish - Uruguay 380a 14346
Spanish - Venezuela 200a 8202
Sutu 0430 1072
Swahili 0441 1089
Swedish 041d 1053
Swedish - Finland 081d 2077
Syriac 045a 1114
Tajik 0428 1064
Tamazight (Arabic) 045f 1119
Tamazight (Latin) 085f 2143
Tamil 0449 1097
Tatar 0444 1092
Telugu 044a 1098
Thai 041e 1054
Tibetan - Bhutan 0851 2129
Tibetan - People's Republic of China 0451 1105
Tigrigna - Eritrea 0873 2163
Tigrigna - Ethiopia 0473 1139
Tsonga 0431 1073
Tswana 0432 1074
Turkish 041f 1055
Turkmen 0442 1090
Uighur - China 0480 1152
Ukrainian 0422 1058
Urdu 0420 1056
Urdu - India 0820 2080
Uzbek (Cyrillic) 0843 2115
Uzbek (Latin) 0443 1091
Venda 0433 1075
Vietnamese 042a 1066
Welsh 0452 1106
Wolof 0488 1160
Xhosa 0434 1076
Yakut 0485 1157
Yi 0478 1144
Yiddish 043d 1085
Yoruba 046a 1130
Zulu 0435 1077
HID (Human Interface Device) 04ff 1279

Kolay gelsin.

--

TT

Pazar, Aralık 08, 2013

XCode Bölüm 01 – İlk Proje

Merhabalar,

 

Önemli Not: XCode öğreniyorum serisinin bu yazısı XCode 5 sürümü ile hazırlanmıştır.

Teknoloji gelişimlerini göz önüne aldığımızda mobil platformlar için geliştirilen uygulamaları dikkate almak gerekmektedir.

Mobile uygulama dediğimizde ise en çok kullanılam platform olarak iOS en plana çıkmaktadır. Bu yazımızda ve ilişkisel diğer yazılarımızda iOS için geliştirme platformu olan XCode ve Objective-C ‘i incelemeye çalışıyor olacağız.

Öncelikle uygulama geliştirebilmek için ihtiyacımız olanlara göz atıyor olalım.

En başta uygulamanın geliştirilebilmesi için MacOS işletim sistemine sahip olan bir bilgisayar ya da Virtual PC üzerinde bu işletim sisteminin kurulmuş olan bir işletim sistemi gerekmektedir.

Örnekleri geliştirecek ve deneyeceğimiz bilgisayar MacBook Pro 15¨ Late 2013 modelidir.

Eğer ki bir bilgisayara ulaşmak isterseniz; http://store.apple.com/tr/buy-mac/macbook-pro adresinde erişebilirsiniz.

Ürünlerin fiyatları eğer ki yüksek geldi ise ikinci el bir ürüne de (örn. mac mini) sahip olabilmeniz bütçesel açıdan da uygun olacaktır.

Geliştirmiş olduğunuz uygulamaları AppleStore ‘a ekleyebilmeniz için Developer Lisansa ihtiyacımız bulunmaktadır. https://developer.apple.com/programs/ios/ adresinden 99 dolar karşılığında lisansa erişebilirsiniz. (Safari için uygulama geliştirmek isterseniz developer lisansa ücretsiz edinebilme olanağımız vardır.

Farklı iki terim XCode ve Objective-C

Uygulama geliştirme yaptığım süre zarfında yaklaşık %95 oranında Visual Studio üzerinde uygulama geliştirmiş kalan kısmında ise Eclipse ile ilgilenmiş biri olarak ve yüksek ihtimalle bu blogu takip eden arkadaşlarımın/meslektaşlarımında yüksek ihtimallerle benzer platformalarda uygulama geliştirdiğimizi düşünüyorum.

Bu gerçeği göz önüne aldığımızda ise XCode geliştirme ortamı çok ama çok farklı gelecektir. Objective-C ise nispeten C/C++ ile uygulama geliştirmiş olan kişiler için daha basit ve tanıdık gelecektir.

XCode ‘i Tanıyalım

Öncelikle değinmek istediğim nokta XCode ücretsiz olarak sunulmaktadır. :)

Uygulamayı kurabilmek için MacOs işletim sistemi üzerinde yer alan AppStore uygulamasını çalıştırdılktan sonra ister en çok indirilen ücretsiz uygulamalar listesinden, isterseniz de aratarak kurulum ekranına erişebilirsiniz.

App_Store 

Yeni Proje Oluşturuyoruz

Yeni bir proje oluşturabilmek için öncelikle XCode uygulamasını çalıştırıyoruz.

pic_01 

Yeni proje oluştur dedikten sonra iOS proje şablonunu seçiyoruz.

pic_02 

Single View Application proje şablonunu seçiyoruz.

Not: Proje şablonları ile yapabileceklerimizi diğer yazılarımızda detaylı açıklıyor olacağım.

pic_03 

Proje adını girdikten sonraki adım da ilk XCode projemizi oluşturmuş bulunuyoruz. Şimdi iOS emulatörü çalıştırabilme kısmına geldik.

Editör ile hem iPhone 3.5 inch, iPhone 4 inch & Retina ekran hem de iPad için emulatörlerde projelerinizi çalıştırabilmeniz mümkündür.

pic_04

Çıkan sonucu görebilmek için çalıştır düşmesine basarak sonucu görebiliyoruz. Tabii ki boş bir emülatör :)

pic_05 

Telefonun bütün özelliklerine sahip bir emülatör ile karşılaşıyoruz. Bilgisayarınızın modeline göre çalışma performansı ile sorunlar yaşayabilirsiniz. Benim yaklaşık 4 senelik MacBookPro mda emülatör ‘ün çalışıp kendisini toplarması 5 saniye civarında sürüyordu. Yeni model bir pc ile saliseler içerisinde çalışmasını sağlayabilirsiniz.

Bu sayede XCode ile ilk projemizi oluşturmuş oluyoruz.

Bir sonraki yazımızda temel olarak sınıf yapısına değiniyor olacağız.

İyi günler dilerim.

--

TT