Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Tips & Tricks for iPhone Application Development
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Adrian Kosmaczewski
February 02, 2010
Technology
220
0
Share
Tips & Tricks for iPhone Application Development
Presentation shown during a SkillsMatter event in London, United Kingdom.
Adrian Kosmaczewski
February 02, 2010
More Decks by Adrian Kosmaczewski
See All by Adrian Kosmaczewski
What's in your Container? Securing the Software Supply Chain without Slowing Down
akosma
0
200
Managing Fleets of Kubernetes Clusters with GitOps
akosma
4
300
DevOps in Switzerland from 2018 to 2022
akosma
4
390
APPUiO Cloud
akosma
2
830
Introduction to K8up
akosma
0
460
Creating Products through DevOps: The Story of VSHN
akosma
0
330
Everyday Life of an Open-Source Company: The Story of VSHN
akosma
0
400
Creating a Product through DevOps: The Story of APPUiO Cloud
akosma
0
840
Migrating the GitLab–Kubernetes Integration from Certificates to the Agent
akosma
0
650
Other Decks in Technology
See All in Technology
サプライチェーンセキュリティの空白地帯 - 信頼できる”依存性”の未来を考える
rung
PRO
2
640
オンコールの負荷軽減のためのBits Assistant 活用方法 / How to Use Bits Assistant to Reduce the Workload on On-Call Staff
sms_tech
1
380
形式手法特論:公平性制約の位相的特徴づけ #kernelvm / Kernel VM Study Kansai 12th
ytaka23
1
680
ITエンジニアを取り巻く環境とキャリアパス / A career path for Japanese IT engineers
takatama
4
1.8k
Unlocking the Apps
pimterry
0
170
脅威をエンジニアリングの糧にして:恐怖を乗り越えた先にあったもの / Turn threats into fuel for engineering: what lay beyond overcoming fear
nrslib
1
370
Strands Agents超入門
kintotechdev
1
160
AI-DLCを活用した高品質・安全なAI駆動開発実践 / AI Driven Development
yoshidashingo
1
300
Claude code Orchestra
ozakiomumkj
3
900
OpenID Connectによるサービス間連携
takesection
0
150
Spring AI × MCP 入門〜AIエージェントへのツール公開、境界設計から始める最小構成 〜
yuyamiyamoto
0
200
Javaコミュニティをもっと楽しむための9箇条
takasyou
0
1.1k
Featured
See All Featured
Scaling GitHub
holman
464
140k
Statistics for Hackers
jakevdp
799
230k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Believing is Seeing
oripsolob
1
140
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
390
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Building Adaptive Systems
keathley
44
3k
New Earth Scene 8
popppiees
3
2.3k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
How to build a perfect <img>
jonoalderson
1
5.6k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Transcript
Tips & Tricks for iPhone Application Development Skills Matter -
London - February 2nd 2010
None
Adrian Kosmaczewski
akosma software akosma.com akosma.tumblr.com github.com/akosma linkedin.com/in/akosma facebook.com/akosma
@akosma
None
some questions
new to iPhone?
designer? developer?
technologies?
Android J2EE J2ME .NET Ruby on Rails others?
programming languages?
C / C++? Java, C#? Ruby, Python, Lua? JavaScript?
None
Dev Days for iPhone
Mon, April 26th 2010
Win a free ticket!
Fill your evaluation form! :)
None
iPhone dev ≠ web dev
None
Cocoa & Objective-C
born in the 80s
None
None
None
None
Objective-C
Objective-C Java @interface & @implementation class (1 file) @protocol interface
#import // files! import // classes! categories n/a (in C#, “class extensions”) id n/a (generics?)
Objective-C Java @selector n/a NSObject / NSProxy / ... Object
@public / @protected / @private public / protected / private @try / @catch / @finally NSException try / catch / finally Exception n/a package / namespace
• Thin layer around C • Message-dispatch runtime • Static
and dynamic (you choose) • The “real” inspiration for Java: • http://cs.gmu.edu/~sean/stuff/java- objc.html
• Single inheritance + interfaces (“@protocols”) • @protocols can have
optional methods • Fields protected by default • All methods are virtual and overridable • Methods can be added to existing classes • Full introspection / reflection • Messages can be intercepted and forwarded à la AOP
None
None
None
None
Demo
None
Cocoa Touch
None
None
iPhone Specifics
None
128 or 256 MB RAM
~70 MB for the OS!
no swap file
(no virtual memory)
no garbage collector
(manual memory management)
http://cocoadevcentral.com/d/learn_objectivec/
no automatic objects on the stack (C++)
// C++ // Memory freed when out of scope std::string
name(“Adrian”); std::string *name = NULL; name = new std::string(“Adrian”); delete name;
hygiene
None
memory warnings
None
avoid autorelease
None
None
lazy-loading & reuse
None
custom table cells & reuse
None
override setters properly
None
beware of delegation
None
instruments & static analysis
None
warnings as errors
None
code organization
(cheaper maintenance)
None
iPhone ≠ computer
http://www.flickr.com/photos/oskay/365607662/
http://www.flickr.com/photos/blakespot/2379207825/
http://www.flickr.com/photos/oskay/365607591/
Mobile HIG
now more important than ever!
None
None
None
None
NDA
None
books
None
None
None
None
None
None
None
None
None
thanks!
Please fill your evaluation forms!
(you could win a ticket)
questions?