This is a short story of OSX and iOS, and an introduction to Objective-C, the language powering Mac OS X and iOS mobile operating system.
...In this presentation you will see how and when the OSX and iOS started,
... How OSX and IOS differ
... Introduction to Objective-C, and some key features of objective-C
...This presentation don't teach you how to become a programmer, but it gives the binding understand on how and when things came the way they are .
...
17. iOS
iOS (before 24, June 2010 — iPhone OS)
Is an operating system which powers apple’s
devices (iPhone, iPad, iPod-touch, AppleTV)
18. OSX vs iOS
•
The architecture for which the kernel and binaries are compiled is
ARM-based, rather than Intel i386 or x86_64. The processors may be
different (A4, A5, A5X, etc), but all are based on designs by ARM.
The main advantage of ARM over Intel is in power management,
which makes their processor designs attractive for mobile operating
systems such as iOS, as well as its arch-nemesis, Android.
!
•
The kernel sources remain closed — even though Apple promised to
maintain XNU, the OS X Kernel, as open source, it apparently frees
itself from that pledge for its mobile version. Occasionally, some of
the iOS modifications leak into the publicly available sources (as can
be seen by various #ifdef,__arm__, and ARM_ARCH conditionals),
though these generally diminish in number with new kernel versions.
19. OSX vs iOS
•
•
•
•
The kernel is compiled slightly differently, with a focus on
embedded features and some new APIs, some of which
eventually make it to OS X, whereas others do not.
The system GUI is Springboard, the familiar touch-based
application launcher, rather than Aqua, which is mouse-driven
and designed for windowing..
Memory management is much tighter, as there is no nigh-infinite
swap space to fall on.
The system is hardened, or “jailed,” so as not to allow any access
to the underlying UNIX APIs (i.e. Darwin), nor root access, nor any
access to any directory but the application’s own. Only Apple’s
applications enjoy the full power of the system. App Store apps
are restricted and subject to Apple’s scrutiny.
20. OSX vs iOS
•
•
•
•
The kernel is compiled slightly differently, with a focus on embedded
features and some new APIs, some of which eventually make it to OS
X, whereas others do not.
The system GUI is Springboard, the familiar touch-based application
launcher, rather than Aqua, which is mouse-driven and designed for
windowing..
Memory management is much tighter, as there is no nigh-infinite swap
space to fall on. As a consequence, programmers have to adapt to
harsher memory restrictions and changes in the programming model.
The system is hardened, or “jailed,” so as not to allow any access to
the underlying UNIX APIs (i.e. Darwin), nor root access, nor any
access to any directory but the application’s own. Only Apple’s
applications enjoy the full power of the system. App Store apps are
restricted and subject to Apple’s scrutiny.
21. OSX vs iOS
There some differences in API point of view
!
•
•
OSX: Cocoa-API e.g NS(Button,View..)
iOS: UITouch, or Cocoa-Touch e.g UI(Button, View)
22. Objective-C
Is the general purpose programming language which
adds some SmallTalk-style messaging in C (developed
in early-80’s).
•
Designed by: Brad Cox & Tom Love
•
Was selected as the main language used by NeXT for its
NEXTSTEP OS
Now: is the language powering both OSX & iOS
•
23. Objective-C |
Its:
•
•
OOP (adds object capabilities to pure C)
dynamic, (U-can determine which messages to send to
at runtime, and not at compile time)
•
Single inheritance, (NSObject is the super class of
all subclasses)
24. Objective-C |
•
•
Delegation (Like callBacks, powerful)
Protocols, (acts as substitute for multiple inheritance,
like java interfaces)
•
Categories, (Adds functionality to an existing classes
aka adding some more methods for an existing classes)
25. Objective-C |
•
Notifications (Objects can register for Notifications
events)
•
KVC/KVO, (Accessing object properties by key or by
value, Listening for object’s properties change)
•
Blocks, (Powerful feature added in iOS-4, & OSX-10.6,
They enable you to do powerful operations e.g concurrencies )
26. Objective-C | GCD
GCD: simply is the multi-threading API
•
•
•
•
•
•
•
dispatch_object_t
dispatch_source_t
dispatch_queue_t
dispatch_group_t
dispatch_semaphore_t
dispatch_time_t
dispatch_once_t