You are on page 1of 44

T.C.

SEYH

BILEC
IK

EDEBALI NIVERS
ITES
I
IK
FAKLTESI
MHENDISL
I
ISAYAR

IG
BILG
MHENDISL

IOS PROGRAMLAMA

IN
ADI SOYADI: ZHAL CALAYOGLU
GRENC
IN
PROJE-2 ALISMASI

DANISMAN

: gr. Gr. Murat ZALP

14 Ocak 2015

BILEC
IK

T.C.

SEYH

BILEC
IK

EDEBALI NIVERS
ITES
I
IK
FAKLTESI
MHENDISL
I
ISAYAR

IG
BILG
MHENDISL

IOS PROGRAMLAMA

IN
ADI SOYADI: ZHAL CALAYOGLU
GRENC
IN
PROJE-2 ALISMASI

DANISMAN

: gr. Gr. Murat ZALP

14 Ocak 2015

BILEC
IK

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 grenilmeye 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 uygulamalar 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

TESEKKR

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


ynlendiren saygdeger hocam ve dansmanm Sayn gr. Gr. Murat ZALPa tm katklarndan ve hi eksiltmedigi desteginden dolay tesekkr ederim.

ZHAL CALAYOGLU
14 Ocak 2015

iii


Iindekiler
ZET

ii

TESEKKR

iii

IS
1 GIR

1.1

Proje alsma Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 BLM 1 : KURULUM SRECI


2.1

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


2.1.1

VMware sanal makine zerinden Mac OS X Mavericks 10.9 Kurulumu

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2

MAC Isletim Sistemi zerinde Uygulama Gelistirme . . . . . . . . . . .

2.3

XCode Uygulama Gelistirme Ortam

. . . . . . . . . . . . . . . . . . .

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

IS
GIR

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 gereklidir.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 uygulamalarla grenebilme imkan sunar.Bu projede sanal fakat gereginden hz gibi etmenlerden
dolay pekte fark olmayan MAC OS X isletim sistemi kurulmas ve kullanlmas konusunda alsmalar yaplmstr.

1.1

Proje alsma Plan

BLM 1 : KURULUM SRECI

2
2.1

Windowsa Sanal Olarak MAC OS X Kurmak

Windows zerine Mac kurmak iin gerekenler sunlardr; ncelikle Virtual Box veya VMWare 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 zelligin 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. VMware Mavericks imaj sadece Intel islemcilerde alsmaktadr.
64 Bit Isletim 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 imajlar 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 KURULUMU IIN 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

Ilk nce bilgisayara VMware Workstation kuruldu.Kurulumu gereklestirmek iin gerekli


olan OS X Mavericks 10.9 Retail VMware Image i indirildi. kartlan .zip dosya ierisinde 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 destegi kazandrld. Zip dosyasn kardgmz klasrde /OS X Mavericks 10.9 Retail VMware
Image/OS X Mavericks yolunu izleyerek OS X Mavericks.vmxe tkland.
4

VMworkstation OS X Mavericks seilmis bir sekilde kt.

SETTINGS blmndeki gerekli ayarlamalar yapldktan sonra sol st ksedeki baslatma


butonuna tkland.
5

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 zelligi
Always enabled olarak ayarlanp,masastnde ki klasr eklendi.
6

Bulundugumuz lke seildi.

Kullanlacak klavye tr seildi.


7

Gerekli ayarlamalar yapldktan sonra MAC kurulum asamas baslatld.

2.2

sletim Sistemi zerinde Uygulama Gelistirme


MAC I

Mac isletim sistemi IOS uygulamalar gelistirebimek iin gerekli olan IDE ler arastrld.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 srmleri indirilmeye alsld.Ancak Apple store da sadece son srmne ulaslmaktayd.

