SlideShare uma empresa Scribd logo
1 de 87
iPhone for .NET Developers
Ben Scheirman
Director of Development - ChaiONE
@subdigital
Slide 1 of 429
What you need


A Mac
Xcode
iPhone SDK (limited to Simulator)
iPhone Developer Program ($99 /year)
Objective-C

  Based on C
  Object Oriented
  Dynamic
  A little weird
  Powerful
Objective-C Primer
 Calling methods
Objective-C Primer
 Calling methods


[someObject someMethod];
Objective-C Primer
 Calling methods


[someObject someMethod];

[someObject someMethodWithInput:5];
Objective-C Primer
 Calling methods


[someObject someMethod];

[someObject someMethodWithInput:5];

[dictionary setObject:obj
               forKey:key];
Objective-C Primer
 Nesting method calls
Objective-C Primer
 Nesting method calls

[NSString stringWithFormat:
    [prefs format]];
Objective-C Primer
 Instantiating classes
Objective-C Primer
 Instantiating classes


UIView *view = [[UIView alloc] init];
Objective-C Primer
 Instantiating classes


UIView *view = [[UIView alloc] init];


NSDate *date = [NSDate date];
Objective-C Primer
 Defining Classes
Objective-C Primer
 Defining Classes


//Person.h
@interface Person {
  //instance variables
}

//properties & methods

@end
Objective-C Primer
 Defining Classes
Objective-C Primer
 Defining Classes


//Person.m
#import "Person.h"

@implementation Person

//implement properties & methods

@end
Objective-C Primer
 Defining Methods
Objective-C Primer
 Defining Methods




-(void)showLoadingText:(NSString *)text animated:(BOOL)animated;
Objective-C Primer
 Defining Methods
                            Method name (selector)




-(void)showLoadingText:(NSString *)text animated:(BOOL)animated;
Objective-C Primer
 Defining Methods
                            Method name (selector)




-(void)showLoadingText:(NSString *)text animated:(BOOL)animated;




   Return Type
Objective-C Primer
      Defining Methods
                                Method name (selector)




    -(void)showLoadingText:(NSString *)text animated:(BOOL)animated;




         Return Type


Instance method
Objective-C Primer
      Defining Methods
                                Method name (selector)




    -(void)showLoadingText:(NSString *)text animated:(BOOL)animated;




         Return Type
                                              Parameters

Instance method
Other interesting Things

 nil is a no-op

 Foo *foo = nil;
 [foo doSomething]; //nothing happens

 NSArray *array = nil;
 [array count]; //returns 0
Other Interesting Things

  Mix-in C style method definitions
// I put this in Macros.h
static inline BOOL isEmpty(id thing) {

 return thing == nil

 || ([thing respondsToSelector:@selector(length)]

 
       && [(NSData *)thing length] == 0)

 || ([thing respondsToSelector:@selector(count)]

 
       && [(NSArray *)thing count] == 0);
}



                                                     this method comes from Wil Shipley
Other Interesting Things


 Dynamic Programming achieved through Key-Value
 Coding


 NSArray *items = [NSArray arrayWithObject:foo];
 [items valueForKey:@"count"]; //returns 1
Other Interesting Things
 Can achieve "Extension Methods" or "Mix-ins" via
 Objective-C Categories

 //NSString+MyAdditions.h
 @interface NSString (MyAdditions)
 -(NSString *)stringInReverse;
 @end

 //NSString+MyAdditions.m
 @implementation NSString (MyAdditions)
 -(NSString *)stringInReverse { ... }
 @end

 //usage
 #import "NSString+MyAdditions.h"

 [@"foxy" stringInReverse]; //returns @"yxof"
Memory Management


No garbage collection on the iPhone
Retain / Release
Memory Management
Retain / Release Dance
Memory Management
 Retain / Release Dance

                                 1
Foo *foo = [[Foo alloc] init];
Memory Management
 Retain / Release Dance

                                 1
Foo *foo = [[Foo alloc] init];
                                 2
[foo retain];
Memory Management
 Retain / Release Dance

                                 1
Foo *foo = [[Foo alloc] init];
                                 2
[foo retain];
                                 1
[foo release];
Memory Management
 Retain / Release Dance

                                 1
Foo *foo = [[Foo alloc] init];
                                 2
[foo retain];
                                 1
[foo release];

[foo release];                   0
Memory Management
 Retain / Release Dance

                                               1
Foo *foo = [[Foo alloc] init];
                                               2
