ios Development Γκόγκος Χρήστος
Λογισμικά Objective C Interface Builder Simulator Instruments XCODE
Simulator Cmd + Shift + H Home button Cmd + K εμφάνιση/απόκρυψη πληκτρολογίου Δυνατότητα για περιστροφή δεξιά (Cmd + ) και περιστροφή αριστερά (Cmd + ) Αλλαγή κλίμακας (scale) Cmd + 1, Cmd + 2, Cmd + 3 Η πραγματική απόδοση της εφαρμογής φαίνεται όταν η εφαρμογή τρέχει στην ίδια την συσκευή Περιορισμοί του Simulator Δεν έχει κάμερα Δεν έχει επιταχυνσιόμετρο
MVC https://developer.apple.com/library/ios/documentation/general/conc eptual/devpedia-cocoacore/mvc.html Το MVC design pattern επιβάλλεται κατά την δημιουργία εφαρμογών για το ios Τα modelαντικείμενα είναι διαχωρισμένα από τα view αντικείμενα ViewControllers Controller objects:.h.m View objects:.storyboard,.xib Για να γραφεί κώδικας που θα εκτελείται όταν γίνεται κάποιο event σε ένα view object θα πρέπει να οριστεί ένα IBAction Για να υπάρχει πρόσβαση από τον controller στα αντικείμενα view θα πρέπει να οριστούν ως IBOutlets
Delegation (εξουσιοδότηση- ανάθεση) Όλες οι ios εφαρμογές χρησιμοποιούν delegates Ένα αντικείμενο (delegate) ενεργεί εκ μέρους ενός άλλου αντικείμενου (delegating object). Επιτρέπει τη συγκέντρωση της λογικής που χειρίζεται την συμπεριφορά πολλών αντικειμένων σε ένα αντικείμενο @interface ViewContoller: UIViewController <UITextFieldDelegate> Δημιουργία ενός delegate Υλοποίηση των απαιτούμενωνμεθόδων που ορίζουν το delegate protocol Σήμανση της κλάσης ότι είναι delegate για το συγκεκριμένο protocol Σύνδεση του delegate αντικειμένου με το delegating αντικείμενο (με κώδικα ή στο Interface Builder)
ARC (Automatic Reference Counting) Η objective C μπορεί να διαχειριστεί τη μνήμη χρησιμοποιώντας την καταμέτρηση αναφορών (reference counting) Όσο υπάρχει τουλάχιστον 1 αναφορά προς ένα αντικείμενο το αντικείμενο παραμένει διαθέσιμο προς χρήση Αν δεν χρησιμοποιείται το ARC τότε θα πρέπει να χρησιμοποιηθεί η μέθοδος releaseγια να αποδοθεί ο χώρος που καταλαμβάνει ένα αντικείμενο όταν πλέον αυτός δεν χρησιμοποιείται @autoreleasepool { }
Data Structures NSArray NSDictionary NSSet NSMutableArray NSMutableDictionary NSMutableSet
strong/weak Strong: η αναφορά διατηρείται στο heap μέχρι να μην χρησιμοποιείται πλέον Weak: η αναφορά διατηρείται όσο κάποιος άλλος δείχνει προς αυτή με strong τρόπο
HIG (Human Interface Guidelines) Apple HIG ~ 200 pages Εξαιρετικά χρήσιμες συμβουλές και οδηγίες για πολλά θέματα που αφορούν την ευχρηστία των εφαρμογών Αν μια εφαρμογή δεν συμβαδίζει με το Apple HIG είναι πιθανό να «κοπεί» από το App Store https://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/index.html
ios Application Project Templates Master Detail iphone multiple pages ipad split view Page based Application (page flip) Single View Application Tabbed Application Game SpriteKit (2D games) SceneKit OpenGL Metal
Frameworks >50 frameworks UIKit UIKit/Dynamics Foundation Core Graphics (CG) Core Data
Core Data Το Core Data είναι ένα framework που επιτρέπει επικοινωνία με σχεσιακές βάσεις δεδομένων χρησιμοποιώντας όμως αντικείμενα αντί για πίνακες. Χρησιμοποιείται για ανάπτυξη εφαρμογών σε ios καθώς και σε OS X. Υποστηρίζει caching και έχει πολύ καλή απόδοση. Managed Objects: Είναι αντικείμενα που δημιουργούνται προκειμένου να αποθηκεύσουν δεδομένα. Managed Object Context: Αναλαμβάνει τη διαχείριση των managed objects. Αλλαγές που γίνονται στα managed objects διατηρούνται προσωρινά στο MOC και μεταφέρονται όταν αποφασισθεί στη ΒΔ. Managed Object Model: Ορίζει τις οντότητες (entities) που περιγράφουν το μοντέλο δεδομένων για τα managed objects. Κάθε οντότητα μπορεί να έχει ιδιότητες, σχέσεις fetched properties (ασθενείς σχέσεις) και fetch requests (προσχεδιασμένα ερωτήματα) Persistent Object Store: Υποδομή φυσικής αποθήκευσης των αντικειμένων (SQLite, XML, )
Μεταφορά application στο background Όταν μια εφαρμογή μεταφέρεται στο background παύει να είναι ενεργή και πλέον καταλαμβάνει ένα πολύ μικρό χώρο μνήμης Project Capabilities Background modes
Debugging Caveman debugging NSLog Xcode Debug Debug Navigator (CPU, Memory, stack trace) Inspect local variables Breakpoints (active inactive) Continue program execution Step into Step over Η διαγραφή του κώδικα IBOutlet ή IBAction θα πρέπει να συνοδεύεται και από την διαγραφή των αντίστοιχων events για τα σχετικά UI objects
Object Library Με κλικ στο καθένα εμφανίζεται σύντομο κείμενο σχετικά με τις βασικές του ιδιότητες που μπορούν να αλλάξουν Τα κίτρινα είναι ViewControllers User Interface controls UILabel UIButton UISegmentedControl UITextField UISlider UISwitch UIStepper UITableView UIImageView UITextView UIWebView UIScrollView UIDatePicker UIPicker
Auto Layout Constraint: Σχέση απόστασης ανάμεσα σε 2 controls Η δημιουργία constraints γίνεται με Ctrl + click από ένα control σε άλλο Editor Resolve Auto Layout Issues Add Missing constraints Στο Size Inspector και εφόσον έχουν εισαχθεί constraints για ένα αντικείμενο μπορεί να επιλεγεί κατάλληλη τιμή στο Content Compression Resistance Priorityέτσι ώστε να μην συμπιέζεται το αντίστοιχο control από τα άλλα controls
TableView Dequeued cells: Στη μνήμη κρατούνται μόνο τα κελία που είναι ορατά
AFNetworking
Blocks Χρησιμοποιούνται συχνά στα frameworks Διευκολύνουν τον προγραμματισμό Σε άλλες γλώσσες προγραμματισμού είναι γνωστά ως: anonymous functions, closures, lambdas ^(int a){ // code }
Grand Central Dispatch (GCD) Διευκολύνει την συγγραφή κώδικα που πρέπει να εκτελείται ταυτόχρονα Υλοποίηση που δεν επιβαρύνει το σύστημα Main Queueείναι η κύρια ουρά στην οποία δρομολογούνται όλες οι ενέργειες οι οποίες πρέπει να εκτελεστούν Το GCD μπορεί να δημιουργήσει επιπλέον ουρές Εργασίες που τοποθετούνται μια ουρά που έχει δημιουργηθεί με το GCD μπορούν να εκτελούνται παράλληλα με τις εργασίες που δρομολογούνται στην κύρια ουρά Δημιουργία ουράς και ανάθεση ονόματος σε αυτή (dispatch_queue_create) Δημιουργία blocks και αποστολή των blocks στην παραπάνω ουρά (dispatch_async) Το UI θα πρέπει να ενημερώνεται μόνο από την Main Queue (dispatch_get_main_queue)
SQLite + FMDB FMDB=Flying Meat Database https://github.com/ccgus/f mdb http://www.sqlite.org/
Segue Segueείναι η σύνδεση μεταξύ 2 views που επιτρέπει στο ένα view να εμφανίσει τα περιεχόμενα του άλλου view όταν πραγματοποιείται μια ενέργεια (π.χ. κλικ σε ένα πλήκτρο) Modal Segue: Χρησιμοποιείται όταν δεν χρειάζεται να περάσει πληροφορία από το ένα view στο άλλο
UIKit Dynamics Πρόκειται για μια physics engine η οποία μπορεί να χρησιμοποιηθεί σε αντικείμενα του UIKit Μπορούν να προστεθούν συμπεριφορές (behaviors) όπως βαρύτητα, δυνάμεις, και έλξη
MapKit Framework Το MapKit framework επιτρέπει να ενσωματωθούν απευθείας χάρτες σε εφαρμογές Υποστηρίζει σημειώσεις (annotations) πάνω στο χάρτη, υπέρθεση (overlay) περιεχομένου κ.α.