Bunun zerine Torrentz den Xcodeun 5.1 srm bulunarak indirmek durumunda kalnd.
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 kullanlmaktadr.Bu dil hem C yi hemde Java y andrmaktadr.Ama metodlarn ve fonksiyonlarn islevleri 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 olusturulacak xcode projesi iin kullanlacak hazr templateleri iermektedir.
Bunlar su sekildedir: Navigation-based Application: Bir navigasyon men sablonuna sahip 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 olusan sablon projedir. Window-based Application: Bos , iinde hi bir MVC(Model View
Controller) sablonu bulunmayan, hepsi kendi tarafmzdan hazrlanmas gereken bir projedir. Proje alsmlarnda Split View-based Application sablonu kullanlmaktadr.Sablon

tr seildikten sonra gerekli ayarlamalar yaplp Xcode projesi olusturulmaktadr.Xcode


editrnde IOS Simulator ve Interface Builder adnda iki nemli birlesen yer almaktadr.
9


2.3.1 IOS
SIMULATOR

Gelistirilen uygulamalar cihaz zerine yklemeden simle edilmesini saglayan bir bilesendir.

2.3.2

INTERFACE BUILDER

Iphone ve Ipad uygulamalarnn arayzlerini grsel olarak dizayn etmek iin kullanlan
Interface Builder arac sayesinde srkle-brak mantgyla uygulamalar zerindeki Label 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 belirleyebiliriz.
10

Sekilde

XCodeun Interface Builder ekran gzkmektedir.Ekrandaki sol panel program


dosyalarnn yer aldg ksmdr.Genellikle ViewContreller.h ve ViewController.m dosyaslarna girilerek kod yazm gereklestirilir.Ortadaki ekran ise ViewControllerdr.Bilesenlerin
srkleyip brakldktan sonra simlatr ekrannda grlecek ksmdr.Ayrca ViewConrollera eklenen bilesenlerin evetleri bu ekranda olusturularak daha az kod yazmna olanak saglamaktadr.Sag st ksedeki 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 ktphanesi yer almaktadr.Buradan Vieweklenmek istenen bilesen srklenip braklarak eklenebilir.// XCode ile uygulama olustururken Interface Buildern sol panelinde bulunan
ViewController.h yani baslk dosyas ViewController.m yani uygulama dosyalar ile islem yaplmaktadr.Bunlardan .h uzantl dosyamz arayzmzn tanmlandg dosyadr
yani arayze eklenecek buttonlar labeller burada tanmlanmak durumundadr..m uzantl 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 olarak ta eslestirilmesi gerekmektedir.
11

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 konumundadr.Uygulama gelistiriRken programda kullanlan snflarn hangi atya ait oldugu bilinmesi gereklidir.Aksi taktirde program hatasz dahi olsa nesnelerin atlar eklenmedigi
iin hata ile karslaslacaktr.Asagda uygulama gelistirirken kullandgm ve bilinmesi gereken 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 Core
Foundation 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 saglayan Label ve TextField gibi nesneleri barndrr.
Map Kit Fremawork :Harita uygulamas gelistirirken kullanlacak metot ve snfar ierir.
Core Location Framework:Bu uygulama atsnda genelikle cografi konum verilmesi
gereken uygulamalarda kullanlmas gereken metotlar ierir.

12

3
3.1

BLM 2 : UYGULAMA SRECI


Uygulama : Hello World
Ilk

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 zelligi 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

Uygulama simlatrde alstrlarak resimde gsterilen hali elde edildi.Arayzlerin arasnda geis yaplarak ekrana HelloWorld yazdrld.

14

View2.h
#import <UIKit/UIKit.h>//Label ve Buton iin
kullanlacak Framework ekleniyor
@interface View2 : UIViewController
{
IBOutlet UILabel *lbl;//Label event interface ile
ba
glanm
str

}
-(IBAction)Button:(id) sender;//Butona basld
g anda
15

olayn gerekle
smesi iin interface ile action
olu
sturuluyor.
@end

View.m