[foo retain];
                                               1
[foo release];

[foo release];            foo is deallocated   0
Forgetting to release (over-retaining)




Your
Class
Forgetting to release (over-retaining)




                               1
         alloc/init



Your
                      Object
Class
Forgetting to release (over-retaining)




                               2
                               1
         alloc/init

          retain
Your
                      Object
Class
Forgetting to release (over-retaining)




                               2
                               1
         alloc/init

           retain
Your
        doSomething   Object
Class
Forgetting to release (over-retaining)




                               1
         alloc/init

           retain
Your
        doSomething   Object
Class
          release
Forgetting to release (over-retaining)




                         1




                Object
Forgetting to release (over-retaining)




                         1




                Object        Object is leaked
                             App doesn't crash
Over-releasing




Your
Class
Over-releasing




                              1
        alloc/init



Your
                     Object
Class
Over-releasing




        alloc/init

         release
Your                 Garbage
Class                Memory
Over-releasing




         alloc/init

          release
Your                  Garbage
Class
        doSomething
                      Memory    App Crashes
Getters / Setters
Getters / Setters

[foo setBar:@"baz"];
Getters / Setters

[foo setBar:@"baz"];

[foo bar]; //returns @"baz"
Getters / Setters

[foo setBar:@"baz"];

[foo bar]; //returns @"baz"


foo.bar = @"gruul";
Getters / Setters

[foo setBar:@"baz"];

[foo bar]; //returns @"baz"


foo.bar = @"gruul";

foo.bar //returns @"gruul"
Implementing setters
Implementing setters

