Everybody knows that iOS is a shiny, modern operating system with a sleek object-oriented framework, Cocoa Touch, that makes development uncluttered and easy. Everybody is wrong. As a successor to both Unix and the Classic Mac OS and OS X, iOS has a wide-ranging mass of frameworks and libraries, employing different design patterns and conventions and sometimes employing different programming languages. The developer who's new to iOS can go only so far with Objective-C and the UIKit frameworks and their modern friends before he or she discovers the need to go deeper. But what's down there? This session digs down into the iOS stack to show the lower levels of the platform's APIs: the Media Layer, Core Services, and the Core OS Layer. As we go, we'll have to abandon Objective-C in favor of plain ol' C, which is used for the Core Foundation framework that does the heavy lifting for Cocoa Touch's strings, collections, memory management, I/O and more. We'll also look at specialized low-level frameworks for security (including certificate management and the confounding but useful Keychain), CPU-accelerated math and DSP functions, high performance graphics and sound, and more. At the lowest level, we hit Unix, and we'll see how conventional Unix-style programming practices are often appropriate (and sometimes necessary) on iOS, including pthreads and BSD sockets.
Talk from WordCamp LA 2011. Premium MultiSite networks built for niche markets represent a fundamentally different way of building & maintaining a business using WordPress.
Research In Motion, the maker of BlackBerry mobile phones and tablets, has been investing heavily in Web technologies over the past couple of years, including a number of Open Source projects. In this session, we will present this work: WebWorks, a platform to package Web apps and adopt a native app life cycle; Ripple, a browser-based tool to test your mobile Web apps for any platform (not just BlackBerry), and BlackBerry’s unique remote WebInspector facility, which allows you to remotely debug your mobile Web application from your desktop. This session will walk you through a technical description of the steps involved in building, testing and packaging a Web app with all those modern tools.
Laurent Hasson is the Technical Director responsible for driving strategy, architecture, open source and community relationships around RIM’s Web Platform. He joined RIM in the Spring 2010 and has been focused on the WebKit browser, WebWorks, Ripple, and recently, experimental projects such as AliceJS. Before that, he was at IBM for 14 years, working on enterprise Web projects such as eCommerce, Web frameworks and tooling, Search and Social Software, and participated in open source strategies in the company. Laurent has been deep in web technologies since the mid 90’s and is an avid JavaScript/HTML/CSS, Java and SQL developer for both Desktop and Mobile. He codes and watches at least one movie every day, and he has funny hair.
Talk from WordCamp LA 2011. Premium MultiSite networks built for niche markets represent a fundamentally different way of building & maintaining a business using WordPress.
Research In Motion, the maker of BlackBerry mobile phones and tablets, has been investing heavily in Web technologies over the past couple of years, including a number of Open Source projects. In this session, we will present this work: WebWorks, a platform to package Web apps and adopt a native app life cycle; Ripple, a browser-based tool to test your mobile Web apps for any platform (not just BlackBerry), and BlackBerry’s unique remote WebInspector facility, which allows you to remotely debug your mobile Web application from your desktop. This session will walk you through a technical description of the steps involved in building, testing and packaging a Web app with all those modern tools.
Laurent Hasson is the Technical Director responsible for driving strategy, architecture, open source and community relationships around RIM’s Web Platform. He joined RIM in the Spring 2010 and has been focused on the WebKit browser, WebWorks, Ripple, and recently, experimental projects such as AliceJS. Before that, he was at IBM for 14 years, working on enterprise Web projects such as eCommerce, Web frameworks and tooling, Search and Social Software, and participated in open source strategies in the company. Laurent has been deep in web technologies since the mid 90’s and is an avid JavaScript/HTML/CSS, Java and SQL developer for both Desktop and Mobile. He codes and watches at least one movie every day, and he has funny hair.
1- This ppt describe about the Apple's IOS. and also here define
short description about the new version IOS 11.2.6 ,its
history and features.
2- also define about its layer n brief intro about IOS.
3-also have some application. Proper ppt for candidate .
That’s great.
iOS is the leader in delivering the safest and the fastest mobile applications. It is constantly running forward to find new solutions for tomorrow’s security threats.
It can be applicable in many fields including finance & banking, chemicals, healthcare, energy, pharmaceuticals, telecommunications, entertainment, government at local, state and federal levels. So the need of hiring knowledgeable mobile application developers is highly intense in this mobile world.
iPhone is a new and widely extended platform to develop object-oriented applications. In 2008 Apple sold 13.7 millions of devices. In the same year the software development kit for iPhone was downloaded about 800,000 times (according with Apple records) and right now there are 50,000 iPhone Developers subscribed to the Official iPhone Developer Program.
http://www.oopsla.org/oopsla2009/program/tutorials/145-programming-with-iphone-sdk
Whatever Happened to Visual Novel Anime? (AWA/Youmacon 2018)Chris Adamson
Ten years ago, visual novels were one of the most prominent sources for anime adaptations. Today, the flood has slowed to a trickle, and Steins;Gate 0 seems like the last gasp of a dying breed. This panel looks at what went right and wrong with VN anime, and whether they might ever make a comeback.
Whatever Happened to Visual Novel Anime? (JAFAX 2018)Chris Adamson
Not long ago, adaptations of visual novels were a major inspiration for anime, with a dozen or more shows a year based on VNs. These include classics like Clannad, Fate/Stay Night, and Higurashi. Today, the flood has slowed to a trickle, with only six VN anime in 2017, all of them commercial flops. This panel will track the rise and fall of VN adaptations, the traits that make them good and bad for anime, and whether this year's Steins;Gate 0 represents a new hope for the genre or a last gasp.
1- This ppt describe about the Apple's IOS. and also here define
short description about the new version IOS 11.2.6 ,its
history and features.
2- also define about its layer n brief intro about IOS.
3-also have some application. Proper ppt for candidate .
That’s great.
iOS is the leader in delivering the safest and the fastest mobile applications. It is constantly running forward to find new solutions for tomorrow’s security threats.
It can be applicable in many fields including finance & banking, chemicals, healthcare, energy, pharmaceuticals, telecommunications, entertainment, government at local, state and federal levels. So the need of hiring knowledgeable mobile application developers is highly intense in this mobile world.
iPhone is a new and widely extended platform to develop object-oriented applications. In 2008 Apple sold 13.7 millions of devices. In the same year the software development kit for iPhone was downloaded about 800,000 times (according with Apple records) and right now there are 50,000 iPhone Developers subscribed to the Official iPhone Developer Program.
http://www.oopsla.org/oopsla2009/program/tutorials/145-programming-with-iphone-sdk
Whatever Happened to Visual Novel Anime? (AWA/Youmacon 2018)Chris Adamson
Ten years ago, visual novels were one of the most prominent sources for anime adaptations. Today, the flood has slowed to a trickle, and Steins;Gate 0 seems like the last gasp of a dying breed. This panel looks at what went right and wrong with VN anime, and whether they might ever make a comeback.
Whatever Happened to Visual Novel Anime? (JAFAX 2018)Chris Adamson
Not long ago, adaptations of visual novels were a major inspiration for anime, with a dozen or more shows a year based on VNs. These include classics like Clannad, Fate/Stay Night, and Higurashi. Today, the flood has slowed to a trickle, with only six VN anime in 2017, all of them commercial flops. This panel will track the rise and fall of VN adaptations, the traits that make them good and bad for anime, and whether this year's Steins;Gate 0 represents a new hope for the genre or a last gasp.
Media Frameworks Versus Swift (Swift by Northwest, October 2017)Chris Adamson
As much as we love Swift for developing our apps, playgrounds, and even on the server, there are some things for which Swift is not a good match. The media frameworks on iOS are a good example of this. Dropping into Core Audio can twist your Swift code so badly it’s hardly readable anymore. And there are parts of AV Foundation where using Swift is literally not allowed.
In this talk, we’ll show off some of these tricky scenarios, see what we can do to make things better, and think about what this means for the Swift language and its future prospects.
Fall Premieres: Media Frameworks in iOS 11, macOS 10.13, and tvOS 11 (CocoaCo...Chris Adamson
What’s Apple planning for its media frameworks in the next 12 months? What’s it doing with Apple TV, or the HTTP Live Streaming standard? We won’t know until the curtain drops on WWDC! In this talk, we’ll amass everything audio- and video-related that gets announced throughout the week, combine it with the solid base of frameworks already present in the Apple platforms, and figure out from there what we’re going to be playing with in 2018.
CocoaConf Chicago 2017: Media Frameworks and Swift: This Is FineChris Adamson
Swift is great for writing iOS and Mac apps, and its creators also mean for it to be used as a systems programming language. However, certain traits about Swift make it officially off-limits for use in some audio/video-processing scenarios. What's the deal, is it not fast enough or what? We'll look at what media apps can and can't do in Swift, and what you're supposed to do instead. We'll also look at strategies for knowing what responsibilities to dole out to Swift and to C, and how to make those parts of your code play nicely with each other.
(This is a longer version of a talk previously presented at Forward Swift 2017)
Forward Swift 2017: Media Frameworks and Swift: This Is FineChris Adamson
Swift is great for writing iOS and Mac apps, and its creators also mean for it to be used as a systems programming language. However, certain traits about Swift make it officially off-limits for use in some audio/video-processing scenarios. What's the deal, is it not fast enough or what? We'll look at what media apps can and can't do in Swift, and what you're supposed to do instead. We'll also look at strategies for knowing what responsibilities to dole out to Swift and to C, and how to make those parts of your code play nicely with each other.
Firebase: Totally Not Parse All Over Again (Unless It Is) (CocoaConf San Jose...Chris Adamson
With Facebook shutting down Parse, everybody knows to never again depend on a third party for their backend solution, right? Sure, and after you spend six months trying to write your own syncing service, how's that working? In 2016, Google has added a ton of features to Firebase, their popular backend-as-a-service solution. Firebase's primary offering is a realtime database in the cloud that syncs changes to and from multiple concurrent users, and their Swift-friendly iOS SDK makes it ideal for mobile use. In this session, you'll learn how to set up a Firebase backend and build an iOS app around it.
Building A Streaming Apple TV App (CocoaConf San Jose, Nov 2016)Chris Adamson
Apple TV offers a friendly SDK, full of familiar view controllers and Foundation classes, with everything an iOS developer needs to develop their own streaming channel. Except for… you know… the streaming part. In this session, we'll look at how Apple's HTTP Live Streaming video works -- from flat files or live sources -- and how to get it from your computer to a streaming server and then to an Apple TV. We'll also look at common challenges for building streaming channel apps, like serving metadata, protecting content, and supporting single sign-on
Firebase: Totally Not Parse All Over Again (Unless It Is)Chris Adamson
With Facebook shutting down Parse, everybody knows to never again depend on a third party for their backend solution, right? Sure, and after you spend six months trying to write your own syncing service, how's that working? In 2016, Google has added a ton of features to Firebase, their popular backend-as-a-service solution. Firebase's primary offering is a realtime database in the cloud that syncs changes to and from multiple concurrent users, and their Swift-friendly iOS SDK makes it ideal for mobile use. In this session, you'll learn how to set up a Firebase backend and build an iOS app around it.
Building A Streaming Apple TV App (CocoaConf DC, Sept 2016)Chris Adamson
Apple TV offers a friendly SDK, full of familiar view controllers and Foundation classes, with everything an iOS developer needs to develop their own streaming channel. Except for… you know… the streaming part. In this session, we'll look at how Apple's HTTP Live Streaming video works -- from flat files or live sources -- and how to get it from your computer to a streaming server and then to an Apple TV. We'll also look at common challenges for building streaming channel apps, like serving metadata, protecting content, and supporting single sign-on.
Video Killed the Rolex Star (CocoaConf San Jose, November, 2015)Chris Adamson
[updated from previous version to include Watch Connectivity, screenshots of WKInterfaceMovie]
watchOS 2.0 brings media functionality to Apple Watch, offering audio and video playback and audio capture. But lest you plan on writing Logic or Final Cut for the watch: what's available on the wrist has its limits, and you hit them quickly. In this session, we'll see what the WKInterfaceController offers us for miniature mobile media, and how we can get the benefits of AV Foundation and Core Audio by moving our movies, songs, and podcasts back and forth between the watch and the iPhone.
Video Killed the Rolex Star (CocoaConf Columbus, July 2015)Chris Adamson
watchOS 2.0 brings media functionality to Apple Watch, offering audio and video playback and audio capture. But lest you plan on writing Logic or Final Cut for the watch: what's available on the wrist has its limits, and you hit them quickly. In this session, we'll see what the WKInterfaceController offers us for miniature mobile media, and how we can get the benefits of AV Foundation and Core Audio by moving our movies, songs, and podcasts back and forth between the watch and the iPhone.
Revenge of the 80s: Cut/Copy/Paste, Undo/Redo, and More Big Hits (CocoaConf C...Chris Adamson
When the first 128K Macs landed in 1984, it was the first time many of us could undo a mistake with just a keystroke, or exchange data between documents or applications with cut/copy/paste and the system clipboard. Fast forward 30 years and we all use this stuff… but do you know how to actually impement it? Especially on iOS, these everyday features are surprisingly absent from many developers' toolchests. In this session, we'll flashback to the era of Reagan, Rubik's Cubes, and Return of the Jedi, to see these hot hits of the early 80's are represented in modern-day Cocoa.
Core Image: The Most Fun API You're Not Using, CocoaConf Atlanta, December 2014Chris Adamson
Graphics on iOS and OS X isn't just about stroking shapes and paths in Core Graphics and trying to figure out OpenGL. The Core Image framework gives you access to about 100 built-in filters, providing everything from photographic effects and color manipulation to face-finding and QR Code generation. It can leverage the power of the GPU to provide performance fast enough to perform complex effects work on real-time video capture. But even if you're not writing the next Final Cut Pro or Photoshop, it's easy to call in Core Image for simple tasks, like putting a blur in part of your UI for transitions or privacy reasons. In this session, we'll explore the many ways Core Image can make your app sizzle
Stupid Video Tricks, CocoaConf Seattle 2014Chris Adamson
AV Foundation makes it reasonably straightforward to capture video from the camera and edit together a nice family video. This session is not about that stuff. This session is about the nooks and crannies where AV Foundation exposes what's behind the curtain. Instead of letting AVPlayer read our video files, we can grab the samples ourselves and mess with them. AVCaptureVideoPreviewLayer, meet the CGAffineTransform. And instead of dutifully passing our captured video frames to the preview layer and an output file, how about if we instead run them through a series of Core Image filters? Record your own screen? Oh yeah, we can AVAssetWriter that. With a few pointers, a little experimentation, and a healthy disregard for safe coding practices, Core Media and Core Video let you get away with some neat stuff
Stupid Video Tricks, CocoaConf Las VegasChris Adamson
AV Foundation makes it reasonably straightforward to capture video from the camera and edit together a nice family video. This session is not about that stuff. This session is about the nooks and crannies where AV Foundation exposes what's behind the curtain. Instead of letting AVPlayer read our video files, we can grab the samples ourselves and mess with them. AVCaptureVideoPreviewLayer, meet the CGAffineTransform. And instead of dutifully passing our captured video frames to the preview layer and an output file, how about if we instead run them through a series of Core Image filters? Record your own screen? Oh yeah, we can AVAssetWriter that. With a few pointers, a little experimentation, and a healthy disregard for safe coding practices, Core Media and Core Video let you get away with some neat stuff.
Core Image: The Most Fun API You're Not Using (CocoaConf Columbus 2014)Chris Adamson
Graphics on iOS and OS X isn't just about stroking shapes and paths in Core Graphics and trying to figure out OpenGL. The Core Image framework gives you access to about 100 built-in filters, providing everything from photographic effects and color manipulation to face-finding and QR Code generation. It can leverage the power of the GPU to provide performance fast enough to perform complex effects work on real-time video capture. But even if you're not writing the next Final Cut Pro or Photoshop, it's easy to call in Core Image for simple tasks, like putting a blur in part of your UI for transitions or privacy reasons. In this session, we'll explore the many ways Core Image can make your app sizzle.
Stupid Video Tricks (CocoaConf DC, March 2014)Chris Adamson
AV Foundation makes it reasonably straightforward to capture video from the camera and edit together a nice family video. This session is not about that stuff. This session is about the nooks and crannies where AV Foundation exposes what's behind the curtain. Instead of letting AVPlayer read our video files, we can grab the samples ourselves and mess with them. AVCaptureVideoPreviewLayer, meet the CGAffineTransform. And instead of dutifully passing our captured video frames to the preview layer and an output file, how about if we instead run them through a series of Core Image filters? Record your own screen? Oh yeah, we can AVAssetWriter that. With a few pointers, a little experimentation, and a healthy disregard for safe coding practices, Core Media and Core Video let you get away with some neat stuff.
AV Foundation makes it reasonably straightforward to capture video from the camera and edit together a nice family video. This session is not about that stuff. This session is about the nooks and crannies where AV Foundation exposes what's behind the curtain. Instead of letting AVPlayer read our video files, we can grab the samples ourselves and mess with them. AVCaptureVideoPreviewLayer, meet the CGAffineTransform. And instead of dutifully passing our captured video frames to the preview layer and an output file, how about if we instead run them through a series of Core Image filters? Record your own screen? Oh yeah, we can AVAssetWriter that. With a few pointers, a little experimentation, and a healthy disregard for safe coding practices, Core Media and Core Video let you get away with some neat stuff.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
1. The Dark Depths of iOS
Chris Adamson — @invalidname
CodeMash 2011
Thursday, January 13, 2011
2. What We'll Dig Up
• Architectural layers of iOS and their contents
• How to find stuff
• Ask me about:
• "When would I ever use this?"
• "How would I…"
Thursday, January 13, 2011
3. iOS Architectural Layers
Cocoa Touch
Media Layer
Core Services
Core OS
Thursday, January 13, 2011
4. Cocoa Touch
• Application infrastructure
• Touch UI Media Layer
• High-level features Services
Core
• Likely the initial focus of new iOS developers
Core OS
Thursday, January 13, 2011
5. Media Layer
• Graphics, Audio, and Video technologies
Cocoa Touch
• 2D graphics, 3D graphics, animation, text
• Audio capture, streaming, effects, iPod Library
access
Core Services
• Video capture, editing, effects, playback
Corelibrary
OS
• Access to photo/video
Thursday, January 13, 2011
6. Core Services
• Foundation of Apple-specific APIs
Cocoa Touch
• Initially meant for use by Cocoa (Obj-C) and
Carbon (C++)Media OS X
on Mac Layer
• Data objects (strings, URLs)
• Threading
Corein-app purchase, etc.
OS
• SQL, XML, networking,
Thursday, January 13, 2011
7. Core OS
Cocoa Touch
• Lowest-level Apple frameworks
Media Layer
• Security, hardware-accelerated math
• System Core Services
• Low-level kernel and UNIX APIs
Thursday, January 13, 2011
11. Frameworks
• Apple’s definition: “A framework is a directory that
contains a dynamic shared library and the resources
(such as header files, images, helper applications, and
so on) needed to support that library.”
• Most Apple APIs are packaged as .framework
• Most third-party APIs are packaged as .dylib or .o
Thursday, January 13, 2011
15. Deep default dig
#import <UIKit/UIKit.h>
Thursday, January 13, 2011
16. Deep default dig
//
// UIKit.h
// UIKit
//
// Copyright 2005-2010 Apple Inc. All rights reserved.
//
#import <UIKit/UIKitDefines.h>
#import <UIKit/UIAccelerometer.h>
#import <UIKit/UIAccessibility.h>
Thursday, January 13, 2011
17. Deep default dig
//
// UIAccelerometer.h
// UIKit
//
// Copyright 2007-2010 Apple Inc. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKitDefines.h>
Thursday, January 13, 2011
18. Deep default dig
/*!Foundation.h
! Copyright (c) 1994-2010, Apple Inc. All rights reserved.
*/
#include <CoreFoundation/CoreFoundation.h>
#import <Foundation/NSObjCRuntime.h>
#import <Foundation/NSArray.h>
#import <Foundation/NSAutoreleasePool.h>
#import <Foundation/NSBundle.h>
#import <Foundation/NSByteOrder.h>
#import <Foundation/NSCalendar.h>
#import <Foundation/NSCharacterSet.h>
#import <Foundation/NSCoder.h>
Thursday, January 13, 2011
19. Deep default dig
/*!CoreFoundation.h
! Copyright (c) 1998-2010, Apple Inc. All rights reserved.
*/
#if !defined(__COREFOUNDATION_COREFOUNDATION__)
#define __COREFOUNDATION_COREFOUNDATION__ 1
#define __COREFOUNDATION__ 1
#if !defined(CF_EXCLUDE_CSTD_HEADERS)
#include <sys/types.h>
#include <stdarg.h>
#include <assert.h>
#include <ctype.h>
#include <errno.h>
#include <float.h>
#include <limits.h>
#include <locale.h>
#include <math.h>
#include <setjmp.h>
#include <signal.h>
#include <stddef.h>
#include <stdio.h>
Thursday, January 13, 2011
21. Your App
Cocoa Touch
Media Layer
Core Services
Core OS
Thursday, January 13, 2011
22. Your App
<UIKit.h> Cocoa Touch
Media Layer
<Foundation.h>
<CoreFoundation.h> Core Services
<stdio.h> Core OS
Thursday, January 13, 2011
23. #include, #import, @class
• #include literally includes all of a header file
• #import, defined by Obj-C, includes a given file only
once, intended to help with circular dependencies
• @class just promises that a given Obj-C class will be
#import’ed at some point
• Useful for circular header dependencies; one can
use @class in .h, then #import in .m
Thursday, January 13, 2011
24. Cocoa Touch
Media Layer
Core Services
Core OS
Thursday, January 13, 2011
25. Core Graphics (Quartz)
• C-based API for 2D graphics
• Structs and functions start with CG…
• Some UIKit methods work with struct CGRect
• Most drawing functions (stroke, fill, set path, etc.)
start with with CGContext… and take a
CGContextRef as first parameter
Thursday, January 13, 2011
26. Core Animation
• Obj-C API for hardware-accelerated compositing,
rendering, and animation
• Don’t think of it as “just” animation
• CALayer is a presentable surface; every UIView is
backed by a layer (see UIView.layer property),
which it uses for rendering
• You could write a book on this stuff
Thursday, January 13, 2011
27. Core Text
• C-based API for advanced text layout and font
handling
• Most apps can just use Cocoa UITextView and
UIFont
• Can render text into CGContext
Thursday, January 13, 2011
28. Image I/O
• C-based API split out of Core Graphics
• Allows high-performance reading and writing of
many image formats
• JPEG, JPEG2000, RAW, TIFF, BMP, PNG, etc.
• Provides access to image metadata and color
management
Thursday, January 13, 2011
29. Assets Library
• Obj-C API to access photos and videos in users library
(c.f., “Photos” app)
• Introduced in iOS 4.0
• ALAssetsGroup provides ALAssets, which provide
ALAssetRepresentations, which provide
metadata, CGImageRefs, etc.
• Save new images to photo library via
ALAssetLibrary
Thursday, January 13, 2011
30. OpenGL ES
• C-based industry-standard API for 2D and 3D
rendering
• Not an Apple API, so code conventions are different
• All drawing is done to an EAGLContext object,
which you set up with a EAGLDrawable (the only
implementation of which is CAEAGLLayer).
• You could write a book on this too
Thursday, January 13, 2011
31. Media Player
• Obj-C API to access user’s iPod Library
• Audio only: music, audio podcasts, audiobooks
• Use MPMediaQuery to get MPMediaItems, then play
with MPMediaPlayer, or inspect metadata
properties
• MPMoviePlayerController offers a simple movie
player; AV Foundation is better.
Thursday, January 13, 2011
32. AV Foundation
• Obj-C API for audio and video capture, editing, and
playback, introduced in iOS 4.0
• iMovie for iPhone is apparently written with this
• Huge framework, comparable to QuickTime
• Can open audio URLs from Media Library
Thursday, January 13, 2011
33. Core Media / Core Video
• Core Media: C API to describe byte buffers, formats,
and time for AV Foundation
• CMTime struct includes units and timescale, so it is
always exact for a media-appropriate scale
• Core Video: C API to provide pixel buffers and image
buffers for AV Foundation
• Neither is directly applicable to app developers
outside of AV Foundation
Thursday, January 13, 2011
34. OpenAL
• C-based API for 3D spatialized sound
• Third-party API, designed to resemble OpenGL
• Create buffers of single-channel PCM, connect these
to sources, set properties on the sources (location,
orientation, etc.), then configure properties of a
listener
Thursday, January 13, 2011
35. Core Audio
• C API for low-latency audio processing (capture and
play-out to speaker or headphones)
• Provided utility classes are in C++
• Consists of two “engines” - Audio Units and Audio
Queues - along with convenience APIs for audio file I/
O, network I/O, format conversion, etc.
• OpenAL is implemented atop CA as an Audio Unit
• Legendarily hard to use, needs a book…
Thursday, January 13, 2011
36. Core MIDI
• Obj-C and C APIs for communicating with external
MIDI devices (musical instruments) over network or
via dock connector
• Introduced in iOS 4.2
• Does not provide a software synthesizer
Thursday, January 13, 2011
37. Cocoa Touch
Media Layer
Core Services
Core OS
Thursday, January 13, 2011
38. Foundation
• Obj-C API with essential collection of data types
(100+ classes, 20+ protocols) used throughout Cocoa
• Collections: NSArray, NSSet, NSDictionary
• Data objects: NSString, NSDate, NSCalendar
• Primitive wrappers: NSNumber, NSValue, NSData
• Many of these are immutable, have mutable
subclasses
Thursday, January 13, 2011
39. Foundation: Notifications
• NSNotification represents broadcastable data –
typically a “change” – as a name, source object, and
optional info dictionary
• Each app has an NSNotificationCenter to broadcast
notifications
• Mac OS X has an NSDistributedNotificationCenter
• Interested parties add themselves as observers of the
NSNotificationCenter for specific notification names
(and, optionally, sources)
Thursday, January 13, 2011
40. Foundation: URL Loading System
• Create an NSURL
• From this, create an NSURLRequest
• From this, create NSURLConnection, providing
delegate to receive NSURLResponse
• Classes also provided for caching, authentication
• Only works with file:, http:, https:, and ftp:
URLs.
Thursday, January 13, 2011
41. Foundation: Handy Stuff
• XML parsing: NSXMLParser (event-driven)
• Bonjour: NSNetService, NSNetServiceBrowser
• NSScanner: substring matching and extraction
• NSUndoManager
• NSKeyedArchiver, NSKeyedUnarchiver
• NSSortDescriptor: Used by sort methods in
NSArray and NSMutableArray
Thursday, January 13, 2011
42. Foundation’s C Stuff
• NSAssert…()
• NSLocalizedString…(): gets localized string from
app bundle
• NSLog()
• NSRange: Struct used for substrings in NSStrings.
Comes with helper functions like NSMakeRange(),
NSEqualRanges(), NSIntersectionRange()…
Thursday, January 13, 2011
43. Foundation: NSObject
• Polymorphism: isKindOfClass:,
respondsToSelector:, conformsToProtocol:
• Reference-counting: retain, release,
autorelease
• Fundamental rule: you own any object you create
with alloc, new, or copy, and must eventually
release (or autorelease) it.
Thursday, January 13, 2011
44. Core Foundation
• C API originally intended to provide common services
to Cocoa (Obj-C) and Carbon (C++) on Mac OS X
• Defines class-like “opaque types”; instances of these
are still called “objects”.
typedef const struct __CFString * CFStringRef;
• CF objects use same reference-counting scheme as
Foundation: CFRetain(), CFRelease(), but no
autorelease.
Thursday, January 13, 2011
45. Toll Free Bridging
• Many CF opaque types are effectively identical to
Foundation classes, and can be cast with zero cost
NSString *myString = @"My Foundation string";
CFStringRef myCFString = CFSTR ("My Core Foundation string");
CFStringRef hisString = (CFStringRef) myString;
NSString *hisCFString = (NSString*) myCFString;
Thursday, January 13, 2011
47. Not Toll-Free Bridged
From cocoadev.com:
NSBundle != CFBundle
NSHost != CFHost
NSRunLoop != CFRunLoop
NSNotificationCenter != CFNotificationCenter
NSSocket != CFSocket
Note: NSHost does not exist on iOS, and NSSocket doesn’t exist (or
isn’t public) on iOS or OS X.
Thursday, January 13, 2011
48. Core Foundation Conventions
• Core Foundation functions typically name the opaque type
they take as a first (or second) argument.
• Notice similarity between Foundation (Obj-C) and Core
Foundation calls:
! int i = [myString length];
! int j = CFStringGetLength(myCFString);
! NSArray *components = [myString componentsSeparatedByString:@" "];
! CFArrayRef cfComponents =
! ! CFStringCreateArrayBySeparatingStrings (kCFAllocatorDefault,
! ! ! ! ! ! ! ! ! ! ! ! ! ! myCFString,
! ! ! ! ! ! ! ! ! ! ! ! ! ! CFSTR(" "));
• Important difference here: you own and must
CFRelease() the cfComponents variable.
Thursday, January 13, 2011
49. CF Exclusives
• Some Core Foundation APIs have no equivalent classes
or similar functionality in Foundation
• CFBagRef: unordered set that allows duplicates
• CFStringTokenizerRef (compare to NSScanner)
• CFTreeRef: tree-structured data
• CFUUIDRef: Universally Unique Identifier (RFC
4122)
Thursday, January 13, 2011
50. CFNetwork
• Much deeper networking API than Foundation’s URL
Loading System
• Provides CF-friendly abstraction over BSD sockets
(client or server)
• APIs for DNS host name lookup, read and write
streams
• Also has a CF version of Bonjour
Thursday, January 13, 2011
51. Threads
• NSThread provides Obj-C semantics for executing code
in a separate thread of execution
• Subclass NSThread and override main, or use
initWithTarget:selector:object:
• All UIKit code should be running on the “main” thread.
• See +[NSThread mainThread], +[NSThread
isMainThread], +[NSObject
performSelectorOnMainThread:withObject:w
aitUntilDone:]
Thursday, January 13, 2011
52. Run Loops
• An event processing loop attached to a single thread
• Inputs to the loop come from NSPorts (distributed
messaging), NSTimers, custom sources, and
performSelector:onThread:… calls.
• Main thread’s run loop is set up by UIApplication.
You need to create your own for custom threads.
• If a method asks for a run loop “mode”, you almost
always want NSDefaultRunLoopMode (aka
kCFRunLoopDefaultMode)
Thursday, January 13, 2011
53. NSOperation
• Abstract class that defines a single task that may be
run concurrently, or as a consequence of one or more
other operations completing
• Generally used with an NSOperationQueue, which
will determine what thread to call your operation on
Thursday, January 13, 2011
54. Blocks
• Closures for C — code plus stack and heap variables.
• Allows you to pass state and the code to work with it
• New Apple frameworks prefer blocks to delegates and
other asynchronous design patterns (e.g., take a
completionHandler block argument, to be executed
when the asynchronous task completes)
• Can/should create an NSOperation with a block
• Hope you saw Daniel Steinberg’s session earlier
Thursday, January 13, 2011
55. Grand Central Dispatch
• Multicore-savvy programming for Mac and iOS, in C
• Based on a “queue of blocks” metaphor
• Can dispatch your blocks on main queue (main thread),
concurrently, or serially
• Can group blocks and get notification when they complete,
even if they run on different threads
• GCD is defined in Core Services, but typically used directly
only by lower-level programmers (consider NSOperation
instead)
Thursday, January 13, 2011
56. System Configuration
• Another C API. Only iOS functionality:
SCNetworkReachability
• Synchronous check:
SCNetworkReachabilityGetFlags()
• Asynch: SCNetworkReachabilitySetCallback()
• Apple always tests what your app does when the
network goes away (e.g., Airplane Mode). You will be
rejected if your app bricks without network.
Thursday, January 13, 2011
57. Other Apple Core Services
• Store Kit: Obj-C API for In-App Purchasing
• Core Location: Obj-C API for determining current
location from device features (GPS, cellular radio),
reckoning course, distances, etc.
• Quick Look: Obj-C API allows apps to provide
thumbnails of documents for previewing
• Address Book: C API to access names, addresses, …
• Core Data: Obj-C API for object-relational mapping
Thursday, January 13, 2011
58. 3rd Party Core Services
• SQLite3: C API for simple file-based relational
database
• Libxml2: C API for XML parsing, DOM-style or SAX-
style
• Documentation for these are on their respective
websites, not in Xcode
Thursday, January 13, 2011
59. Cocoa Touch
Media Layer
Core Services
Core OS
Thursday, January 13, 2011
60. Depth Check
You Are
Here
Thursday, January 13, 2011
61. Accelerate
• Hardware-accelerated math, big number, and DSP
functions, in C
• LAPACK (Linear Algebra Package) – high-level LA,
solve linear systems, Eigenvalues and Eigenvectors
• BLAS (Basic Linear Algebra Subroutines) – low-level
LA, matrix, matrix-vector, matrix-matrix
• vDSP – basic math on arrays, convolution and
correlation, Fast Fourier Transform
• float faster than double, esp. on ARMv7
Thursday, January 13, 2011
62. External Accessory
• Requires paid membership in “Made for iPod /
Works with iPhone” program
• If you thought App Store was picky…
• Three Obj-C classes and one delegate protocol:
Iterate over available wired and Bluetooth
EAAccessory objects with EAAccessoryManager,
create an EASession and access its inputStream
and outputStream.
Thursday, January 13, 2011
63. Keychain Services
• API to store user passwords, purchase history, other
sensitive data.
• C functions to query, add, update, delete CFDictionary
objects containing key-value pairs
• Each dictionary is one user item. Pairs are things like an
account name, the item type, the item’s ID, the item’s
value, etc.
• Keychain survives app deletion and re-install.
• “Friendly” apps can share Keychain data
Thursday, January 13, 2011
64. Other Security Services
• C functions for managing certificates, public and private
keys, representing trust policies
• Match certificates to private keys
• Create and request certificate objects
• Import certificates, keys, and identies
• Create public-private key pairs
• Randomization Services provides crypto-secure random
numbers
Thursday, January 13, 2011
65. System
• Low-level UNIX interfaces
• No third-party access to kernel or drivers
• No Xcode documentation (other than code
completion)
• Investigate man pages, headers in <iOS_SDK>/usr/
include, or web-based documentation
Thursday, January 13, 2011
66. man page
Yuna:~ cadamson$ man memset
MEMSET(3) BSD Library Functions Manual MEMSET(3)
NAME
memset -- fill a byte string with a byte value
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <string.h>
void *
memset(void *b, int c, size_t len);
DESCRIPTION
The memset() function writes len bytes of value c (converted to an
unsigned char) to the byte string b.
RETURN VALUES
The memset() function returns its first argument.
SEE ALSO
bzero(3), memset_pattern(3), swab(3)
:
Thursday, January 13, 2011
67. man page
Yuna:~ cadamson$ man memset
Thursday, January 13, 2011
68. System - C Standard Library
• stdio.h – Standard I/O: open, close, get data from / put
data to FILEs (not necessarily a flat file)
• stdlib.h – General-purpose functions: malloc()/
free(), type conversions, qsort(), etc.
• string.h & wchar.h — C string utilities
• math.h – Basic math constants and functions
• And more… http://en.wikipedia.org/wiki/
C_standard_library or just read K&R.
Thursday, January 13, 2011
69. System - BSD Sockets
• sys/socket.h, netinet/in.h, netinet6/in6.h, etc.
• Create socket with socket()
• Client-side: connect(), then send()/recv() or
read()/write()
• Server-side: bind(), accept(), then send()/recv
() or read()/write()
Thursday, January 13, 2011
70. System - POSIX Threads
• pthread.h – functions for creating and using threads,
thread-safety via mutexes, conditions, and
synchronization
• Create thread with pthread_create(), passing a
pthread_t* to receive the created thread, thread
attributes (NULL for default), function pointer to run,
and void* to pass as argument to the function
• Can use sys/semaphore.h as an alternate thread-
safety mechanism
Thursday, January 13, 2011
71. Other neat stuff in /usr/include
• 150 files and directories, including
• zlib.h, tar.h – Data compression
• CommonCrypto/ – MD5, SHA, other crypto
• regex.h – Regular expressions (Standard C library)
• asl/ – Apple System Log access
• However, not everything in /usr/lib has a public
header (e.g., libbz2.dylib, libtidy.dylib)
Thursday, January 13, 2011
72. Where to?
Cocoa Touch
Media Layer
Core Services
Core OS
Thursday, January 13, 2011
73. Portability considerations
• POSIX code is easy to port to/from iOS
• Con: C strings are ASCII, stdio & inet calls block
• Core Foundation doesn’t port
• But data types are much richer, network and I/O
APIs are asynchronous by design
• How far does POSIX get you on mobile anyways
(Android, PalmOS, Windows Phone 7)?
Thursday, January 13, 2011
74. Developer considerations
• Most iOS developers did not start as C programmers
• Came from Java, JavaScript, Windows, etc.
• Can be tricky to context-switch between Obj-C and C
• For switchers, Foundation is easier than Core
Foundation, and Core Foundation is easier than
standard C libraries
Thursday, January 13, 2011
75. What’s Next
Cocoa Touch
Media Layer
Core Services
Core OS
Thursday, January 13, 2011
76. Future directions
• Much of Mac OS X has now been ported to iOS.
Interesting stuff that hasn’t been:
• Speech synthesis/recognition (c.f., App Kit)
• Already available to Apple’s apps
• Ink services (handwriting recognition)
• WebServicesCore (XML-RPC, SOAP)
• Non-hacky resolution independence
Thursday, January 13, 2011
77. Q&A
• invalidname [at] gmail [dot] com
• @invalidname
• http://www.subfurther.com/blog
Thursday, January 13, 2011