#import "View2.h"//Ba
slk dosyas e
grlyor.
@implementation View2
//Ba
slk dosyasnda tanmlanan buton action iin
metodu olu
sturuluyor.Bu metot ile butona basld
g 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 giriniz seklinde bir mesaj yazlmak iin kullanlmstr.Hibir event yoktur.Textfield bileseninde ise kullancdan isim alnmaktadr.Outlet olay eklenir.Textfield in altnda bulunan 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 eklenerek,kullancdan alnan ismin Labelda gzkmesi saglanmaktadr.
Uygulama resimleri
16

ViewController.h

#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
{

IBOutlet UILabel *Metin;

//Interfacede olu
sturulan
bile
senlerin eventlar tanmlanyor.
17

IBOutlet UITextField *Kullanici_Ismi;

}
//Interfacede bulunan butona basld
g anda olayn
gerekle
smesi iin metot tanmlanyor.
-(IBAction) YazdirMetodu;
@end
ViewController.m
#import "ViewController.h"//Ba
slk dosyas a
grlyor.
@interface ViewController ()
@end
@implementation ViewController
-(IBAction) YazdirMetodu:(id)sender
{
//Texfielde girilen string de
ger iin bellekte yer
ayrlyor.Daha sonra string de
ger Labela
yazdrlyor.
NSString *MetniOku = [[NSString alloc] initWithFormat:
@"Hosgeldiniz Sayn, %@", [Kullanici_Ismi text]];

//Textte girilen ve belle


ge kaydedilen veri a
grlyor.
[Metin setText:MetniOku];

}
@end

3.3

Dijital Saat Uygulamas

Yaplmas tasarlanan alarm uygulamasnda kullanlacak dijital saat iin sistem saatini alabilecek basit bir uygulama olusturuldu.Bylelikle alarm uygulamas iin gereken n ha18

zrlk,dijital saat olusturularak tamamland.


Ekranda gzkecek dijjtal saat iin ViewControllera Label bileseni eklenerek event baglants yapld.
Uygulama Resimleri

ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController {
IBOutlet UILabel *label;//Label olay tanmlanyor.

NSTimer *saat ;//NSObject snfndan kaltm olarak


19

alnan NSTimer nesnesi saat iin tanmlanyor.


}
-(void)saatFonk;//De
ger gndermeyen Fonk tanmlanyor.
@end
ViewController.m
#import "ViewController.h"//Ba
slk dosyas a
grlyor.
@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
ba
slk 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

}
//Program da hazr gelen metot oldu
gu iin ba
slk
dosyasnda tanmlanmad.Programda bir i
slevi yok

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];

}
@end

3.4

Hatrlatc Uygulamas

Ilk basta alarm uygulamas olarak tasarlanan uygulama,simlatrde ki sesli uyar sorunundan dolay hatrlatc uygulamas olarak degistirildi.Bu uygulamada kullancnn girecegi herhangi bir konu ve yine kullancnn belirleyecegi tarih ve saatte ekrana bir uyar
mesaj gelecektir.Simlatr o anda kapal olsa dahi kullanc yoksaymadg srece simlatr her atgnda uyar olarak ana mende gsterilmektedir.Ayrca arayze eklenen
schedule 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 baglant saglanmstr.
Uygulama Resimleri
21

HatirlaticiViewController.h
22

#import <UIKit/UIKit.h>//Interfacede bile


senler iin
at ekleniyor.

@interface HatirlaticiViewController : UIViewController


//Snf olu
sturulup nerden tredi
gi belirtiliyor.

<UITextFieldDelegate> {
UITextField *hatirlatText;//Texfield
tanmlamas yaplyor.

UISegmentedControl *scheduleControl;//

UIButton *setButton;//Ayarla butonunun tanmlamas yaplyor.

UIButton *clearButton;//Sil butonu tanmlamas


yaplyor.

UIDatePicker *datePicker;//DatePicker tanmlamas yaplyor.


}

