iOS Basics
The document provides an overview of iOS, including its architecture, frameworks, design patterns, and application life cycle. It discusses the core OS, core services, media, and Cocoa Touch layers. It describes the UIKit and Foundation frameworks, as well as design patterns like MVC, delegation, and managed memory. It also outlines the application objects, MVC roles, and the stages an app goes through from launch to termination.
Designing the foundations of an iOS application is important to reduce the cost of maintenance and evolution. In this session we will see some best practices on how to organize iOS apps both from the point of view of the Xcode project and the source code. Based on the typical iOS client/server application, we will see how to structure the layers ranging from the user interface to the netwrok layer.
Slides presented at #Pragma Conference 2013
http://pragmamark.org/eventi/pragma-conference-2013/
http://pragmamark.org/sessioni/pragma-conference-2013-building-ios-app-project-and-architecture/
Designing the foundations of an iOS application is important to reduce the cost of maintenance and evolution. In this session we will see some best practices on how to organize iOS apps both from the point of view of the Xcode project and the source code. Based on the typical iOS client/server application, we will see how to structure the layers ranging from the user interface to the netwrok layer.
Slides presented at #Pragma Conference 2013
http://pragmamark.org/eventi/pragma-conference-2013/
http://pragmamark.org/sessioni/pragma-conference-2013-building-ios-app-project-and-architecture/
Between Cocoa and Cocoa Touch: A Comparative Introductionlukhnos
Lukhnos gives a talk at a CocoaHeads Taipei talk on January 22, 2009. He talks about the common traits of Cocoa and Cocoa Touch and differences between the two, and shares some thoughts of a developer that does both Mac and iPhone software development.
In this project I had given videos for almost each and every important location of the University of New South Wales. Also the User can know his current location. User can see all the Important Departments, Theatres and Services being provided by the University and see the videos associated to it. Apart from the project the learning of iPhone programming is what has been concentrated.
ibeacons, Privacy & Customer Segmentation - StreetHawkDavid Jones
Technical discussion on iBeacon for IOS and Android. Current iBeacon vs BLE capabilities, privacy issues, how not to spam users and why customer segmentation matters.
Lastly I quickly cover Geo-Conquesting. What is it and how iBeacons fit it.
Wireless Application Protocol (WAP), WAP Key Points, WAP Push, Fragmentation, Features, Browsers and Web Platforms, Web View, Native Web, Packaged and Hybrids Apps, Tools for Mobile Web Development, Emulator and Simulator.
Beginning Real World iOS App DevelopmentAndri Yadi
The slide I presented during 1 day training for beginning real world iOS app development on April 7, 2015.
Event details:
http://bit.ly/belajarswift
https://procodecg.wordpress.com/2015/04/07/ios-app-development-training-with-dycode/
Designing the foundations of an iOS application is important to reduce the cost of maintenance and evolution. In this session we will see some best practices on how to organize iOS apps both from the point of view of the Xcode project and the source code. Based on the typical iOS client/server application, we will see how to structure the layers ranging from the user interface to the netwrok layer.
Iphone client-server app with Rails backend (v3)Sujee Maniyam
Some of the lessons learned from building a client-server iphone app (DiscountsForMe)
This is version 3 of the talk, presented at SF Ruby Meetup on Feb 17, 2010
Littel information about what is Apple iOS and History of iPhone and iOs.
Some of the features provided by iOS. Introduction about iOS Technology layers. and application provided by iPhones.
Presentation on How to use Adobe Flash and Device Central. Audio at http://www.mindgrub.com/NAB
Learn how to make mobile Flash applications utilizing Adobe's device central. Learn how to search device settings and which version of the Flash platform that device will work with. Learn to use templates and publish mobile flash content using Flash CS4.
Presentation on how to use Flash for Blackberry,iPhone and Android. http://www.mindgrub.com/NAB
iPhone has long shunned having the flash player on their phones. Some companies have made emulators but the apps are getting rejected from the store. Blackberry and Android however are embracing the use of the Flash Platform and you should too. Come find out how to make Flash CS4 applications for Blackberry and Android.
This Presentation (Android) is prepared by me for Education Purpose. And be careful for Hyperlinks. There are so many Hyperlinks. Just click on them.
Thank You
Mr. SOM
Between Cocoa and Cocoa Touch: A Comparative Introductionlukhnos
Lukhnos gives a talk at a CocoaHeads Taipei talk on January 22, 2009. He talks about the common traits of Cocoa and Cocoa Touch and differences between the two, and shares some thoughts of a developer that does both Mac and iPhone software development.
In this project I had given videos for almost each and every important location of the University of New South Wales. Also the User can know his current location. User can see all the Important Departments, Theatres and Services being provided by the University and see the videos associated to it. Apart from the project the learning of iPhone programming is what has been concentrated.
ibeacons, Privacy & Customer Segmentation - StreetHawkDavid Jones
Technical discussion on iBeacon for IOS and Android. Current iBeacon vs BLE capabilities, privacy issues, how not to spam users and why customer segmentation matters.
Lastly I quickly cover Geo-Conquesting. What is it and how iBeacons fit it.
Wireless Application Protocol (WAP), WAP Key Points, WAP Push, Fragmentation, Features, Browsers and Web Platforms, Web View, Native Web, Packaged and Hybrids Apps, Tools for Mobile Web Development, Emulator and Simulator.
Beginning Real World iOS App DevelopmentAndri Yadi
The slide I presented during 1 day training for beginning real world iOS app development on April 7, 2015.
Event details:
http://bit.ly/belajarswift
https://procodecg.wordpress.com/2015/04/07/ios-app-development-training-with-dycode/
Designing the foundations of an iOS application is important to reduce the cost of maintenance and evolution. In this session we will see some best practices on how to organize iOS apps both from the point of view of the Xcode project and the source code. Based on the typical iOS client/server application, we will see how to structure the layers ranging from the user interface to the netwrok layer.
Iphone client-server app with Rails backend (v3)Sujee Maniyam
Some of the lessons learned from building a client-server iphone app (DiscountsForMe)
This is version 3 of the talk, presented at SF Ruby Meetup on Feb 17, 2010
Littel information about what is Apple iOS and History of iPhone and iOs.
Some of the features provided by iOS. Introduction about iOS Technology layers. and application provided by iPhones.
Presentation on How to use Adobe Flash and Device Central. Audio at http://www.mindgrub.com/NAB
Learn how to make mobile Flash applications utilizing Adobe's device central. Learn how to search device settings and which version of the Flash platform that device will work with. Learn to use templates and publish mobile flash content using Flash CS4.
Presentation on how to use Flash for Blackberry,iPhone and Android. http://www.mindgrub.com/NAB
iPhone has long shunned having the flash player on their phones. Some companies have made emulators but the apps are getting rejected from the store. Blackberry and Android however are embracing the use of the Flash Platform and you should too. Come find out how to make Flash CS4 applications for Blackberry and Android.
This Presentation (Android) is prepared by me for Education Purpose. And be careful for Hyperlinks. There are so many Hyperlinks. Just click on them.
Thank You
Mr. SOM
This presentation gives detailed overview of Android, Android Architecture, Software Stack, Platform, Database Support, Licensing, File System, Network Connectivity, Security and Permissions, IDE and Tools, Other IDEs Overview, Development Evaluation, Singing your application, Versioning your application, Preparing to publish your application, Publish your App on Android Market. This presentation also includes links to sample exampled.
Note: Few slides from this presentation are taken from internet or slideshare.com as it is or modified little bit. I have no intention of saying someone’s else work as mine. I prepared this presentation to just educate co-workers about android. So I want the best material from internet and slideshare.com.
Study of similiarities and difference between android and ios system archiitecture in operating system perspective like thread management process management memory management etc more technical details
By 2017 the Internet of Things market will be bigger than the PC, tablet and phone market combined. This report explains what the Internet of Things actually is and the impact it will have on social.
IOT is connecting every physical object in the world using wireless technologies to track and control them from every where in the world...Every object is uniquely identified using ip addresses(IPv6)
This is a Mobile application created to run on both iOS (iphone / iPad) and Android (SmartPhones / Tablets)-based operating systems. This application can be used for multiple purposes including corporate meetings and e-learning.
a cross platform tablet application that could run on iPad as well as Android Tablets. The purpose of the application was – corporate meetings or e-learning systems.
The application was an innovative concept that automatically converted text to video. The application should also have the ability to capture audio. Along with this, the application also provides a digital white board.
While the user speaks and writes on the white board, the application records it and saves it in the form of a presentation which can be later on used for future reference or sharing on social networking sites or can be emailed to selected bunch of users. - See more at: http://www.greymatterindia.com/tablet-application-for-real-time-video-audio-and-ppt-conversion
How Android Architecture Components can Help You Improve Your App’s Design?Paul Cook
Choosing the right app architecture can be quite challenging at times? But not anymore with Android app architecture and companion architecture components! Find out how new architecture components can help you enhance your app’s design and make your Android app development profitable.
demystifying_the_architectures_of_a_mobile_app_development.pdfsarah david
Explore the secrets of mobile app development in 2023! Uncover the latest trends, including 5G, AI, AR/VR, and more. Learn about mobile app architectures, from layers to iOS and Android specifics. Cuneiform Consulting offers top-notch solutions—contact us for the best in mobile app development!
iOS Development - Offline Class for JasakomerAndri Yadi
A slide I presented yesterday on Offline Class of Jasakom - one of a biggest hacker community in Indonesia.
This slide is quite similar with my previous slides of the same topic, but with more and updated content.
The French Revolution, which began in 1789, was a period of radical social and political upheaval in France. It marked the decline of absolute monarchies, the rise of secular and democratic republics, and the eventual rise of Napoleon Bonaparte. This revolutionary period is crucial in understanding the transition from feudalism to modernity in Europe.
For more information, visit-www.vavaclasses.com
2024.06.01 Introducing a competency framework for languag learning materials ...Sandy Millin
http://sandymillin.wordpress.com/iateflwebinar2024
Published classroom materials form the basis of syllabuses, drive teacher professional development, and have a potentially huge influence on learners, teachers and education systems. All teachers also create their own materials, whether a few sentences on a blackboard, a highly-structured fully-realised online course, or anything in between. Despite this, the knowledge and skills needed to create effective language learning materials are rarely part of teacher training, and are mostly learnt by trial and error.
Knowledge and skills frameworks, generally called competency frameworks, for ELT teachers, trainers and managers have existed for a few years now. However, until I created one for my MA dissertation, there wasn’t one drawing together what we need to know and do to be able to effectively produce language learning materials.
This webinar will introduce you to my framework, highlighting the key competencies I identified from my research. It will also show how anybody involved in language teaching (any language, not just English!), teacher training, managing schools or developing language learning materials can benefit from using the framework.
Read| The latest issue of The Challenger is here! We are thrilled to announce that our school paper has qualified for the NATIONAL SCHOOLS PRESS CONFERENCE (NSPC) 2024. Thank you for your unwavering support and trust. Dive into the stories that made us stand out!
Model Attribute Check Company Auto PropertyCeline George
In Odoo, the multi-company feature allows you to manage multiple companies within a single Odoo database instance. Each company can have its own configurations while still sharing common resources such as products, customers, and suppliers.
Biological screening of herbal drugs: Introduction and Need for
Phyto-Pharmacological Screening, New Strategies for evaluating
Natural Products, In vitro evaluation techniques for Antioxidants, Antimicrobial and Anticancer drugs. In vivo evaluation techniques
for Anti-inflammatory, Antiulcer, Anticancer, Wound healing, Antidiabetic, Hepatoprotective, Cardio protective, Diuretics and
Antifertility, Toxicity studies as per OECD guidelines
Embracing GenAI - A Strategic ImperativePeter Windle
Artificial Intelligence (AI) technologies such as Generative AI, Image Generators and Large Language Models have had a dramatic impact on teaching, learning and assessment over the past 18 months. The most immediate threat AI posed was to Academic Integrity with Higher Education Institutes (HEIs) focusing their efforts on combating the use of GenAI in assessment. Guidelines were developed for staff and students, policies put in place too. Innovative educators have forged paths in the use of Generative AI for teaching, learning and assessments leading to pockets of transformation springing up across HEIs, often with little or no top-down guidance, support or direction.
This Gasta posits a strategic approach to integrating AI into HEIs to prepare staff, students and the curriculum for an evolving world and workplace. We will highlight the advantages of working with these technologies beyond the realm of teaching, learning and assessment by considering prompt engineering skills, industry impact, curriculum changes, and the need for staff upskilling. In contrast, not engaging strategically with Generative AI poses risks, including falling behind peers, missed opportunities and failing to ensure our graduates remain employable. The rapid evolution of AI technologies necessitates a proactive and strategic approach if we are to remain relevant.
June 3, 2024 Anti-Semitism Letter Sent to MIT President Kornbluth and MIT Cor...Levi Shapiro
Letter from the Congress of the United States regarding Anti-Semitism sent June 3rd to MIT President Sally Kornbluth, MIT Corp Chair, Mark Gorenberg
Dear Dr. Kornbluth and Mr. Gorenberg,
The US House of Representatives is deeply concerned by ongoing and pervasive acts of antisemitic
harassment and intimidation at the Massachusetts Institute of Technology (MIT). Failing to act decisively to ensure a safe learning environment for all students would be a grave dereliction of your responsibilities as President of MIT and Chair of the MIT Corporation.
This Congress will not stand idly by and allow an environment hostile to Jewish students to persist. The House believes that your institution is in violation of Title VI of the Civil Rights Act, and the inability or
unwillingness to rectify this violation through action requires accountability.
Postsecondary education is a unique opportunity for students to learn and have their ideas and beliefs challenged. However, universities receiving hundreds of millions of federal funds annually have denied
students that opportunity and have been hijacked to become venues for the promotion of terrorism, antisemitic harassment and intimidation, unlawful encampments, and in some cases, assaults and riots.
The House of Representatives will not countenance the use of federal funds to indoctrinate students into hateful, antisemitic, anti-American supporters of terrorism. Investigations into campus antisemitism by the Committee on Education and the Workforce and the Committee on Ways and Means have been expanded into a Congress-wide probe across all relevant jurisdictions to address this national crisis. The undersigned Committees will conduct oversight into the use of federal funds at MIT and its learning environment under authorities granted to each Committee.
• The Committee on Education and the Workforce has been investigating your institution since December 7, 2023. The Committee has broad jurisdiction over postsecondary education, including its compliance with Title VI of the Civil Rights Act, campus safety concerns over disruptions to the learning environment, and the awarding of federal student aid under the Higher Education Act.
• The Committee on Oversight and Accountability is investigating the sources of funding and other support flowing to groups espousing pro-Hamas propaganda and engaged in antisemitic harassment and intimidation of students. The Committee on Oversight and Accountability is the principal oversight committee of the US House of Representatives and has broad authority to investigate “any matter” at “any time” under House Rule X.
• The Committee on Ways and Means has been investigating several universities since November 15, 2023, when the Committee held a hearing entitled From Ivory Towers to Dark Corners: Investigating the Nexus Between Antisemitism, Tax-Exempt Universities, and Terror Financing. The Committee followed the hearing with letters to those institutions on January 10, 202
Palestine last event orientationfvgnh .pptxRaedMohamed3
An EFL lesson about the current events in Palestine. It is intended to be for intermediate students who wish to increase their listening skills through a short lesson in power point.
2. Agenda
Basics of iOS
Introduction to iOS
What is iOS
Architecture
Design Patterns
Cocoa Touch Framework
What is Cocoa Touch Framework
Complete Assortment of Frameworks
iOS Application Design
MVC
Core Application Objects
Application Life Cycle
3. Introduction to iOS
What is iOS?
iOS (known as iPhone OS before June 2010) is Apple's
mobile operating system. Originally developed for the iPhone, it has
since been extended to support other Apple, Inc. devices such as the
iPod touch, iPad and Apple TV. Apple, Inc. does not license iOS for
installation on third-party hardware.
4. Architecture
Core OS:
This level contains the kernel, the file system, networking infrastructure,
security, power management, and a number of device drivers. It also has the
libSystem library, which supports the POSIX/BSD 4.4/C99 API specifications and
includes system-level APIs for many services.
5. Architecture
Core Services:
The frameworks in this layer provide core services, such as string
manipulation, collection management, networking, URL utilities,
contact management, and preferences. They also provide services
based on hardware features of a device, such as the GPS, compass,
accelerometer, and gyroscope. Examples of frameworks in this layer
are Core Location, Core Motion, and system configuration.
6. Architecture
Media:
The frameworks and services in this layer depend on the Core Services layer and
provide graphical and multimedia services to the Cocoa Touch layer. They include
Core Graphics, Core Text, OpenGL ES, Core Animation, AVFoundation, Core Audio, and
video playback.
7. Architecture
Cocoa Touch:
The frameworks in this layer directly support applications based in iOS. They include
frameworks such as Game Kit, Map Kit, and iAd.The Cocoa Touch layer and the Core
Services layer each has an Objective-C framework that is especially important for
developing applications for iOS. These are the core Cocoa frameworks in iOS:
8. Architecture
UIKit:
This framework provides the objects an application displays in
its user interface and defines the structure for application
behavior, including event handling and drawing.
Foundation:
This framework defines the basic behavior of objects,
establishes mechanisms for their management, and provides
objects for primitive data types, collections, and operating-
system services. Foundation is essentially an object-oriented
version of the Core Foundation framework.
9. Design Patterns
Model-View-Controller
Is a way of dividing your code into independent functional areas. The model
portion defines your application’s underlying data engine and is responsible for
maintaining the integrity of that data. The view portion defines the user
interface for your application and has no explicit knowledge of the origin of
the data displayed in that interface. The controller portion acts as a bridge
between the model and view and coordinates the passing of data between
them.
Block objects
Block objects are a convenient way to encapsulate code and local stack
variables in a form that can be executed later. Support for block objects is
available in iOS 4 and later, where blocks often act as callbacks for
asynchronous tasks.
Delegation
The delegation design pattern is a way of modifying complex objects without
sub classing them. Instead of sub classing, you use the complex object as is
and put any custom code for modifying the behavior of that object inside a
separate object, which is referred to as the delegate object. At predefined
times, the complex object then calls the methods of the delegate object to
give it a chance to run its custom code.
10. Design Patterns
Managed memory model
The Objective-C language uses a reference-counted scheme for
determining when to release objects from memory. When an object is first
created, it is given a reference count of 1. Other objects can then use the
retain, release, or autorelease methods of the object to increase or
decrease that reference count appropriately. When an object’s reference
count reaches 0, the Objective-C runtime calls the object’s cleanup
routines and then deallocates it.
Threads and concurrent programming
All versions of iOS support the creation of operation objects and
secondary threads. In iOS 4 and later, applications can also use Grand
Central Dispatch (GCD) to execute tasks concurrently.
11. Cocoa Touch Framework
Cocoa touch is Apple's name for the collection of frameworks, APIs, and
accompanying runtimes that make up the development layer of iPhone OS. By
developing with the Cocoa touch frameworks you will be writing applications the
same way that iPhone OS itself is written, with controlled access to the
operating system.
Much of Cocoa Touch is implemented in Objective-C, an object-oriented
language that is compiled to run at incredible speed, yet employs a truly
dynamic runtime making it uniquely flexible. Because Objective-C is a superset
of C, it is easy to mix C and even C++ into your Cocoa Touch applications.
As your application runs, the Objective-C runtime instantiates objects based on
executing logic — not just in ways defined during compilation. For example, a
running Objective-C application can load an interface (a nib file created by
Interface Builder), connect the Cocoa objects in the interface to your
application code, then run the correct method once the UI button is pressed. No
recompiling is necessary.
12. Complete Assortment of Frameworks
In addition to UIKit, the Cocoa Touch collection of frameworks
includes everything needed to create world-class iOS apps,
They are,
3D graphics
Professional audio
Networking
Camera API
GPS
System Level Access API
13. Complete Assortment of Frameworks
Core Animation
Use Core Animation to create rich user experiences from an
easy programming model based on compositing
independent layers of graphics
Core Audio
Core Audio is the professional-grade technology for
playing, processing and recording audio, making it easy
to add powerful audio features to your application
Core Data
Core Data provides an object-oriented data
management solution that is easy to use and
understand, yet is built to handle the data model
needs of any application, large or small.
14. Complete Assortment of Frameworks
Features List: Frameworks by Category
Below is a small sampling of the available frameworks included in
Cocoa Touch:
Audio and Video
•Core Audio
•OpenAL
•Media Library
•AV Foundation
Graphics and
Animation
•Core Animation
•OpenGL ES
•Quartz 2D
User
Applications
•Address Book
•Core Location
•Map Kit
•Store Kit
Data Management
•Core Data
•SQLite
Networking and Internet
•Bonjour
•WebKit
•BSD Sockets
15. Features Of Cocoa Application
Basic application framework
User-interface objects
Drawing and imaging
System interaction
Performance
Internationalization
Text
Preferences
Networking
Printing
Undo management
Multimedia
Data exchange
16. MVC Architecture
A design pattern in which the model (any data in your program), the
view (what the user sees), and the controller (a layer that handles all
interaction between the view and model) are separated in such a manner that
modifying either the view or model component of your program has no effect
on one another.
17. MVC Architecture - Model
A model represents an application’s data and contains the logic for accessing
and manipulating that data.
Any data that is part of the persistent state of the application should reside in
the model objects.
The services that a model exposes must be generic enough to support a variety
of clients.
Model services are accessed by the controller for either querying or effecting a
change in the model state.
18. MVC Architecture - View
• The view is not dependent on the application logic. It remains same if there is
any modification in the business logic the view is responsible for rendering the
state of the model.
• The presentation semantics are encapsulated within the view, therefore model
data can be adapted for several different kinds of clients.
• The view modifies itself when a change in the model is communicated to the
view. A view forwards user input to the controller.
19. MVC Architecture - Controller
Controller accepts and intercepts user requests and controls the business
objects to fulfill these requests.
An application has one controller for related functionality.
Controller can also be depends on the type of clients.
22. Core Application Objects
From the time our application is launched by the user, to the time it exits, the
UIKit framework manages most of the application’s core behavior. For example,
an iOS application receives events continuously from the system and must
respond to those events. Receiving the events is the job of the UIApplication
object, but responding to the events is the responsibility of your custom code.
Key Objects in iOS:
UIApplication object
Application delegate object
Data model objects
View controller objects
UIWindow Object
View, Control, and layer objects
24. Application Life Cycle
The application life cycle constitutes the sequence of events that
occurs between the launch and termination of your application. In iOS, the user
launches your application by tapping its icon on the Home screen. Shortly after
the tap occurs, the system displays some transitional graphics and proceeds to
launch your application by calling its main function. From this point on, the
bulk of the initialization work is handed over to UIKit, which loads the
application’s main bib file and readies the event loop.
30. Responding To App Termination
Although applications are generally moved to the background and
suspended, if any of the following conditions are true, your application is
terminated and purged from memory instead of being moved to the background:
The application is linked against a version of iOS earlier than 4.0.
Application is deployed on a device running a version of iOS earlier than 4.0
The current device does not support multitasking
The application includes the UIApplicationExitsOnSuspend key in its Info.plist
file
Editor's Notes
What follows is a short list of how Cocoa adds value to an application with only a little (and sometimes no) effort on your part:
Basic application framework—Cocoa provides the infrastructure for event-driven behavior and for management of applications, windows, and (in the case of Mac OS X) workspaces. In most cases, you won’t have to handle events directly or send any drawing commands to a rendering library.
User-interface objects—Cocoa offers a rich collection of ready-made objects for your application’s user interface. Most of these objects are available in the library of Interface Builder, a development application for creating user interfaces; you simply drag an object from the library onto the surface of your interface, configure its attributes, and connect it to other objects. (And, of course, you can always instantiate, configure, and connect these objects programmatically.)
Here is a sampling of Cocoa user-interface objects:
Windows
Text fields
Image views
Date pickers
Sheets and dialogs
Segmented controls
Table views
Progress indicators
Buttons
Sliders
Radio buttons (Mac OS X)
Color wells (Mac OS X)
Drawers (Mac OS X)
Page controls (iOS)
Navigation bars (iOS)
Switch controls (iOS)
Cocoa in Mac OS X also features technologies that support user interfaces, including those that promote accessibility, perform validation, and facilitate the connections between objects in the user interface and custom objects.
Drawing and imaging—Cocoa enables efficient drawing of custom views with a framework for locking graphical focus and marking views (or portions of views) as “dirty.” Cocoa includes programmatic tools for drawing Bezier paths, performing affine transforms, compositing images, generating PDF content, and (in Mac OS X) creating various representations of images.
System interaction—In Mac OS X, Cocoa gives your application ways to interact with (and use the services of) the file system, the workspace, and other applications. In iOS, Cocoa lets you pass URLs to applications to have them handle the referenced resource (for example, email or websites); it also provides support for managing user interactions with files in the local system and for scheduling local notifications.
Performance—To enhance the performance of your application, Cocoa provides programmatic support for concurrency, multithreading, lazy loading of resources, memory management, and run-loop manipulation.
Internationalization—Cocoa provides a rich architecture for internationalizing applications, making it possible for you to support localized resources such as text, images, and even user interfaces. The Cocoa approach is based on users’ lists of preferred languages and puts localized resources in bundles of the application. Based on the settings it finds, Cocoa automatically selects the localized resource that best matches the user’s preferences. It also provides tools and programmatic interfaces for generating and accessing localized strings. Moreover, text manipulation in Cocoa is based on Unicode by default, and is thus an asset for internationalization.
Text—In Mac OS X, Cocoa provides a sophisticated text system that allows you to do things with text ranging from the simple (for example, displaying a text view with editable text) to the more complex, such as controlling kerning and ligatures, spell checking, regular expressions, and embedding images in text. Although Cocoa in iOS has no native text system (it uses WebKit for string drawing) and its text capabilities are more limited, it still includes support for spellchecking, regular expressions, and interacting with the text input system.
Preferences—The user defaults system is based on a systemwide database in which you can store global and application-specific preferences. The procedure for specifying application preferences is different for Mac OS X and iOS.
Networking—Cocoa also offers programmatic interfaces for communicating with servers using standard Internet protocols, communicating via sockets, and taking advantage of Bonjour, which lets your application publish and discover services on an IP network.
In Mac OS X, Cocoa includes a distributed objects architecture that allows one Cocoa process to communicate with another process on the same computer or on a different one. In iOS, Cocoa supports the capability for servers to push notifications to devices for applications registered to received such notifications.
Printing—Cocoa on both platforms supports printing. Their printing architecture lets you print images, documents, and other application content along a range of control and sophistication. At the simplest level, you can print the contents of any view or print an image or PDF document with just a little code. At a more complicated level, you can define the content and format of printed content, control how a print job is performed, and do pagination. In Mac OS X, you can add an accessory view to the Print dialog.
Undo management—You can register user actions that occur with an undo manager, and it will take care of undoing them (and redoing them) when users choose the appropriate menu items. The manager maintains undo and redo operations on separate stacks.
Multimedia—Both platforms programmatically support video and audio. In Mac OS X, Cocoa offers support for QuickTime video.
Data exchange—Cocoa simplifies the exchange of data within an application and between applications using the copy-paste model. In Mac OS X, Cocoa also supports drag-and-drop models and the sharing of application capabilities through the Services menu.