-(void)setBar:(id)value {
Implementing setters

-(void)setBar:(id)value {
  if(bar == value) return;
Implementing setters

-(void)setBar:(id)value {
  if(bar == value) return;
  [bar release];
Implementing setters

-(void)setBar:(id)value {
  if(bar == value) return;
  [bar release];
  bar = nil;
Implementing setters

-(void)setBar:(id)value {
  if(bar == value) return;
  [bar release];
  bar = nil;
  if(value != nil)
Implementing setters

-(void)setBar:(id)value {
  if(bar == value) return;
  [bar release];
  bar = nil;
  if(value != nil)
    bar = [value retain];
Implementing setters

-(void)setBar:(id)value {
  if(bar == value) return;
  [bar release];
  bar = nil;
  if(value != nil)
    bar = [value retain];
}
No Thanks
Properties
Properties
//Foo.h
Properties
//Foo.h
@property (nonatomic, retain) UIImage *image;
Properties
//Foo.h
@property (nonatomic, retain) UIImage *image;
@property (nonatomic, copy) NSString *message;
Properties
//Foo.h
@property (nonatomic, retain) UIImage *image;
@property (nonatomic, copy) NSString *message;




//Foo.m
Properties
//Foo.h
@property (nonatomic, retain) UIImage *image;
@property (nonatomic, copy) NSString *message;




//Foo.m
@synthesize image, message;
Properties
//Foo.h
@property (nonatomic, retain) UIImage *image;
@property (nonatomic, copy) NSString *message;




//Foo.m
@synthesize image, message;

-(void)dealloc {
Properties
//Foo.h
@property (nonatomic, retain) UIImage *image;
@property (nonatomic, copy) NSString *message;




//Foo.m
@synthesize image, message;

-(void)dealloc {

 [image release];
Properties
//Foo.h
@property (nonatomic, retain) UIImage *image;
@property (nonatomic, copy) NSString *message;




//Foo.m
@synthesize image, message;

-(void)dealloc {

 [image release];
 [message release];
Properties
//Foo.h
@property (nonatomic, retain) UIImage *image;
@property (nonatomic, copy) NSString *message;




//Foo.m
@synthesize image, message;

-(void)dealloc {

 [image release];
 [message release];

 [super dealloc];
Properties
//Foo.h
@property (nonatomic, retain) UIImage *image;
@property (nonatomic, copy) NSString *message;




//Foo.m
@synthesize image, message;

-(void)dealloc {

    [image release];
    [message release];

    [super dealloc];
}
Dot Syntax Dogma


      Use dot syntax if you like it

    Just be aware of what it's hiding
Xcode

Your IDE
Code completion
Interactive Debugger


Lacks good refactoring tools
Interface Builder

 Now Part of Xcode 4
 Drag-n-drop UI building
 Layouts are defined in XIBs (XML representation).
 Usually called "Nibs"


 "Make connections" with classes defined in Xcode
   variables --> UI components
   UI events --> methods
Instruments


 Find Memory Leaks
 Analyze Memory Usage
 Track down slow code
iOS SDK
                     Accelerate     CoreMotion

                    AddressBook    CoreTelephony

                    AudioToolbox     CoreText
 Your app
                    AVFoundation     CoreVideo

       UIKit         CoreAudio       GameKit

   CoreFoundation    CoreData           iAd

    CoreGraphics    CoreLocation      MapKit

                     CFNetwork        StoreKit
Model View Controller


     Model                View




             Controller
The View Controller


 Handles setup logic for a screen
 Handles user input
 Interacts with the model
 Contains 1 or more views
The View


Visual representation
Drawing
Laying out subviews (autorotation)
May Handle touch events
Lifecycle of an App

  main.m
Lifecycle of an App

   main.m




 UIApplication
Lifecycle of an App

   main.m




 UIApplication
Lifecycle of an App

   main.m        MainWindow.xib




 UIApplication
Lifecycle of an App

   main.m        MainWindow.xib




 UIApplication
Lifecycle of an App

   main.m        MainWindow.xib




 UIApplication                      YourAppDelegate



                                  UIWindow   Root View Controller
Lifecycle of an App

   main.m                 MainWindow.xib




 UIApplication                                     YourAppDelegate
                 applicationDidFinishLaunching




                                                 UIWindow   Root View Controller
Time to code!

Mais conteúdo relacionado

Mais procurados

Moose workshop
Moose workshopMoose workshop
Moose workshopYnon Perek
 
Automatic Reference Counting
Automatic Reference CountingAutomatic Reference Counting
Automatic Reference CountingGiuseppe Arici
 
iPhone Memory Management
iPhone Memory ManagementiPhone Memory Management
iPhone Memory ManagementVadim Zimin
 
Python Tricks That You Can't Live Without
Python Tricks That You Can't Live WithoutPython Tricks That You Can't Live Without
Python Tricks That You Can't Live WithoutAudrey Roy
 
Textual Modeling Framework Xtext
Textual Modeling Framework XtextTextual Modeling Framework Xtext
Textual Modeling Framework XtextSebastian Zarnekow
 
Intro to Python (High School) Unit #2
Intro to Python (High School) Unit #2Intro to Python (High School) Unit #2
Intro to Python (High School) Unit #2Jay Coskey
 
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...Charles Nutter
 
Djangocon11: Monkeying around at New Relic
Djangocon11: Monkeying around at New RelicDjangocon11: Monkeying around at New Relic
Djangocon11: Monkeying around at New RelicNew Relic
 
Drupal 8: A story of growing up and getting off the island
Drupal 8: A story of growing up and getting off the islandDrupal 8: A story of growing up and getting off the island
Drupal 8: A story of growing up and getting off the islandAngela Byron
 
Everything is Permitted: Extending Built-ins
Everything is Permitted: Extending Built-insEverything is Permitted: Extending Built-ins
Everything is Permitted: Extending Built-insAndrew Dupont
 
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014hwilming
 
Fast as C: How to Write Really Terrible Java
Fast as C: How to Write Really Terrible JavaFast as C: How to Write Really Terrible Java
Fast as C: How to Write Really Terrible JavaCharles Nutter
 
Proxies are Awesome!
Proxies are Awesome!Proxies are Awesome!
Proxies are Awesome!Brendan Eich
 
ES6 in Production [JSConfUY2015]
ES6 in Production [JSConfUY2015]ES6 in Production [JSConfUY2015]
ES6 in Production [JSConfUY2015]Guillermo Paz
 
Porting Java To Scala
Porting Java To Scala Porting Java To Scala
Porting Java To Scala guestbfe8bf
 

Mais procurados (20)

Moose workshop
Moose workshopMoose workshop
Moose workshop
 
Automatic Reference Counting
Automatic Reference CountingAutomatic Reference Counting
Automatic Reference Counting
 
iPhone Memory Management
iPhone Memory ManagementiPhone Memory Management
iPhone Memory Management
 
Python Tricks That You Can't Live Without
Python Tricks That You Can't Live WithoutPython Tricks That You Can't Live Without
Python Tricks That You Can't Live Without
 
Go Java, Go!
Go Java, Go!Go Java, Go!
Go Java, Go!
 
Textual Modeling Framework Xtext
Textual Modeling Framework XtextTextual Modeling Framework Xtext
Textual Modeling Framework Xtext
 
Intro to Python (High School) Unit #2
Intro to Python (High School) Unit #2Intro to Python (High School) Unit #2
Intro to Python (High School) Unit #2
 
Go Java, Go!
Go Java, Go!Go Java, Go!
Go Java, Go!
 
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...
Øredev 2011 - JVM JIT for Dummies (What the JVM Does With Your Bytecode When ...
 
Djangocon11: Monkeying around at New Relic
Djangocon11: Monkeying around at New RelicDjangocon11: Monkeying around at New Relic
Djangocon11: Monkeying around at New Relic
 
Drupal 8: A story of growing up and getting off the island
Drupal 8: A story of growing up and getting off the islandDrupal 8: A story of growing up and getting off the island
Drupal 8: A story of growing up and getting off the island
 
Everything is Permitted: Extending Built-ins
Everything is Permitted: Extending Built-insEverything is Permitted: Extending Built-ins
Everything is Permitted: Extending Built-ins
 
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
Exploring Ceylon with Gavin King - JUG BB Talk - Belrin 2014
 
JavaFXScript
JavaFXScriptJavaFXScript
JavaFXScript
 
Fast as C: How to Write Really Terrible Java
Fast as C: How to Write Really Terrible JavaFast as C: How to Write Really Terrible Java
Fast as C: How to Write Really Terrible Java
 
Down the Rabbit Hole
Down the Rabbit HoleDown the Rabbit Hole
Down the Rabbit Hole
 
Scala: A brief tutorial
Scala: A brief tutorialScala: A brief tutorial
Scala: A brief tutorial
 
Proxies are Awesome!
Proxies are Awesome!Proxies are Awesome!
Proxies are Awesome!
 
ES6 in Production [JSConfUY2015]
ES6 in Production [JSConfUY2015]ES6 in Production [JSConfUY2015]
ES6 in Production [JSConfUY2015]
 
Porting Java To Scala
Porting Java To Scala Porting Java To Scala
Porting Java To Scala
 

Destaque

Destaque (7)

Effective iOS Network Programming Techniques
Effective iOS Network Programming TechniquesEffective iOS Network Programming Techniques
Effective iOS Network Programming Techniques
 
Accessibility testing technology, human touch and value
Accessibility testing technology, human touch and value Accessibility testing technology, human touch and value
Accessibility testing technology, human touch and value
 
iPhone for .NET Developers
iPhone for .NET DevelopersiPhone for .NET Developers
iPhone for .NET Developers
 
Accessible Design
Accessible DesignAccessible Design
Accessible Design
 
SQLite Techniques
SQLite TechniquesSQLite Techniques
SQLite Techniques
 
Meet Git
Meet GitMeet Git
Meet Git
 
StartUpSaturday_Deque
StartUpSaturday_DequeStartUpSaturday_Deque
StartUpSaturday_Deque
 

Semelhante a Objective-C & iPhone for .NET Developers

My Adventures In Objective-C (A Rubyists Perspective)
My Adventures In Objective-C (A Rubyists Perspective)My Adventures In Objective-C (A Rubyists Perspective)
My Adventures In Objective-C (A Rubyists Perspective)abdels
 
iOS 2 - The practical Stuff
iOS 2 - The practical StuffiOS 2 - The practical Stuff
iOS 2 - The practical StuffPetr Dvorak
 
Origins of Elixir programming language
Origins of Elixir programming languageOrigins of Elixir programming language
Origins of Elixir programming languagePivorak MeetUp
 
FI MUNI 2012 - iOS Basics
FI MUNI 2012 - iOS BasicsFI MUNI 2012 - iOS Basics
FI MUNI 2012 - iOS BasicsPetr Dvorak
 
MFF UK - Introduction to iOS
MFF UK - Introduction to iOSMFF UK - Introduction to iOS
MFF UK - Introduction to iOSPetr Dvorak
 
How DRY impacts JavaScript performance // Faster JavaScript execution for the...
How DRY impacts JavaScript performance // Faster JavaScript execution for the...How DRY impacts JavaScript performance // Faster JavaScript execution for the...
How DRY impacts JavaScript performance // Faster JavaScript execution for the...Mathias Bynens
 
ESWHO, ESWHAT, ESWOW -- FEDucation -- IBM Design
ESWHO, ESWHAT, ESWOW -- FEDucation -- IBM DesignESWHO, ESWHAT, ESWOW -- FEDucation -- IBM Design
ESWHO, ESWHAT, ESWOW -- FEDucation -- IBM DesignJosh Black
 
The report of JavaOne2011 about groovy
The report of JavaOne2011 about groovyThe report of JavaOne2011 about groovy
The report of JavaOne2011 about groovyYasuharu Nakano
 
ARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマーARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマーSatoshi Asano
 
MacRuby & RubyMotion - Madridrb May 2012
MacRuby & RubyMotion - Madridrb May 2012MacRuby & RubyMotion - Madridrb May 2012
MacRuby & RubyMotion - Madridrb May 2012Mark Villacampa
 
iPhone Seminar Part 2
iPhone Seminar Part 2iPhone Seminar Part 2
iPhone Seminar Part 2NAILBITER
 
Python于Web 2.0网站的应用 - QCon Beijing 2010
Python于Web 2.0网站的应用 - QCon Beijing 2010Python于Web 2.0网站的应用 - QCon Beijing 2010
Python于Web 2.0网站的应用 - QCon Beijing 2010Qiangning Hong
 

Semelhante a Objective-C & iPhone for .NET Developers (20)

My Adventures In Objective-C (A Rubyists Perspective)
My Adventures In Objective-C (A Rubyists Perspective)My Adventures In Objective-C (A Rubyists Perspective)
My Adventures In Objective-C (A Rubyists Perspective)
 
Objective C Memory Management
Objective C Memory ManagementObjective C Memory Management
Objective C Memory Management
 
iOS 2 - The practical Stuff
iOS 2 - The practical StuffiOS 2 - The practical Stuff
iOS 2 - The practical Stuff
 
Origins of Elixir programming language
Origins of Elixir programming languageOrigins of Elixir programming language
Origins of Elixir programming language
 
Essential YUI
Essential YUIEssential YUI
Essential YUI
 
Sf2 wtf
Sf2 wtfSf2 wtf
Sf2 wtf
 
55 New Features in Java 7
55 New Features in Java 755 New Features in Java 7
55 New Features in Java 7
 
FI MUNI 2012 - iOS Basics
FI MUNI 2012 - iOS BasicsFI MUNI 2012 - iOS Basics
FI MUNI 2012 - iOS Basics
 
Ruby basics
Ruby basicsRuby basics
Ruby basics
 
MFF UK - Introduction to iOS
MFF UK - Introduction to iOSMFF UK - Introduction to iOS
MFF UK - Introduction to iOS
 
How DRY impacts JavaScript performance // Faster JavaScript execution for the...
How DRY impacts JavaScript performance // Faster JavaScript execution for the...How DRY impacts JavaScript performance // Faster JavaScript execution for the...
How DRY impacts JavaScript performance // Faster JavaScript execution for the...
 
ESWHO, ESWHAT, ESWOW -- FEDucation -- IBM Design
ESWHO, ESWHAT, ESWOW -- FEDucation -- IBM DesignESWHO, ESWHAT, ESWOW -- FEDucation -- IBM Design
ESWHO, ESWHAT, ESWOW -- FEDucation -- IBM Design
 
The report of JavaOne2011 about groovy
The report of JavaOne2011 about groovyThe report of JavaOne2011 about groovy
The report of JavaOne2011 about groovy
 
ARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマーARCでめちゃモテiOSプログラマー
ARCでめちゃモテiOSプログラマー
 
Sane Async Patterns
Sane Async PatternsSane Async Patterns
Sane Async Patterns
 
55j7
55j755j7
55j7
 
Leaks & Zombies
Leaks & ZombiesLeaks & Zombies
Leaks & Zombies
 
MacRuby & RubyMotion - Madridrb May 2012
MacRuby & RubyMotion - Madridrb May 2012MacRuby & RubyMotion - Madridrb May 2012
MacRuby & RubyMotion - Madridrb May 2012
 
iPhone Seminar Part 2
iPhone Seminar Part 2iPhone Seminar Part 2
iPhone Seminar Part 2
 
Python于Web 2.0网站的应用 - QCon Beijing 2010
Python于Web 2.0网站的应用 - QCon Beijing 2010Python于Web 2.0网站的应用 - QCon Beijing 2010
Python于Web 2.0网站的应用 - QCon Beijing 2010
 

Último

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Último (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Objective-C & iPhone for .NET Developers

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n
  105. \n
  106. \n
  107. \n
  108. \n
  109. \n
  110. \n