//Bile
senlerde olu
sturulan 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

*datePicker;

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


- (IBAction)scheduleNotification;
- (void)showReminder:(NSString *)text;//Hatrlatcnn
ekranda mesaj vermesini sa
glayan metot tanm
yaplyor.
@end
HatirlaticiViewController.m,
#import "HatirlaticiViewController.h"//Ba
slk dosyas
a
grlyor.

@implementation HatirlaticiViewController//olu
sturulan
snf a
grlyor.

//Ba
slkta tanmlanan zellikler iin program
derlendi
ginde eventlarn olu
smas sa
glanr.

@synthesize hatirlatText;
@synthesize scheduleControl;
@synthesize setButton;
@synthesize clearButton;
@synthesize datePicker;

//A
sa
gdaki metot ile kullancnn ayarlam
s oldu
gu
tarihe gre textte girilen metnin ekrana yklenmesi
sa
glanr.

- (void)viewDidLoad {

24

datePicker.minimumDate = [NSDate date];


hatirlatText.delegate = self;
}

//Bile
senler iin bo
s de
ger gnderilmesi sa
glanr.
- (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
kullanlmad
gnda hafzaya geri iade etmek iin
kullanlm
str.
- (void)dealloc {
[hatirlatText release];
[scheduleControl release];
[clearButton release];
[setButton release];
[datePicker release];
[super dealloc];
}

25

- (void)clearNotification {

[[UIApplication sharedApplication]
cancelAllLocalNotifications];
}
//schedule nesnesi dakika,saat,gn ,hafta ve hibir
zaman olarak ayarlanmas iin NSDate snfna ait
metotlar kullanlarak kontrol olu
sturuluyor.

- (void)scheduleNotification {

[hatirlatText resignFirstResponder];
[[UIApplication sharedApplication]
cancelAllLocalNotifications];
Class cls = NSClassFromString(@"UILocalNotification");
if (cls != nil) {

UILocalNotification *notif = [[cls alloc] init];


notif.fireDate = [datePicker date];
notif.timeZone = [NSTimeZone defaultTimeZone];

//Belirlenen index numarasna gre tekrarlama


i
slemleri case ile olu
sturuluyor.

NSInteger index = [scheduleControl


selectedSegmentIndex];
switch (index) {
case 1:
notif.repeatInterval =
NSMinuteCalendarUnit;
26

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 de
gerine gre textin
tekrarlanmas sa
glanyor.Nesne kaldrlrsa
belle
ge kaydedilen nesnenin yeri belle
ge iade
ediliyor.
NSDictionary *userDict = [NSDictionary
dictionaryWithObject:hatirlatText.text
forKey:kRemindMeNotificationDataKey];
notif.userInfo = userDict;

[[UIApplication sharedApplication]
scheduleLocalNotification:notif];
[notif release];
}
27

//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

29

3.5

MapKit Uygulamas

Son uygulamada sensrler kullanlarak kullancnn anlk konumunu alan bir IOS uygulamas gelistirilmeye alsld.Ancak simlatrden deger aldg iin ve telefonda deneme
imkan olmadg iin program srekli default bir konum belirledi.Bunun nereden kaynaklandg 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 gereklestirdikten sonra kod ksmna geildi.

30

ViewController.h
#import <UIKit/UIKit.h>//Bile
sen ats ekleniyor.
#import <MapKit/MapKit.h>//MapView bile
seni

iin ats

ekleniyor.
#import <CoreLocation/CoreLocation.h>//Lokasyon
verilmesi iin ats ekleniyor.

@interface ViewController : UIViewController {

MKMapView *mapView;//Interfacede eklenen Map


bile
seni tanmlanyor.

@end
ViewController.m
#import "ViewController.h"//Ba
slk dosyas a
grlyor.
#import "pin.h"//Pin iin ba
slk dosyas a
grlyor.

@implementation ViewController
31

- (void)viewDidLoad {

[super viewDidLoad];

mapView = [[MKMapView alloc]


initWithFrame:self.view.bounds];
mapView.mapType = MKMapTypeHybrid;

//Harita iin enlem ve boylam de


gerleri belirlenir.

CLLocationCoordinate2D coord =
{latitude: 38, longitude: 27};

//Lokasyona gre hatitada yaknla


strma
de
gerleri girliyor.
MKCoordinateSpan span =
{latitudeDelta: 2, longitudeDelta: 2};
MKCoordinateRegion region = {coord, span};

//Koordinantlar verilen blgeye pin


yerle
stiriliyor.Mesaj yazdrlyor.

[mapView setRegion:region];
[self.view addSubview:mapView];
pin *mypin = [[pin alloc]
initWithName:@"Buradayim"coordinate:
CLLocationCoordinate2DMake(38, 27)];

[self->mapView addAnnotation:mypin];

}
32

//.m dosyasna hazr eklnene bir metotdur default olarak


eklendi
gi iin pek bir i
slevi olmuyor.

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

}
@end

Map uygulamasnda pin eklenmeden sadece lokasyon girilerek olusturulan harita grnts sekilde gsterilmektedir.Burada grirlen enlem ve boylam degerlerine uygun harita
grnts alnr ancak net konum belirlenmemistir.Sekildeki

harita grntsnde Izmirin


enlem ve boylam degerleri grirlerek olusturulmustur.

Bu islemlerden sonra kod ksmnda girilen koordinat alnyordu ancak tam olarak gittigi 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 metotlar eklenmistir.Sekilde

yeni bir View Class dosyas almas gsterilmektedir.


33

pin.h
#import <Foundation/Foundation.h>//Genel snfn
atsdr.
#import <MapKit/MapKit.h>
// pin adnda NSObject snfndan treyen bir snf
olu
sturulmu
stur.

@interface pin : NSObject <MKAnnotation>//Pin iin


gerekli bir ktphane eklenir.

34

//verilen koordinatlar yani pinin bulundu


gu
koordinatlar, herhangi bir isimle kaydedilmi
sse bu
ismin grnmesine araclk eden nesne olarak
tanmlanm
str.

//her kanaldan ula


slamayan ve gnderilen nesnenin
kopyasn alan pointer olu
sturulur.

@property (nonatomic,copy) NSString *title;

//Pinin bulundu
gu koordinantlarn alnabilmesi iin
tanmlanm
str.
@property (nonatomic,assign) CLLocationCoordinate2D
coordinate;

-(id)initWithName:(NSString*)name coordinate
:(CLLocationCoordinate2D)coordinate;
@end

pin.m
#import "pin.h"
//Pinin ba
slk dosyas a
grlr.
@implementation pin
//Ba
slk dOsyasnda tanmlanan dosyamz a
grlyor.

@synthesize title,coordinate;// zellik metotlarnn


derlenme annda olu
sturulmasn sa
glar.

//Bir konumu kolaylkla tanmlamak iin initWithName


35

metodunu ekliyoruz. Bu metodun i


slemi i de
gi
skenleri
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

SONULAR
Bu proje uygulamas sonucunda sadece MAC OSX isletim sistemine sahip bir bilgisayarla
yaplabilecek uygulamalarn Windowsta da gelistirilebilecegi grenildi.Ayrca Windows
bilgisarnn islemcisine gre sanal Macin performansnn nasl degistrebilecegi grlms
oldu.

37

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

ZGEMIS
KIS ISEL BILGILER

Ad Soyad

: ZHAL CALAYOGLU

Uyrugu

: T.C

Dogum Yeri ve Tarihi: KASTAMONU 06.07.1992


Adres

: Bilecik

Telefon

: 05434467327

e-mail

: zuhalcalayoglu@gmail.com

ITIM DURUMU
EG

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

39

You might also like