{"id":1009,"date":"2020-04-02T12:05:19","date_gmt":"2020-04-02T09:05:19","guid":{"rendered":"http:\/\/hilmibilici.com\/blog\/?p=1009"},"modified":"2020-04-02T12:05:19","modified_gmt":"2020-04-02T09:05:19","slug":"2-bolum-ders-2-ios-programlama","status":"publish","type":"post","link":"http:\/\/hilmibilici.com\/?p=1009","title":{"rendered":"2.B\u00f6l\u00fcm Ders 2: IOS Programlama"},"content":{"rendered":"<h3 class=\"course-item-title question-title\">2.B\u00f6l\u00fcm Ders 2: IOS Programlama<\/h3>\n<div class=\"content-item-description lesson-description\">\n<h3>B. IOS Programlama<\/h3>\n<p>iOS, Apple firmas\u0131n\u0131n mobil platformlar i\u00e7in geli\u015ftirdi\u011fi bir mobil i\u015fletim sistemidir. \u00c7ekirde\u011fini MAC OSX den alan iOS i\u00e7inde 4 katman bulundurmaktad\u0131r:<\/p>\n<ul>\n<li>Core OS tabakas\u0131 (Sockets ve dosya sisteminin oldu\u011fu nesneye y\u00f6nelik olmayan katmand\u0131r),<\/li>\n<li>Core Servisleri tabakas\u0131 (nesneye y\u00f6nelik ara y\u00fczlerle bu i\u015fletim sisteminin \u00e7o\u011funu kapsad\u0131\u011f\u0131 katmand\u0131r),<\/li>\n<li>Medya tabakas\u0131 (Ses, m\u00fczik, video gibi dosyalar\u0131n \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131 katmand\u0131r.),<\/li>\n<li>Cocoa Touch tabakas\u0131 (Dokunmatik ekran \u00fczerinde yap\u0131lan parmak hareketlerini alg\u0131layan bir yap\u0131ya sahip ve nesneye y\u00f6nelik bir ara y\u00fcz\u00fcn oldu\u011fu en \u00fcst katmand\u0131r).<\/li>\n<\/ul>\n<p><!--more--><br \/>\nProgramc\u0131lar uygulama geli\u015ftirmeye ba\u015flamadan \u00f6nce i\u015fletim sistemi s\u00fcr\u00fcmlerinin kullan\u0131m oranlar\u0131n\u0131 mutlaka g\u00f6zden ge\u00e7irmelidir. \u00c7\u00fcnk\u00fc programlarda haf\u0131za y\u00f6netimi (Garbage Collection) \u00e7ok \u00f6nemlidir. \u00d6zellikle baz\u0131 s\u00fcr\u00fcmlerden sonra ortaya \u00e7\u0131kan yap\u0131lar geli\u015ftiricinin \u00fcst\u00fcnden y\u00fck\u00fc kald\u0131r\u0131r. \u00d6rne\u011fin iOS 7 ile birlikte standart haline gelen \u201cARC\u201d gibi. Automatic Reference Counting kelimelerinin k\u0131saltmas\u0131 olan bu sistem nesnelerin yarat\u0131ld\u0131ktan sonra onlar\u0131n haf\u0131zadaki durumunu d\u00fczenleyen sistemdir. Bu sistem sayesinde her seferinde nesneleri elle bellekten \u00e7\u0131karmam\u0131za gerek kalmayacakt\u0131r. Bu da programc\u0131ya b\u00fcy\u00fck bir kolayl\u0131k sa\u011flamaktad\u0131r.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-774\" src=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/oranlar.jpg\" sizes=\"(max-width: 640px) 100vw, 640px\" srcset=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/oranlar.jpg 640w, http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/oranlar-300x180.jpg 300w, http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/oranlar-555x335.jpg 555w\" alt=\"\" width=\"640\" height=\"385\" \/><\/p>\n<p>\u015eekil 12: Kullan\u0131m oranlar\u0131<\/p>\n<p>iOS i\u015fletim sistemleri i\u00e7in programlama dili olarak Objective-C kullan\u0131lmaktad\u0131r. Dil genel olarak olarak C tabanl\u0131d\u0131r. Fakat C dilinden olduk\u00e7a farkl\u0131 \u00f6zellikleri de vard\u0131r.<\/p>\n<p><strong>Objective-c Programlama Dili<\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-773\" src=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/obj-c.png\" sizes=\"(max-width: 590px) 100vw, 590px\" srcset=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/obj-c.png 590w, http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/obj-c-300x200.png 300w\" alt=\"\" width=\"590\" height=\"393\" \/><\/p>\n<p>\u015eekil 13: Objective-C Programlama dili<\/p>\n<p>Objective-C, C dilinin \u00fczerine yaz\u0131lm\u0131\u015f, yans\u0131mal\u0131, nesne y\u00f6nelimli bir programlama dilidir. 1983 y\u0131l\u0131nda geli\u015ftirilmeye ba\u015flanan dil ObjC, Objective C ve Obj-C olarak da isimlendirilir. 26 Ekim 2007 tarihinden itibaren Apple firmas\u0131 taraf\u0131ndan geli\u015ftirilmeye ba\u015flanan dil OpenStep standard\u0131 \u00fczerine kurulu olan Mac OS X ve GNUstep i\u015fletim sistemlerinde kullan\u0131lmaktad\u0131r.<\/p>\n<p>Objective-C, C\u2019nin syntax\u2019\u0131(s\u00f6zdizimini), ilkel t\u00fcrleri ve ak\u0131\u015f kontrol deyimlerini miras al\u0131r. S\u0131n\u0131flar\u0131 ve y\u00f6ntemleri tan\u0131mlamak i\u00e7in s\u00f6z dizimi ekler. Objective-C, dinamik yazma ve ba\u011flama sa\u011flayar. Ayn\u0131 zamanda nesne grafik y\u00f6netimi ve nesne haz\u0131rl\u0131klar\u0131 i\u00e7in dil seviyesi deste\u011fi de ekler.<\/p>\n<p>TIOBE indekslerine g\u00f6re iOS programlama i\u00e7in yaz\u0131l\u0131m geli\u015ftiricilerin y\u0131llarca ilk tercihi olan ve C programlama dili esaslar\u0131na dayanan\u00a0Objective-C listede ge\u00e7en y\u0131la g\u00f6re iki s\u0131ra y\u00fckselmi\u015f olmas\u0131na ra\u011fmen pop\u00fclerlik bak\u0131m\u0131ndan sonra \u00e7\u0131kan Swift\u2019in gerisindedir.\u00a0<a href=\"http:\/\/tez.hilmibilici.com\/kurslar\/mobil-programlama-temelleri\/lessons\/2-bolum-ders-2-ios-programlama\/#_ftn1\" name=\"_ftnref1\">[1]<\/a><\/p>\n<p>Objective-C\u2019deki mod\u00fcl dosyalar\u0131 \u201c.m\u201d uzant\u0131s\u0131na sahiptir. Ba\u015fl\u0131k dosyalar\u0131 \u201c.h\u201d d\u0131r.\u00a0Objective-C\u2019de olu\u015fturulan t\u00fcm nesneler dinamik belle\u011fe yerle\u015ftirilmelidir.\u00a0Bu nedenle, herhangi bir s\u0131n\u0131ftaki bir nesnenin bir g\u00f6stergesi olan id t\u00fcr\u00fc \u00f6zel bir \u00f6nem ta\u015f\u0131r.<\/p>\n<p>A\u015fa\u011f\u0131daki \u00f6rnekte, bir for d\u00f6ng\u00fcs\u00fc i\u00e7inde tan\u0131mlanm\u0131\u015f bir x de\u011fi\u015fkeni var.\u00a0Bu, x\u2019in o blokta yerel oldu\u011fu anlam\u0131na gelir.\u00a0For d\u00f6ng\u00fcs\u00fc i\u00e7inde x\u2019e eri\u015febiliriz ancak ba\u015fka hi\u00e7bir yerde eri\u015filmez.<\/p>\n<p>#import<br \/>\nint main (int argc, const char * argv[]) {<br \/>\nint i;<br \/>\nfor (i=0; i&lt;10; i++) {<br \/>\nint x = 10;<br \/>\nNSLog(@\u201dx = %i\u201d, x);<br \/>\n}<br \/>\nNSLog(@\u201dx = %i\u201d, x); \/\/ x\u2019in s\u0131n\u0131rlar\u0131 d\u0131\u015f\u0131nda kullan\u0131lm\u0131\u015f<br \/>\n}<\/p>\n<p><strong>Swift Programlama Dili<\/strong><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-776\" src=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/swift.jpg\" sizes=\"(max-width: 743px) 100vw, 743px\" srcset=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/swift.jpg 743w, http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/swift-300x145.jpg 300w\" alt=\"\" width=\"743\" height=\"360\" \/><\/p>\n<p>\u015eekil 14: Swift Programlama Dili<\/p>\n<p>Swift \u00a02 Haziran 2014 y\u0131l\u0131nda Apple taraf\u0131ndan d\u00fczenlenen WWDC<a href=\"http:\/\/tez.hilmibilici.com\/kurslar\/mobil-programlama-temelleri\/lessons\/2-bolum-ders-2-ios-programlama\/#_ftn2\" name=\"_ftnref2\">[2]<\/a>\u00a0konferans\u0131nda duyrulan, iOS ve OS X platformlar\u0131na uygulamalar geli\u015ftirmek i\u00e7in olu\u015fturulmu\u015f, \u00f6\u011frenilmesi kolay, nesne y\u00f6nelimli ve g\u00fc\u00e7l\u00fc bir dildir.<\/p>\n<p>Swift, C ve Objective-C\u2019deki en iyileri bir araya getiren iOS ve OS X sistemlerine uygulamalar geli\u015ftirmek i\u00e7in tasarlanan yeni bir programlama dilidir. Xcode derleyicisi kullanarak tasarlanabilir.<\/p>\n<p>Swift\u00a0dilinin haz\u0131rlanmas\u0131nda sadece Objective-C, de\u011fil Rust, Haskell, Ruby, Python gibi bir\u00e7ok programlama dilinden faydalan\u0131lm\u0131\u015ft\u0131r.<\/p>\n<p>Swift, kullan\u0131m\u0131 kolay ve a\u00e7\u0131k kaynak kodlu bir programlama dilidir. Bir \u00e7ok \u00fcniversite ve e\u011fitim kurumlar\u0131nda, bilgisayar programlama derslerinde \u00f6\u011fretiliyor olmas\u0131 gelece\u011fini g\u00fc\u00e7lendirmektedir. Swift, ger\u00e7ek zamanl\u0131 geri bildirim olana\u011f\u0131 sa\u011flayan ve mevcut Objective-C koduna sorunsuz bir \u015fekilde monte edilebilir.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-775\" src=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/swift-ile.png\" sizes=\"(max-width: 800px) 100vw, 800px\" srcset=\"http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/swift-ile.png 800w, http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/swift-ile-300x195.png 300w, http:\/\/tez.hilmibilici.com\/wp-content\/uploads\/2019\/03\/swift-ile-768x499.png 768w\" alt=\"\" width=\"800\" height=\"520\" \/><\/p>\n<p>\u015eekil 15: Swift dili ile yaz\u0131lm\u0131\u015f pop\u00fcler uygulamalar.<\/p>\n<p>Daha detayl\u0131 bilgi i\u00e7in\u00a0<a href=\"https:\/\/www.apple.com\/tr\/swift\/\">https:\/\/www.apple.com\/tr\/swift\/<\/a>\u00a0adresi ziyaret edile bilinir.<\/p>\n<p>Apple, Swift\u2019in Objective-C\u2019den 2,6 kat, Python\u2019dan 8,4 kat daha h\u0131zl\u0131 oldu\u011funu s\u00f6yl\u00fcyor. K\u0131sacas\u0131 dilin ana felsefesi sadeli\u011fi, h\u0131z\u0131 ve g\u00fcvenli\u011fidir<\/p>\n<table width=\"605\">\n<tbody>\n<tr>\n<td width=\"281\"><strong>Benzerlikler<\/strong><\/td>\n<td width=\"324\"><strong>Farkl\u0131l\u0131klar<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"281\">Int, Float, Double gibi say\u0131sal t\u00fcrleri<\/td>\n<td width=\"324\">Swift\u2019te noktal\u0131 virg\u00fcl (;) kullan\u0131m\u0131 zorunlu de\u011fil<\/td>\n<\/tr>\n<tr>\n<td width=\"281\">for\u2026in\u00a0numaraland\u0131rma s\u00f6z dizilimleri<\/td>\n<td width=\"324\">Ba\u015fl\u0131k dosyalar\u0131 Swift\u2019te bulunmamakta<\/td>\n<\/tr>\n<tr>\n<td width=\"281\">Apple \u00fcr\u00fcnleri i\u00e7in halen geli\u015ftirmeye devam etmeleri<\/td>\n<td width=\"324\">Swift\u2019te String ifadeler Unicode\u2019u tamam\u0131 ile desteklenir<\/td>\n<\/tr>\n<tr>\n<td width=\"281\"><\/td>\n<td width=\"324\">Syntax yap\u0131s\u0131 Objective C \u2018ye g\u00f6re olduk\u00e7a basit ve anla\u015f\u0131lmas\u0131 kolayd\u0131r.<\/td>\n<\/tr>\n<tr>\n<td width=\"281\"><\/td>\n<td width=\"324\">Haf\u0131za\/Bellek Y\u00f6netimi (Memory Management) Swift\u2019te daha esnek<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Tablo5.2: Swift, Objective C kar\u015f\u0131la\u015ft\u0131rmas\u0131<\/p>\n<p>Swift geli\u015ftiricileri bu programlama dili ile telefonlar, ak\u0131ll\u0131 saatler ve Apple bilgisayarlar i\u00e7in mobil uygulamalar yazmak i\u00e7in kullan\u0131r.\u00a0Google\u2019\u0131n Android\u2019i tamamen Swift\u2019e transfer etmek istedi\u011fine dair bir s\u00f6ylenti bile vard\u0131. \u00d6nemli olan nokta, 2016 sonbahar\u0131nda Apple\u2019\u0131n herkesin iOS i\u00e7in uygulamalar\u0131 nas\u0131l programlayaca\u011f\u0131n\u0131 \u00f6\u011frenebilece\u011fi bir \u00f6\u011frenim merkezinin a\u00e7\u0131l\u0131\u015f\u0131na katk\u0131da bulunmas\u0131.\u00a0Ancak hepsi bu kadar de\u011fil, Swift zaten bir\u00e7ok lider e\u011fitim kurumunun m\u00fcfredat\u0131na d\u00e2hil edildi.\u00a0Bu programlama dili b\u00fcy\u00fck bir potansiyele sahip oldu\u011funu g\u00f6steriyor.<\/p>\n<p><a href=\"http:\/\/tez.hilmibilici.com\/kurslar\/mobil-programlama-temelleri\/lessons\/2-bolum-ders-2-ios-programlama\/#_ftnref1\" name=\"_ftn1\">[1]<\/a>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<a href=\"https:\/\/www.tiobe.com\/tiobe-index\/\">https:\/\/www.tiobe.com\/tiobe-index\/<\/a>\u00a0 (24.01.2019)<\/p>\n<p><a href=\"http:\/\/tez.hilmibilici.com\/kurslar\/mobil-programlama-temelleri\/lessons\/2-bolum-ders-2-ios-programlama\/#_ftnref2\" name=\"_ftn2\">[2]<\/a>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<strong>WWDC<\/strong>: Apple etkinlikleri\u00a0 (\u00a0<a href=\"https:\/\/developer.apple.com\/wwdc\/\">https:\/\/developer.apple.com\/wwdc\/<\/a>\u00a0)<\/p>\n<blockquote><p>Bu ve devam edecek anlat\u0131mlar\u0131n tamam\u0131 ve s\u0131navlar<\/p>\n<p><a href=\"http:\/\/tez.hilmibilici.com\">tez.hilmibilici.com\u00a0<\/a><\/p>\n<p>alt domaininde yay\u0131ndad\u0131r. Tezimi payla\u015f\u0131ma a\u00e7\u0131yorum. Al\u0131n teridir, l\u00fctfen payla\u015f\u0131rken kaynak belirtmeyi unutmay\u0131n.<span style=\"font-size: 16px;\">\u00a0<\/span><\/p><\/blockquote>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>2.B\u00f6l\u00fcm Ders 2: IOS Programlama B. IOS Programlama iOS, Apple firmas\u0131n\u0131n mobil platformlar i\u00e7in geli\u015ftirdi\u011fi bir mobil i\u015fletim sistemidir. \u00c7ekirde\u011fini&#8230;<\/p>\n","protected":false},"author":1,"featured_media":83425,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[42],"tags":[205,238,303,331,332,446],"class_list":["post-1009","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mobprog","tag-garbage-collection","tag-ios-programlama","tag-mobil-programlama","tag-objective-c","tag-objective-c-programlama-dili","tag-swift-programlama-dili"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/hilmibilici.com\/index.php?rest_route=\/wp\/v2\/posts\/1009","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/hilmibilici.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/hilmibilici.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/hilmibilici.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/hilmibilici.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1009"}],"version-history":[{"count":0,"href":"http:\/\/hilmibilici.com\/index.php?rest_route=\/wp\/v2\/posts\/1009\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/hilmibilici.com\/index.php?rest_route=\/"}],"wp:attachment":[{"href":"http:\/\/hilmibilici.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1009"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/hilmibilici.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1009"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/hilmibilici.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1009"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}