2015 - Zühal Calayoğlu - IOS Programlama

Embed Size (px)

Citation preview

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    1/44

    T.C.

    BILECIK SEYH EDEBALI NIVERSITESI

    MHENDISLIK FAKLTESI

    BILGISAYAR MHENDISLIGI

    IOS PROGRAMLAMA

    GRENCININ ADI SOYADI: ZHAL CALAYOGLU

    PROJE-2 ALISMASI

    DANISMAN : gr. Gr. Murat ZALP

    14 Ocak 2015

    BILECIK

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    2/44

    T.C.

    BILECIK SEYH EDEBALI NIVERSITESI

    MHENDISLIK FAKLTESI

    BILGISAYAR MHENDISLIGI

    IOS PROGRAMLAMA

    GRENCININ ADI SOYADI: ZHAL CALAYOGLU

    PROJE-2 ALISMASI

    DANISMAN : gr. Gr. Murat ZALP

    14 Ocak 2015

    BILECIK

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    3/44

    ZET

    Projenin Amac

    Bu projede Windows isletim sistemi zerine Mac isletim sistemi kurularak Mac ortam

    tannacaktr.Ayrca Ios uygulamas gelistirmek iin gerekli olan IDE ler arastrlp gre-

    nilmeye alslacak ve bu ortamda uygulama gelistirilmesi saglanacaktr.

    Projenin Kapsam

    Proje iki blmden olusmaktadr.Birinci blmde sanal bir isletim sistemi kurmak iin

    gerekli imajlar ve Windowsa MAC OS X kurmak iin neler gerekli arastrlp MAC OS

    X isletim sistemi kurulumu gereklestirilmistir.Ikinci blmde MAC zerinde basit uy-

    gulamalar gelistirebilmek iin gerekli IDE kurulmus bu IDEde kullanlacak dilin temel

    yaps grenilip uygulama gereklestirilmeye alslmstr.

    Sonular

    Bu projede asl ama sanal bilgisayar zerinde IOS uygulamalar gelistirebilmek oldugu

    iin Xcode editrnde Objective-c temel bilgileri ile basit uygulamalar gelistirilmistir.

    ii

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    4/44

    TESEKKR

    Bu projenin basndan sonuna kadar hazrlanmasnda emegi bulunan ve beni bu konuya

    ynlendiren saygdeger hocam ve dansmanm Sayn gr. Gr. Murat ZALPa tm kat-

    klarndan ve hi eksiltmedigi desteginden dolay tesekkr ederim.

    ZHAL CALAYOGLU

    14 Ocak 2015

    iii

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    5/44

    Iindekiler

    ZET ii

    TESEKKR iii

    1 GIRIS 1

    1.1 Proje alsma Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    2 BLM 1 : KURULUM SRECI 3

    2.1 Windowsa Sanal Olarak MAC OS X Kurmak . . . . . . . . . . . . . . . 3

    2.1.1 VMware sanal makine zerinden Mac OS X Mavericks 10.9 Ku-rulumu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2.2 MACIsletim Sistemi zerinde Uygulama Gelistirme . . . . . . . . . . . 8

    2.3 XCode Uygulama Gelistirme Ortam . . . . . . . . . . . . . . . . . . . 9

    2.3.1 IOS SIMULATOR . . . . . . . . . . . . . . . . . . . . . . . . . 10

    2.3.2 INTERFACE BUILDER . . . . . . . . . . . . . . . . . . . . . . 10

    2.3.3 FRAMEWOKS . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    3 BLM 2 : UYGULAMA SRECI 13

    3.1 Ilk Uygulama : Hello World . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3.2 Basit Kullanc Girisi Uygulamas . . . . . . . . . . . . . . . . . . . . . 16

    3.3 Dijital Saat Uygulamas . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    3.4 Hatrlatc Uygulamas . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    3.5 MapKit Uygulamas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    SONULAR 37

    KAYNAKLAR 38

    ZGEMIS 39

    iv

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    6/44

    1 GIRIS

    Bu proje alsmas asagdaki amalar dogrultusunda olusturulmustur.

    (i) Windows zerine sanal olarak MAC bir isletim sistemi kurulmas .

    (ii) Sanal isletim sistemi zerinden uygulama gelistirebilmek iin kullanlmas gereken

    editr nedir grenilmesi

    (iii) Kullanlan XCode editrne ait Objective C dilinin grenilmeye alslmas.

    (iv) Objective C ile basit uygulamalar gelistirilmesi.

    IOS iin uygulama gelistirebilmek iin Apple bir bilgisayara sahip olmamz gerekli-

    dir.Ancak Applen fiyatlarndan tr herkes bu bilgisayarlara sahip olamamaktadr.Yine

    de uygulama gelistirmek isteyenler iin bir zm yolu daha sunulmustur.O da Windows

    zerine sanal olarak bir Mac kurmaktr.Bu elbette gerek bir Apple zelligini ve hzn

    sunmayacaktr.Ama merak edenler iin Apple dnyasn grebilme ve basit uygulama-

    larla grenebilme imkan sunar.Bu projede sanal fakat gereginden hz gibi etmenlerden

    dolay pekte fark olmayan MAC OS X isletim sistemi kurulmas ve kullanlmas konu-sunda alsmalar yaplmstr.

    1

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    7/44

    1.1 Proje alsma Plan

    2

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    8/44

    2 BLM 1 : KURULUM SRECI

    2.1 Windowsa Sanal Olarak MAC OS X Kurmak

    Windows zerine Mac kurmak iin gerekenler sunlardr; ncelikle Virtual Box veya VM-

    Ware sanallastrma cihazlarn kurmak gerekmektedir. Bu cihazlar bilgisayara sanal bir

    isletim sistemi kurmay saglamaktadr. Sanallastrma Teknolojisi destekli Intel islemci:

    Sanal makine alstrmak iin sanallastrma destegi olan bir islemci gerekmektedir. Intel

    Core 2 Duo ve sonras neredeyse btn islemciler bu destege sahiptir. Ek olarak bu zel-

    ligin BIOSta devrede olmas gerekmektedir. Her ne kadar ogunlukla bu zellik devrede

    olsa da, baz durumlarda islemci desteklese dahi devre ds olabilmektedir. Bu baglamda

    BIOS a girip Hardware Virtualization seenegini Enable yapmanz gerekmektedir. VM-

    ware Mavericks imaj sadece Intel islemcilerde alsmaktadr.

    64 BitIsletim sistemi: Mac OS X, 64 Bit bir isletim sistemi ve bu baglamda alsabilmesi

    iin sanal makinenin kurulu oldugu isletim sisteminin de 64 Bit olmas sarttr.Islemciniz

    64 Bit desteklemiyorsa sanal makinede Mavericks kullanlmamaktadr.

    Projede sanal isletim sistemi kurulmas srasnda hem VmWare hem de Virtual Box imaj-

    lar kurularak denemeler yapld.Ilk olarak VM VirtualBoxn 4.10.16 srm kurularak

    basland.Ancak sanal Macin her baslatlmasnda oturum ama basarsz adnda ayn hata

    ile karslasld.Bunun nedenini arastrmak grenmek iin VirtualBoxa Linux gibi baska

    sanal makineler kurularak tekrar denendi islem sonucunda sorunun VM VirtualBoxn

    4.10.16 srmndeki hatadan kaynaklandg anlasld.VirtualBoxn bir nceki srmleri

    tekrar kurularak denenmeye basland.Bu asamalardan sonra Mac OS X iin gerekli sanal

    makine olusturuldu.

    2.1.1 VMware sanal makine zerinden Mac OS X Mavericks 10.9 Kurulumu

    PCYE MAC OS X KURULUMUIIN GEREKLI YAZILIMLAR;

    (i) VMWare Player: Sanal makine kurulumu iin gereklidir, Windows isletim sistemi

    zerinde farkl bir sanal isletim sistemi kullanlmasn saglar.

    (ii) OSX Mavericks: Kurulacak olan isletim sistemidir.

    3

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    9/44

    Ilk nce bilgisayara VMware Workstation kuruldu.Kurulumu gereklestirmek iin gerekli

    olan OS X Mavericks 10.9 Retail VMware Image i indirildi. kartlan .zip dosya ieri-

    sinde asagdaki yol takip edilerek install.cmd dosyasnn zerine sag tklayp, Ynetici

    olarak alstr denildi.

    Bylece VMware Unlocker yardm ile VMware Workstation a Mac OS X deste gi ka-

    zandrld. Zip dosyasn kardgmz klasrde /OS X Mavericks 10.9 Retail VMware

    Image/OS X Mavericks yolunu izleyerek OS X Mavericks.vmxe tkland.

    4

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    10/44

    VMworkstation OS X Mavericks seilmis bir sekilde kt.

    SETTINGS blmndeki gerekli ayarlamalar yapldktan sonra sol st ksedeki baslatma

    butonuna tkland.

    5

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    11/44

    Sistem baslatlarak almas sagland.Apple ikonu ekranda grld.

    Uzun sre beklenilmesine karsn Mac isletim sistemi arayzne ulaslamad.Bu sorunun

    zmne iliskin yaplan arastrmalar sonucu masastnde yeni bir klasr olusturularak

    Virtual Machine Settings -> Options -> Shared Folders iinde ki Folder Sharing zelli gi

    Always enabled olarak ayarlanp,masastnde ki klasr eklendi.

    6

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    12/44

    Bulundugumuz lke seildi.

    Kullanlacak klavye tr seildi.

    7

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    13/44

    Gerekli ayarlamalar yapldktan sonra MAC kurulum asamas baslatld.

    2.2 MACIsletim Sistemi zerinde Uygulama Gelistirme

    Mac isletim sistemi IOS uygulamalar gelistirebimek iin gerekli olan IDE ler arast-

    rld.En ok bilinen editrlerin XCode ve Swift oldugu grenildi.Ancak Swift daha yeni

    gelismekte olan bir IDE oldugu iin XCode editr tercih edildi.XCode editrnn Apple

    Store zerinden indirilmesi denendi. Ancak Apple store dan kurmaya alslan XCodeun

    en son srm olan 6.0 d.Sanal olarak kurmus olunan Mac eski bir srm oldugundan

    XCodeun en son srmn desteklememekteydi.Bunun zerine Xcodeun daha alt s-

    rmleri indirilmeye alsld.Ancak Apple store da sadece son srmne ulaslmaktayd.

    8

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    14/44

    Bunun zerine Torrentz den Xcodeun 5.1 srm bulunarak indirmek durumunda ka-

    lnd.

    Su anda alsmakta olunan Xcode un eski srm olan 5.1.1 srmdr.

    XCode ortam genel hatlaryla grenildikten sonra bu ortamda kullanlacak dili grenme

    asamalar baslad.Objective- C olarakta bilinen nesne ynelimli bir dil kullanlmakta-

    dr.Bu dil hem C yi hemde Java y andrmaktadr.Ama metodlarn ve fonksiyonlarn is-

    levleri ve kullanlmas asndan bir o kadarda farkl bir dildir.

    2.3 XCode Uygulama Gelistirme Ortam

    XCode derleyicisi, iOS uygulamas gelistirmek iin kullanlan bir IDEdir. MacOS isletim

    sistemine sahip bir bilgisayar olmas halinde XCode indirilebilir ve kurulabilir. XCode,

    yazlm gelistirici iin olduka kullansl ve ergonomik bir gelistirme ortamdr. Tek sorun,

    neyin hi kod yazlmadan ve daha kolay nasl yaplacagnn grenilebilmesi iin gerekli

    olan srenin uzunlugudur.

    XCode kurulumunu gereklestirdikten sonra XCode nin genel yapsndan bahsedeyim.

    Xcode ile proje olustururken asagdaki ekran karsmza kmaktadr.Bu ekran olusturula-

    cak xcode projesi iin kullanlacak hazr templateleri iermektedir.

    Bunlar su sekildedir: Navigation-based Application: Bir navigasyon men sablonuna sa-

    hip proje olusturur. OpenGL ES Application: 3D grselleri olusturabildigimiz projedir.

    Split View-based Application: Kullanlan pencerenin, iki kolona blnms bir layout

    sablonu seklinde proje olusturur. Tab Bar Application: Sekmelerden olusan bir sablon

    zerinden proje olusturur. Utility Application: Birden fazla sayfadan olusan animasyon

    sablonuna sahip bir projedir. View-based Application : Bir Controller ve bir Viewden olu-

    san sablon projedir. Window-based Application: Bos , iinde hi bir MVC(Model View

    Controller) sablonu bulunmayan, hepsi kendi tarafmzdan hazrlanmas gereken bir pro-

    jedir. Proje alsmlarnda Split View-based Application sablonu kullanlmaktadr.Sablon

    tr seildikten sonra gerekli ayarlamalar yaplp Xcode projesi olusturulmaktadr.Xcode

    editrndeIOS Simulator veInterface Builder adnda iki nemli birlesen yer almaktadr.

    9

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    15/44

    2.3.1 IOS SIMULATOR

    Gelistirilen uygulamalar cihaz zerine yklemeden simle edilmesini saglayan bir bile-

    sendir.

    2.3.2 INTERFACE BUILDER

    Iphone veIpad uygulamalarnn arayzlerini grsel olarak dizayn etmek iin kullanlan

    Interface Builder arac sayesinde srkle-brak mantgyla uygulamalar zerindeki La-

    bel ve TextField gibi kontrollerin ekran zerinde nereye konumlayacagn belirleyebilir

    ve bu kontroller zerinde herhangi bir olay gereklestiginde arkaplanda alsan snflarla

    etkilesim kurarak ,hangi snftaki hangi kod parasnn alsacagn grsel olarak belirle-

    yebiliriz.

    10

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    16/44

    Sekilde XCodeun Interface Builder ekran gzkmektedir.Ekrandaki sol panel program

    dosyalarnn yer aldg ksmdr.Genellikle ViewContreller.h ve ViewController.m dosya-

    slarna girilerek kod yazm gereklestirilir.Ortadaki ekran ise ViewControllerdr.Bilesenlerin

    srkleyip brakldktan sonra simlatr ekrannda grlecek ksmdr.Ayrca ViewCon-

    rollera eklenen bilesenlerin evetleri bu ekranda olusturularak daha az kod yazmna ola-

    nak saglamaktadr.Sagstksedeki panelde ise Viewe eklenen bilesenlerin propertiesleri

    yer almaktadr.Bu panel ile rnegin; arkaplan renkleri,yaz puntolar,bilesenlere eklenen

    olaylar kontrol edilebilmektedir.Sag alt ksede bulunan panelde ise bilesenlerin ktp-

    hanesi yer almaktadr.Buradan Vieweklenmek istenen bilesen srklenip braklarak ek-

    lenebilir.// XCode ile uygulama olustururken Interface Buildern sol panelinde bulunan

    ViewController.h yani baslk dosyas ViewController.m yani uygulama dosyalar ile is-

    lem yaplmaktadr.Bunlardan .h uzantl dosyamz arayzmzn tanmlandg dosyadr

    yani arayze eklenecek buttonlar labeller burada tanmlanmak durumundadr..m uzan-

    tl dosya ise uygulama dosyasdr yani burada fonsiyonlar ve metotlar tanmlanr.Ayrca

    birde main.storyboard dosyas vardr burda ise hazlanan arayz grntleyebilir size,font

    ve arka plan renkleri ayarlanabilir ayrca .h dosyasna eklenen islevleri burada fiziksel ola-

    rak ta eslestirilmesi gerekmektedir.

    11

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    17/44

    2.3.3 FRAMEWOKS

    XCode ile uygulama gelistirirken bilinmesi gereken bir diger konu ise Frameworklerdir.Bu

    yaplar Objective -C dilinde kullanlan temel snflar iererek bir nevi at konumunda-dr.Uygulama gelistiriRken programda kullanlan snflarn hangi atya ait oldugu bilin-

    mesi gereklidir.Aksi taktirde program hatasz dahi olsa nesnelerin atlar eklenmedigi

    iin hata ile karslaslacaktr.Asagda uygulama gelistirirken kullandgm ve bilinmesi ge-

    reken temel atlardan bahsedilmistir;

    Foundation Framework:Objective -C ile uygulama gelistirirken kullanlan temel snflar

    olan NSObject ,NSString gibi snflar ierir.

    Core Foundation Framework: C programlama dili tabanl bir uygulama ats olan CoreFoundation Uygulama ats,programlama yaparken kullanlan temel veri tiplerini daha

    kullansl hale getiren esitli fonksiyonlar ierir.

    Event Kit Framework:Objective-C ile takvim ve alarm uygulamalarn gelistirebilmek

    iin tasarlanms uygulama atsdr.

    UIKit Framework:Uygulama gelistiriken kullanc ile direk iletisim kurulmasn sagla-

    yan Label ve TextField gibi nesneleri barndrr.

    Map Kit Fremawork :Harita uygulamas gelistirirken kullanlacak metot ve snfar ie-

    rir.

    Core Location Framework:Bu uygulama atsnda genelikle cografi konum verilmesi

    gereken uygulamalarda kullanlmas gereken metotlar ierir.

    12

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    18/44

    3 BLM 2 : UYGULAMA SRECI

    3.1 Ilk Uygulama : Hello World

    IOS uygulama srecinin basnda XCode editrnde Hello World uygulamas olusturuldu.Bu

    uygulamann asamalar su sekildedir:

    Ilk olarak Mainstoryboard ksmnda ViewControllere Label ve Button eklendi.Label ve

    Buttonun ad degistirildi.Sonra baska bir ViewController eklenerek ayn sekilde ona da

    Label ve Button konuldu.Ilk arayzdeki Button bileseni ikinci arayze bagland ve zel-

    ligi modal seildi.Bu asama resimde gsterildigi sekildedir.

    Ikinci arayzde bulunan Label bileseninin eventna baglama islemi yapld.Butonun iinde

    Action eylemi olusturularak Touch Up Inside zelligi seilerek baglama islemi yapld.

    13

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    19/44

    Uygulama simlatrde alstrlarak resimde gsterilen hali elde edildi.Arayzlerin ara-

    snda geis yaplarak ekrana HelloWorld yazdrld.

    14

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    20/44

    View2.h

    #import //Label ve Buton iin

    kullanlacak Framework ekleniyor

    @interface View2 : UIViewController

    {

    IBOutlet UILabel *lbl;//Label event interface ile

    baglanmstr

    }

    -(IBAction)Button:(id) sender;//Butona basldg anda

    15

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    21/44

    olayn gereklesmesi iin interface ile action

    olusturuluyor.

    @end

    View.m

    #import "View2.h"//Baslk dosyas egrlyor.

    @implementation View2

    //Baslk dosyasnda tanmlanan buton action iin

    metodu olusturuluyor.Bu metot ile butona basldg anda

    NSString snfndan tretilen string ifade Labelde

    gzkmektedir.

    -(IBAction)Button:(id) sender{

    lbl.text=[NSString stringWithFormat:@"HelloWorld"];

    }

    @end

    3.2 Basit Kullanc Girisi Uygulamas

    Bu uygulamada ViewController zerine 4 tane bilesen eklendi.Label bileseni adnz gi-

    riniz seklinde bir mesaj yazlmak iin kullanlmstr.Hibir event yoktur.Textfield bile-

    seninde ise kullancdan isim alnmaktadr.Outlet olay eklenir.Textfield in altnda bulu-

    nan Label bileseni ise Textfield dan girilen ismi ekrana yazdrmak iin kullanlr.Buna

    da ayn sekilde outlet olay eklenir.Son bilesen olan butonaa ise action olay eklene-

    rek,kullancdan alnan ismin Labelda gzkmesi saglanmaktadr.

    Uygulama resimleri

    16

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    22/44

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    23/44

    IBOutlet UITextField *Kullanici_Ismi;

    }

    //Interfacede bulunan butona basldg anda olayn

    gereklesmesi iin metot tanmlanyor.

    -(IBAction) YazdirMetodu;

    @end

    ViewController.m

    #import "ViewController.h"//Baslk dosyas agrlyor.

    @interface ViewController ()

    @end

    @implementation ViewController

    -(IBAction) YazdirMetodu:(id)sender

    {

    //Texfielde girilen string deger iin bellekte yer

    ayrlyor.Daha sonra string deger Labela

    yazdrlyor.

    NSString *MetniOku = [[NSString alloc] initWithFormat:

    @"Hosgeldiniz Sayn, %@", [Kullanici_Ismi text]];

    //Textte girilen ve bellege kaydedilen veri agrlyor.

    [Metin setText:MetniOku];

    }

    @end

    3.3 Dijital Saat Uygulamas

    Yaplmas tasarlanan alarm uygulamasnda kullanlacak dijital saat iin sistem saatini ala-

    bilecek basit bir uygulama olusturuldu.Bylelikle alarm uygulamas iin gereken n ha-

    18

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    24/44

    zrlk,dijital saat olusturularak tamamland.

    Ekranda gzkecek dijjtal saat iin ViewControllera Label bileseni eklenerek event bag-

    lants yapld.

    Uygulama Resimleri

    ViewController.h

    #import

    @interface ViewController : UIViewController {

    IBOutlet UILabel *label;//Label olay tanmlanyor.

    NSTimer *saat ;//NSObject snfndan kaltm olarak

    19

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    25/44

    alnan NSTimer nesnesi saat iin tanmlanyor.

    }

    -(void)saatFonk;//Deger gndermeyen Fonk tanmlanyor.

    @end

    ViewController.m

    #import "ViewController.h"//Baslk dosyas agrlyor.

    @interface ViewController ()

    @end

    @implementation ViewController

    //NSString snfndan treyen NSDateFormatter nesnesi

    saat formatnn gsterimi iin ayarlanyor.

    Bellekte yer ayrlyor.

    - (void)saatFonk{

    NSDateFormatter *formatter =

    [[NSDateFormatter alloc] init];

    [formatter setDateFormat:@"hh:mm:ss"];

    //Format ayarlanan saat labela yazdrlyor.

    label.text = [formatter stringFromDate:[NSDate date]];

    }

    // Dijital saat iin saydrlma yaplyor.Bunun iin

    baslk dosyasnn hazr metodu olan viewDidload fonk

    kullanlyor.

    - (void)viewDidLoad

    {

    [super viewDidLoad];

    saat =[NSTimer scheduledTimerWithTimeInterval:0.5\\

    target:self

    selector:@selector(saatFonk)\\

    userInfo:nil

    repeats:YES];

    20

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    26/44

    }

    //Program da hazr gelen metot oldugu iin baslk

    dosyasnda tanmlanmad.Programda bir islevi yok

    - (void)didReceiveMemoryWarning

    {

    [super didReceiveMemoryWarning];

    }

    @end

    3.4 Hatrlatc Uygulamas

    Ilk basta alarm uygulamas olarak tasarlanan uygulama,simlatrde ki sesli uyar soru-

    nundan dolay hatrlatc uygulamas olarak degistirildi.Bu uygulamada kullancnn gire-

    cegi herhangi bir konu ve yine kullancnn belirleyecegi tarih ve saatte ekrana bir uyar

    mesaj gelecektir.Simlatr o anda kapal olsa dahi kullanc yoksaymadg srece sim-

    latr her atgnda uyar olarak ana mende gsterilmektedir.Ayrca arayze eklenenschedule control bileseni sayesinde kullancnn girdigi konunun her dakika,saat,gn ve

    haftada tekrar hatrlatlmas ayar yaplmaktadr.Arayze eklenen buton bilesenlerinden

    Ayarla butonu ile hatrlatma konusu ayarlanrken Sil butonu ile de silinebilmektedir.

    Arayzde bulunan 5 bilesen iinde event lar Referencing Outlets sayesinde arayzle bag-

    lant saglanmstr.

    Uygulama Resimleri

    21

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    27/44

    HatirlaticiViewController.h

    22

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    28/44

    #import //Interfacede bilesenler iin

    at ekleniyor.

    @interface HatirlaticiViewController : UIViewController

    //Snf olusturulup nerden tredigi belirtiliyor.

    {

    UITextField *hatirlatText;//Texfield

    tanmlamas yaplyor.

    UISegmentedControl *scheduleControl;//

    UIButton *setButton;//Ayarla butonunun tanmlamas yaplyor.

    UIButton *clearButton;//Sil butonu tanmlamas

    yaplyor.

    UIDatePicker *datePicker;//DatePicker tanmlamas yaplyor.

    }

    //Bilesenlerde olusturulan olaylar gderiliyor.

    @property (nonatomic,retain) IBOutlet UITextField

    *hatirlatText;

    @property (nonatomic,retain) IBOutlet

    UISegmentedControl *scheduleControl;

    @property (nonatomic,retain) IBOutlet UIButton

    *setButton;

    @property (nonatomic,retain) IBOutlet UIButton

    *clearButton;

    @property (nonatomic,retain) IBOutlet UIDatePicker

    23

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    29/44

    *datePicker;

    - (IBAction)clearNotification;//Sil butonu action tanmlanyor.

    - (IBAction)scheduleNotification;

    - (void)showReminder:(NSString *)text;//Hatrlatcnn

    ekranda mesaj vermesini saglayan metot tanm

    yaplyor.

    @end

    HatirlaticiViewController.m,

    #import "HatirlaticiViewController.h"//Baslk dosyas

    agrlyor.

    @implementation HatirlaticiViewController//olusturulan

    snf agrlyor.

    //Baslkta tanmlanan zellikler iin program

    derlendiginde eventlarn olusmas saglanr.

    @synthesize hatirlatText;

    @synthesize scheduleControl;

    @synthesize setButton;

    @synthesize clearButton;

    @synthesize datePicker;

    //Asagdaki metot ile kullancnn ayarlams oldugu

    tarihe gre textte girilen metnin ekrana yklenmesi

    saglanr.

    - (void)viewDidLoad {

    24

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    30/44

    datePicker.minimumDate = [NSDate date];

    hatirlatText.delegate = self;

    }

    //Bilesenler iin bos deger gnderilmesi saglanr.

    - (void)viewDidUnload {

    [super viewDidUnload];

    self.hatirlatText = nil;

    self.scheduleControl = nil;

    self.clearButton = nil;

    self.setButton = nil;

    self.datePicker = nil;

    }

    }

    //Bu metot ile hafzaya eklenen nesneler

    kullanlmadgnda hafzaya geri iade etmek iin

    kullanlmstr.

    - (void)dealloc {

    [hatirlatText release];

    [scheduleControl release];

    [clearButton release];

    [setButton release];

    [datePicker release];

    [super dealloc];

    }

    25

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    31/44

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    32/44

    break;

    case 2:

    notif.repeatInterval =

    NSHourCalendarUnit;

    break;

    case 3:

    notif.repeatInterval =

    NSDayCalendarUnit;

    break;

    case 4:

    notif.repeatInterval =,

    NSWeekCalendarUnit;

    break;

    default:

    notif.repeatInterval = 0;

    break;

    }

    //scheduladaki index degerine gre textin

    tekrarlanmas saglanyor.Nesne kaldrlrsa

    bellege kaydedilen nesnenin yeri bellege iade

    ediliyor.

    NSDictionary *userDict = [NSDictionary

    dictionaryWithObject:hatirlatText.text

    forKey:kRemindMeNotificationDataKey];

    notif.userInfo = userDict;

    [[UIApplication sharedApplication]

    scheduleLocalNotification:notif];

    [notif release];

    }

    27

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    33/44

    }

    //Bu metot ile eklenen nesne iin hafzada yer ayrlr

    ve eklenen nesne uyar penceresinde gzkr.

    - (void)showReminder:(NSString *)text {

    UIAlertView *alertView = [[UIAlertView alloc]

    initWithTitle:@"Hatrlat"

    message:text delegate:nil

    cancelButtonTitle:@"TAMAM"

    otherButtonTitles:nil];

    [alertView show];

    [alertView release];

    }

    @end

    Uygulama Resimleri

    28

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    34/44

    29

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    35/44

    3.5 MapKit Uygulamas

    Son uygulamada sensrler kullanlarak kullancnn anlk konumunu alan bir IOS uygu-

    lamas gelistirilmeye alsld.Ancak simlatrden deger aldg iin ve telefonda deneme

    imkan olmadg iin program srekli default bir konum belirledi.Bunun nereden kay-

    naklandg bulundu.XCode alstrldktan sonra destek ksmnda sanal makinenin aldg

    koordinatn default olarak ayarlanan ksm degisildi.Burada da makine birka lkeyi baz

    olarak koordinat olusturdu.Bunun zerine kod ksmnda belirlenen koordinatlar girilerek

    kullanc konumlandrlmas bir nevi elle yapld.

    XCode ile map uygulamas gelistirirken kullanc konumunun simlatrde gsterilecegi

    harita iin arayzde MkMapView adl nesne kullanld.Bu nesne IOSta harita uygulamas

    iin kullanlan zel bir nesnedir.Arayz hazrladktan ve baglama olayn gereklestir-

    dikten sonra kod ksmna geildi.

    30

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    36/44

    ViewController.h

    #import //Bilesen ats ekleniyor.

    #import //MapView bileseni iin ats

    ekleniyor.

    #import //Lokasyon

    verilmesi iin ats ekleniyor.

    @interface ViewController : UIViewController {

    MKMapView *mapView;//Interfacede eklenen Map

    bileseni tanmlanyor.

    }

    @end

    ViewController.m

    #import "ViewController.h"//Baslk dosyas agrlyor.

    #import "pin.h"//Pin iin baslk dosyas agrlyor.

    @implementation ViewController

    31

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    37/44

    - (void)viewDidLoad {

    [super viewDidLoad];

    mapView = [[MKMapView alloc]

    initWithFrame:self.view.bounds];

    mapView.mapType = MKMapTypeHybrid;

    //Harita iin enlem ve boylam degerleri belirlenir.

    CLLocationCoordinate2D coord =

    {latitude: 38, longitude: 27};

    //Lokasyona gre hatitada yaknlastrma

    degerleri girliyor.

    MKCoordinateSpan span =

    {latitudeDelta: 2, longitudeDelta: 2};

    MKCoordinateRegion region = {coord, span};

    //Koordinantlar verilen blgeye pin

    yerlestiriliyor.Mesaj yazdrlyor.

    [mapView setRegion:region];

    [self.view addSubview:mapView];

    pin *mypin = [[pin alloc]

    initWithName:@"Buradayim"coordinate:

    CLLocationCoordinate2DMake(38, 27)];

    [self->mapView addAnnotation:mypin];

    }

    32

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    38/44

    //.m dosyasna hazr eklnene bir metotdur default olarak

    eklendigi iin pek bir islevi olmuyor.

    - (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    }

    @end

    Map uygulamasnda pin eklenmeden sadece lokasyon girilerek olusturulan harita grn-

    ts sekilde gsterilmektedir.Burada grirlen enlem ve boylam degerlerine uygun harita

    grnts alnr ancak net konum belirlenmemistir.Sekildeki harita grntsndeIzmirin

    enlem ve boylam degerleri grirlerek olusturulmustur.

    Bu islemlerden sonra kod ksmnda girilen koordinat alnyordu ancak tam olarak git-

    tigi nokta belli degildi.Bu noktay simlatrde gstermek amacyla pin ekleme islemi

    yapld.Ayrca o nokta iin pine tklandgnda Buradaym ifadesi grlmesi sagland.

    Kullancnn konumunun daha net anlaslmas iin pin ignesi eklenmistir.Bunun iin yeni

    bir view class dosyas alp lokasyanona bagl pin konumlandrlmas iin gereken me-

    totlar eklenmistir.Sekilde yeni bir View Class dosyas almas gsterilmektedir.

    33

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    39/44

    pin.h

    #import //Genel snfn

    atsdr.

    #import

    // pin adnda NSObject snfndan treyen bir snf

    olusturulmustur.

    @interface pin : NSObject //Pin iin

    gerekli bir ktphane eklenir.

    34

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    40/44

    //verilen koordinatlar yani pinin bulundugu

    koordinatlar, herhangi bir isimle kaydedilmisse bu

    ismin grnmesine araclk eden nesne olarak

    tanmlanmstr.

    //her kanaldan ulaslamayan ve gnderilen nesnenin

    kopyasn alan pointer olusturulur.

    @property (nonatomic,copy) NSString *title;

    //Pinin bulundugu koordinantlarn alnabilmesi iin

    tanmlanmstr.

    @property (nonatomic,assign) CLLocationCoordinate2D

    coordinate;

    -(id)initWithName:(NSString*

    )name coordinate

    :(CLLocationCoordinate2D)coordinate;

    @end

    pin.m

    #import "pin.h"

    //Pinin baslk dosyas agrlr.

    @implementation pin

    //Baslk dOsyasnda tanmlanan dosyamz agrlyor.

    @synthesize title,coordinate;// zellik metotlarnn

    derlenme annda olusturulmasn saglar.

    //Bir konumu kolaylkla tanmlamak iin initWithName

    35

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    41/44

    metodunu ekliyoruz. Bu metodun islemi i degiskenleri

    hzlca tanmlamak olacaktr.

    - (id)initWithName:(NSString*)pinName coordinate:

    (CLLocationCoordinate2D)pinCoordinate

    {

    if ((self = [super init]))

    {

    self.title = pinName;

    self.coordinate = pinCoordinate;

    }

    return self;

    }

    @end

    Uygulamann Son Hali Grnts

    36

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    42/44

    SONULAR

    Bu proje uygulamas sonucunda sadece MAC OSX isletim sistemine sahip bir bilgisayarla

    yaplabilecek uygulamalarn Windowsta da gelistirilebilecegi grenildi.Ayrca Windowsbilgisarnn islemcisine gre sanal Macin performansnn nasl degistrebilecegi grlms

    oldu.

    37

  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    43/44

    Kaynaklar

    [1] http://docs.unity3d.com/ScriptReference/index.html

    [2] http://docs.unity3d.com/Manual/index.html

    [3] http://yasirkula.com/category/oyun-tasarimi/unity-3d/

    [4] http://kursiyernet.meb.gov.tr/Default.aspx

    [5] http://unitytr.wordpress.com/

    [6] http://pixelnest.io/tutorials/2d-game-unity/

    [7] http://answers.unity3d.com/

    [8] http://stackoverflow.com/

    [9] http://learnunity2d.com/

    [10] http://tr.wikipedia.org/wiki/Unity_3D

    38

    http://docs.unity3d.com/ScriptReference/index.htmlhttp://docs.unity3d.com/Manual/index.htmlhttp://yasirkula.com/category/oyun-tasarimi/unity-3d/http://kursiyernet.meb.gov.tr/Default.aspxhttp://unitytr.wordpress.com/http://pixelnest.io/tutorials/2d-game-unity/http://answers.unity3d.com/http://stackoverflow.com/http://learnunity2d.com/http://tr.wikipedia.org/wiki/Unity_3Dhttp://tr.wikipedia.org/wiki/Unity_3Dhttp://learnunity2d.com/http://stackoverflow.com/http://answers.unity3d.com/http://pixelnest.io/tutorials/2d-game-unity/http://unitytr.wordpress.com/http://kursiyernet.meb.gov.tr/Default.aspxhttp://yasirkula.com/category/oyun-tasarimi/unity-3d/http://docs.unity3d.com/Manual/index.htmlhttp://docs.unity3d.com/ScriptReference/index.html
  • 8/10/2019 2015 - Zhal Calayolu - IOS Programlama

    44/44

    ZGEMIS

    KIS

    ISEL B

    ILG

    ILER

    Ad Soyad : ZHAL CALAYOGLU

    Uyrugu : T.C

    Dogum Yeri ve Tarihi: KASTAMONU 06.07.1992

    Adres : Bilecik

    Telefon : 05434467327

    e-mail : [email protected]

    EGITIM DURUMU

    Lisans grenimi : Bilecik Seyh Edebali niversitesi, Bilecik

    Bitirme Yl : 2015

    Lise : TOSYA LISESI, KASTAMONU/TOSYA

    Stajlar : KUZEY ANADOLU KALKINMA AJANSI VE TURK TELEKOM

    ILGI ALANLARI

    YABANCI DILLER : Ingilizce