Professional Documents
Culture Documents
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
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
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
ZHAL CALAYOGLU
14 Ocak 2015
iii
Iindekiler
ZET
ii
TESEKKR
iii
IS
1 GIR
1.1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2
2.3
. . . . . . . . . . . . . . . . . . .
2.3.1
IOS SIMULATOR . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.3.2
INTERFACE BUILDER . . . . . . . . . . . . . . . . . . . . . .
10
2.3.3
FRAMEWOKS . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
13
3.1
13
3.2
16
3.3
18
3.4
Hatrlatc Uygulamas . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.5
MapKit Uygulamas . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
SONULAR
37
KAYNAKLAR
38
ZGEMIS
39
iv
IS
GIR
1.1
2
2.1
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
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
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
2.2
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 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
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
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
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
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
{
//Interfacede olu
sturulan
bile
senlerin eventlar tanmlanyor.
17
}
//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]];
}
@end
3.3
Yaplmas tasarlanan alarm uygulamasnda kullanlacak dijital saat iin sistem saatini alabilecek basit bir uygulama olusturuldu.Bylelikle alarm uygulamas iin gereken n ha18
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController {
IBOutlet UILabel *label;//Label olay tanmlanyor.
}
//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
<UITextFieldDelegate> {
UITextField *hatirlatText;//Texfield
tanmlamas yaplyor.
UISegmentedControl *scheduleControl;//
//Bile
senlerde olu
sturulan olaylar gderiliyor.
*datePicker;
@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
//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) {
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
- (void)showReminder:(NSString *)text {
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.
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.
@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];
CLLocationCoordinate2D coord =
{latitude: 38, longitude: 27};
[mapView setRegion:region];
[self.view addSubview:mapView];
pin *mypin = [[pin alloc]
initWithName:@"Buradayim"coordinate:
CLLocationCoordinate2DMake(38, 27)];
[self->mapView addAnnotation:mypin];
}
32
- (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
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
pin.h
#import <Foundation/Foundation.h>//Genel snfn
atsdr.
#import <MapKit/MapKit.h>
// pin adnda NSObject snfndan treyen bir snf
olu
sturulmu
stur.
34
//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.
- (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
: Bilecik
Telefon
: 05434467327
: zuhalcalayoglu@gmail.com
ITIM DURUMU
EG
Lisans grenimi
: Bilecik Seyh
Bitirme Yl
: 2015
Lise
Stajlar
ILGI ALANLARI
YABANCI DILLER
: Ingilizce
39