SlideShare uma empresa Scribd logo
1 de 38
Patterns & Techniques
 For Cross-Platform
 Objective-C Code
            Graham Lee
    Smartphone Security Boffin, O2
             @iamleeg
http://www.levenez.com/unix
http://www.levenez.com/unix
@interface O2LPerson : NSObject
- (id)init;
- (NSString *)name;
- (NSArray *)phoneNumbers;
// …
@end
@interface O2LPerson : NSObject
        - (id)init;
        - (NSString *)name;
        - (NSArray *)phoneNumbers;
        // …
        @end

@implementation O2LPerson {
@private
O2LPersonStrategy *personStrategy;
}
- (NSString *)name {return [personStrategy name];}
- (NSArray *)phoneNumbers {return [personStrategy
phoneNumbers];}
// …
@end
@interface O2LPerson : NSObject
        - (id)init;
        - (NSString *)name;
        - (NSArray *)phoneNumbers;
        // …
        @end

@implementation O2LPerson {
@private
O2LPersonStrategy *personStrategy;
}
- (NSString *)name {return [personStrategy name];}
- (NSArray *)phoneNumbers {return [personStrategy
phoneNumbers];}
// …
@end

@interface O2LPersonStrategyMac

@interface O2LPersonStrategyiOS
@interface O2LPerson : NSObject
        - (id)init;
        - (NSString *)name;
        - (NSArray *)phoneNumbers;
        // …
        @end

@implementation O2LPerson {
@private
O2LPersonStrategy *personStrategy;
}
- (NSString *)name {return [personStrategy name];}
- (NSArray *)phoneNumbers {return [personStrategy
phoneNumbers];}
// …
@end

@interface O2LPersonStrategyMac

@interface O2LPersonStrategyiOS

@interface O2LPersonStrategyLiveConnect
@interface O2LPerson : NSObject
           - (id)init;
           - (NSString *)name;
           - (NSArray *)phoneNumbers;
           // …
           @end

@implementation O2LPerson
- (id)init {
  [self release]; self = nil;
  if (iOS) return [[O2LPersoniOS alloc] init];
  else if (mac) return [[O2LPersonMac alloc] init];
  //…
}

- (NSString *)name {[self subclassResponsibility: _cmd];}

// …

@end
[frameworkObject hasShinyFeature]

[frameworkObject respondsToSelector:]
[frameworkObject hasShinyFeature]

[frameworkObject respondsToSelector:]

NSClassFromString(@”ShinyClass”)
[frameworkObject hasShinyFeature]

[frameworkObject respondsToSelector:]

NSClassFromString(@”ShinyClass”)

[ShinyClass class] != nil
[frameworkObject hasShinyFeature]

[frameworkObject respondsToSelector:]

NSClassFromString(@”ShinyClass”)

[ShinyClass class] != nil

dlopen(”shiny.dylib”, RTLD_LAZY) != NULL
[frameworkObject hasShinyFeature]

[frameworkObject respondsToSelector:]

NSClassFromString(@”ShinyClass”)

[ShinyClass class] != nil

dlopen(”shiny.dylib”, RTLD_LAZY) != NULL

#ifdef SHINYFEATURE
…
…


include $(GNUSTEP_MAKEFILES)/common.make
PACKAGE_NAME = GFractal
VERSION = 0.1

# The application to be compiled
APP_NAME = GFractal

# The Objective-C source files to be compiled
GFractal_OBJC_FILES = main.m 
  Controller.m    
  FractalView.m   
  FractalWindow.m 


# The Resource files to be copied into the app's resources directory
GFractal_RESOURCE_FILES = Icons/*

include $(GNUSTEP_MAKEFILES)/application.make
“Be excellent to each other”


          Graham Lee
  Smartphone Security Boffin, O2
           @iamleeg

Mais conteúdo relacionado

Mais procurados

The Ring programming language version 1.5.1 book - Part 74 of 180
The Ring programming language version 1.5.1 book - Part 74 of 180The Ring programming language version 1.5.1 book - Part 74 of 180
The Ring programming language version 1.5.1 book - Part 74 of 180Mahmoud Samir Fayed
 
PHP in 2018 - Q4 - AFUP Limoges
PHP in 2018 - Q4 - AFUP LimogesPHP in 2018 - Q4 - AFUP Limoges
PHP in 2018 - Q4 - AFUP Limoges✅ William Pinaud
 
4. Обработка ошибок, исключения, отладка
4. Обработка ошибок, исключения, отладка4. Обработка ошибок, исключения, отладка
4. Обработка ошибок, исключения, отладкаDEVTYPE
 
First Steps. (db4o - Object Oriented Database)
First Steps. (db4o - Object Oriented Database)First Steps. (db4o - Object Oriented Database)
First Steps. (db4o - Object Oriented Database)Wildan Maulana
 
Grand Central Dispatch in Objective-C
Grand Central Dispatch in Objective-CGrand Central Dispatch in Objective-C
Grand Central Dispatch in Objective-CPavel Albitsky
 
The Ring programming language version 1.6 book - Part 81 of 189
The Ring programming language version 1.6 book - Part 81 of 189The Ring programming language version 1.6 book - Part 81 of 189
The Ring programming language version 1.6 book - Part 81 of 189Mahmoud Samir Fayed
 
Lambda выражения и Java 8
Lambda выражения и Java 8Lambda выражения и Java 8
Lambda выражения и Java 8Alex Tumanoff
 
Flashback, el primer malware masivo de sistemas Mac
Flashback, el primer malware masivo de sistemas MacFlashback, el primer malware masivo de sistemas Mac
Flashback, el primer malware masivo de sistemas MacESET Latinoamérica
 
C# features through examples
C# features through examplesC# features through examples
C# features through examplesZayen Chagra
 
Hacking Parse.y with ujihisa
Hacking Parse.y with ujihisaHacking Parse.y with ujihisa
Hacking Parse.y with ujihisaujihisa
 
3. Объекты, классы и пакеты в Java
3. Объекты, классы и пакеты в Java3. Объекты, классы и пакеты в Java
3. Объекты, классы и пакеты в JavaDEVTYPE
 
Functional microscope - Lenses in C++
Functional microscope - Lenses in C++Functional microscope - Lenses in C++
Functional microscope - Lenses in C++Alexander Granin
 
Introduction to Ecmascript - ES6
Introduction to Ecmascript - ES6Introduction to Ecmascript - ES6
Introduction to Ecmascript - ES6Nilesh Jayanandana
 

Mais procurados (19)

The Ring programming language version 1.5.1 book - Part 74 of 180
The Ring programming language version 1.5.1 book - Part 74 of 180The Ring programming language version 1.5.1 book - Part 74 of 180
The Ring programming language version 1.5.1 book - Part 74 of 180
 
PHP in 2018 - Q4 - AFUP Limoges
PHP in 2018 - Q4 - AFUP LimogesPHP in 2018 - Q4 - AFUP Limoges
PHP in 2018 - Q4 - AFUP Limoges
 
Ecma script 5
Ecma script 5Ecma script 5
Ecma script 5
 
4. Обработка ошибок, исключения, отладка
4. Обработка ошибок, исключения, отладка4. Обработка ошибок, исключения, отладка
4. Обработка ошибок, исключения, отладка
 
First Steps. (db4o - Object Oriented Database)
First Steps. (db4o - Object Oriented Database)First Steps. (db4o - Object Oriented Database)
First Steps. (db4o - Object Oriented Database)
 
Grand Central Dispatch in Objective-C
Grand Central Dispatch in Objective-CGrand Central Dispatch in Objective-C
Grand Central Dispatch in Objective-C
 
JavaScript ES6
JavaScript ES6JavaScript ES6
JavaScript ES6
 
EcmaScript 6
EcmaScript 6 EcmaScript 6
EcmaScript 6
 
The Ring programming language version 1.6 book - Part 81 of 189
The Ring programming language version 1.6 book - Part 81 of 189The Ring programming language version 1.6 book - Part 81 of 189
The Ring programming language version 1.6 book - Part 81 of 189
 
Lambda выражения и Java 8
Lambda выражения и Java 8Lambda выражения и Java 8
Lambda выражения и Java 8
 
Arp
ArpArp
Arp
 
Flashback, el primer malware masivo de sistemas Mac
Flashback, el primer malware masivo de sistemas MacFlashback, el primer malware masivo de sistemas Mac
Flashback, el primer malware masivo de sistemas Mac
 
Anti patterns
Anti patternsAnti patterns
Anti patterns
 
C# features through examples
C# features through examplesC# features through examples
C# features through examples
 
Hacking Parse.y with ujihisa
Hacking Parse.y with ujihisaHacking Parse.y with ujihisa
Hacking Parse.y with ujihisa
 
3. Объекты, классы и пакеты в Java
3. Объекты, классы и пакеты в Java3. Объекты, классы и пакеты в Java
3. Объекты, классы и пакеты в Java
 
Functional microscope - Lenses in C++
Functional microscope - Lenses in C++Functional microscope - Lenses in C++
Functional microscope - Lenses in C++
 
Introduction to Ecmascript - ES6
Introduction to Ecmascript - ES6Introduction to Ecmascript - ES6
Introduction to Ecmascript - ES6
 
ECMAScript 6
ECMAScript 6ECMAScript 6
ECMAScript 6
 

Destaque

Taking a Test Drive: iOS Dev UK guide to TDD
Taking a Test Drive: iOS Dev UK guide to TDDTaking a Test Drive: iOS Dev UK guide to TDD
Taking a Test Drive: iOS Dev UK guide to TDDGraham Lee
 
Presentations and Podcasts - OxMug July 2009
Presentations and Podcasts - OxMug July 2009Presentations and Podcasts - OxMug July 2009
Presentations and Podcasts - OxMug July 2009Graham Lee
 
Intel Briefing Notes
Intel Briefing NotesIntel Briefing Notes
Intel Briefing NotesGraham Lee
 
Beyond build and analyze
Beyond build and analyzeBeyond build and analyze
Beyond build and analyzeGraham Lee
 
The Principled Programmer
The Principled ProgrammerThe Principled Programmer
The Principled ProgrammerGraham Lee
 
Dial M For Mitigation
Dial M For MitigationDial M For Mitigation
Dial M For MitigationGraham Lee
 
Crypto storage
Crypto storageCrypto storage
Crypto storageGraham Lee
 
Designing a Secure Cocoa App
Designing a Secure Cocoa AppDesigning a Secure Cocoa App
Designing a Secure Cocoa AppGraham Lee
 
Sign your code
Sign your codeSign your code
Sign your codeGraham Lee
 

Destaque (9)

Taking a Test Drive: iOS Dev UK guide to TDD
Taking a Test Drive: iOS Dev UK guide to TDDTaking a Test Drive: iOS Dev UK guide to TDD
Taking a Test Drive: iOS Dev UK guide to TDD
 
Presentations and Podcasts - OxMug July 2009
Presentations and Podcasts - OxMug July 2009Presentations and Podcasts - OxMug July 2009
Presentations and Podcasts - OxMug July 2009
 
Intel Briefing Notes
Intel Briefing NotesIntel Briefing Notes
Intel Briefing Notes
 
Beyond build and analyze
Beyond build and analyzeBeyond build and analyze
Beyond build and analyze
 
The Principled Programmer
The Principled ProgrammerThe Principled Programmer
The Principled Programmer
 
Dial M For Mitigation
Dial M For MitigationDial M For Mitigation
Dial M For Mitigation
 
Crypto storage
Crypto storageCrypto storage
Crypto storage
 
Designing a Secure Cocoa App
Designing a Secure Cocoa AppDesigning a Secure Cocoa App
Designing a Secure Cocoa App
 
Sign your code
Sign your codeSign your code
Sign your code
 

Semelhante a Cross platform Objective-C Strategy

Modernize your Objective-C
Modernize your Objective-CModernize your Objective-C
Modernize your Objective-CMassimo Oliviero
 
Modernizes your objective C - Oliviero
Modernizes your objective C - OlivieroModernizes your objective C - Oliviero
Modernizes your objective C - OlivieroCodemotion
 
Agile Iphone Development
Agile Iphone DevelopmentAgile Iphone Development
Agile Iphone DevelopmentGiordano Scalzo
 
Best of build 2021 - C# 10 & .NET 6
Best of build 2021 -  C# 10 & .NET 6Best of build 2021 -  C# 10 & .NET 6
Best of build 2021 - C# 10 & .NET 6Moaid Hathot
 
Productaccess m
Productaccess mProductaccess m
Productaccess mAdil Usman
 
mobile in the cloud with diamonds. improved.
mobile in the cloud with diamonds. improved.mobile in the cloud with diamonds. improved.
mobile in the cloud with diamonds. improved.Oleg Shanyuk
 
create-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfcreate-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfShaiAlmog1
 
Webエンジニアから見たiOS5
Webエンジニアから見たiOS5Webエンジニアから見たiOS5
Webエンジニアから見たiOS5Satoshi Asano
 
Ast transformations
Ast transformationsAst transformations
Ast transformationsHamletDRC
 
For each task, submit your source java code file.(1) Objective Im.pdf
For each task, submit your source java code file.(1) Objective Im.pdfFor each task, submit your source java code file.(1) Objective Im.pdf
For each task, submit your source java code file.(1) Objective Im.pdfdhavalbl38
 
Beginning icloud development - Cesare Rocchi - WhyMCA
Beginning icloud development - Cesare Rocchi - WhyMCABeginning icloud development - Cesare Rocchi - WhyMCA
Beginning icloud development - Cesare Rocchi - WhyMCAWhymca
 
Groovy Ast Transformations (greach)
Groovy Ast Transformations (greach)Groovy Ast Transformations (greach)
Groovy Ast Transformations (greach)HamletDRC
 
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDBTDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDBtdc-globalcode
 
AST Transformations at JFokus
AST Transformations at JFokusAST Transformations at JFokus
AST Transformations at JFokusHamletDRC
 
TDC2016SP - Trilha .NET
TDC2016SP - Trilha .NETTDC2016SP - Trilha .NET
TDC2016SP - Trilha .NETtdc-globalcode
 
Hızlı Cocoa Geliştirme (Develop your next cocoa app faster!)
Hızlı Cocoa Geliştirme (Develop your next cocoa app faster!)Hızlı Cocoa Geliştirme (Develop your next cocoa app faster!)
Hızlı Cocoa Geliştirme (Develop your next cocoa app faster!)Sarp Erdag
 

Semelhante a Cross platform Objective-C Strategy (20)

Modernize your Objective-C
Modernize your Objective-CModernize your Objective-C
Modernize your Objective-C
 
Modernizes your objective C - Oliviero
Modernizes your objective C - OlivieroModernizes your objective C - Oliviero
Modernizes your objective C - Oliviero
 
Agile Iphone Development
Agile Iphone DevelopmentAgile Iphone Development
Agile Iphone Development
 
Runtime
RuntimeRuntime
Runtime
 
Best of build 2021 - C# 10 & .NET 6
Best of build 2021 -  C# 10 & .NET 6Best of build 2021 -  C# 10 & .NET 6
Best of build 2021 - C# 10 & .NET 6
 
Productaccess m
Productaccess mProductaccess m
Productaccess m
 
mobile in the cloud with diamonds. improved.
mobile in the cloud with diamonds. improved.mobile in the cloud with diamonds. improved.
mobile in the cloud with diamonds. improved.
 
create-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdfcreate-netflix-clone-02-server.pdf
create-netflix-clone-02-server.pdf
 
Webエンジニアから見たiOS5
Webエンジニアから見たiOS5Webエンジニアから見たiOS5
Webエンジニアから見たiOS5
 
iOS Session-2
iOS Session-2iOS Session-2
iOS Session-2
 
Ast transformations
Ast transformationsAst transformations
Ast transformations
 
For each task, submit your source java code file.(1) Objective Im.pdf
For each task, submit your source java code file.(1) Objective Im.pdfFor each task, submit your source java code file.(1) Objective Im.pdf
For each task, submit your source java code file.(1) Objective Im.pdf
 
Beginning icloud development - Cesare Rocchi - WhyMCA
Beginning icloud development - Cesare Rocchi - WhyMCABeginning icloud development - Cesare Rocchi - WhyMCA
Beginning icloud development - Cesare Rocchi - WhyMCA
 
Groovy Ast Transformations (greach)
Groovy Ast Transformations (greach)Groovy Ast Transformations (greach)
Groovy Ast Transformations (greach)
 
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDBTDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
TDC2016POA | Trilha .NET - CQRS e ES na prática com RavenDB
 
Parse.com
Parse.comParse.com
Parse.com
 
AST Transformations at JFokus
AST Transformations at JFokusAST Transformations at JFokus
AST Transformations at JFokus
 
Realm to Json & Royal
Realm to Json & RoyalRealm to Json & Royal
Realm to Json & Royal
 
TDC2016SP - Trilha .NET
TDC2016SP - Trilha .NETTDC2016SP - Trilha .NET
TDC2016SP - Trilha .NET
 
Hızlı Cocoa Geliştirme (Develop your next cocoa app faster!)
Hızlı Cocoa Geliştirme (Develop your next cocoa app faster!)Hızlı Cocoa Geliştirme (Develop your next cocoa app faster!)
Hızlı Cocoa Geliştirme (Develop your next cocoa app faster!)
 

Último

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 

Último (20)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

Cross platform Objective-C Strategy

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  5. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  6. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  7. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  8. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  9. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  10. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  11. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  12. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  13. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  14. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  15. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  16. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  17. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  18. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  19. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  20. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  21. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  22. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  23. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  24. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  25. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  26. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  27. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  28. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  29. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  30. Page 6: NeXT. Look for Rhapsody in 1997, Cheetah in 2001, iPhone OS in 2007\n
  31. This is about managing change, both change over time (different versions of an OS have different features/bugs) but over space (different environments exist in different places).\n
  32. This is about managing change, both change over time (different versions of an OS have different features/bugs) but over space (different environments exist in different places).\n
  33. This is about managing change, both change over time (different versions of an OS have different features/bugs) but over space (different environments exist in different places).\n
  34. This is about managing change, both change over time (different versions of an OS have different features/bugs) but over space (different environments exist in different places).\n
  35. This is about managing change, both change over time (different versions of an OS have different features/bugs) but over space (different environments exist in different places).\n
  36. This is about managing change, both change over time (different versions of an OS have different features/bugs) but over space (different environments exist in different places).\n
  37. This is about managing change, both change over time (different versions of an OS have different features/bugs) but over space (different environments exist in different places).\n
  38. First place to start is object design: the behaviour of our app shouldn’t depend on how the libraries we’re using implement their features. Encapsulate the varying (i.e. version/platform specific) behaviour behind an interface. Useful patterns: class cluster, strategy.\n
  39. First place to start is object design: the behaviour of our app shouldn’t depend on how the libraries we’re using implement their features. Encapsulate the varying (i.e. version/platform specific) behaviour behind an interface. Useful patterns: class cluster, strategy.\n
  40. First place to start is object design: the behaviour of our app shouldn’t depend on how the libraries we’re using implement their features. Encapsulate the varying (i.e. version/platform specific) behaviour behind an interface. Useful patterns: class cluster, strategy.\n
  41. First place to start is object design: the behaviour of our app shouldn’t depend on how the libraries we’re using implement their features. Encapsulate the varying (i.e. version/platform specific) behaviour behind an interface. Useful patterns: class cluster, strategy.\n
  42. First place to start is object design: the behaviour of our app shouldn’t depend on how the libraries we’re using implement their features. Encapsulate the varying (i.e. version/platform specific) behaviour behind an interface. Useful patterns: class cluster, strategy.\n
  43. First place to start is object design: the behaviour of our app shouldn’t depend on how the libraries we’re using implement their features. Encapsulate the varying (i.e. version/platform specific) behaviour behind an interface. Useful patterns: class cluster, strategy.\n
  44. First place to start is object design: the behaviour of our app shouldn’t depend on how the libraries we’re using implement their features. Encapsulate the varying (i.e. version/platform specific) behaviour behind an interface. Useful patterns: class cluster, strategy.\n
  45. First place to start is object design: the behaviour of our app shouldn’t depend on how the libraries we’re using implement their features. Encapsulate the varying (i.e. version/platform specific) behaviour behind an interface. Useful patterns: class cluster, strategy.\n
  46. First place to start is object design: the behaviour of our app shouldn’t depend on how the libraries we’re using implement their features. Encapsulate the varying (i.e. version/platform specific) behaviour behind an interface. Useful patterns: class cluster, strategy.\n
  47. Where possible, test for features rather than platforms (notice that in the address book example, Mac OS X and iOS offer the same frameworks and functions but they work differently so we have to test for platforms). Weak linking frameworks and libraries lets you test for their existence at runtime. It’s best to restrict use of these tests as much as possible, hence the encapsulation. Abstract Factory is a great pattern here. Autoconf is a useful tool for creating preprocessor tests for different features: though obviously it is done at build-time so think about where you’re building.\n
  48. Where possible, test for features rather than platforms (notice that in the address book example, Mac OS X and iOS offer the same frameworks and functions but they work differently so we have to test for platforms). Weak linking frameworks and libraries lets you test for their existence at runtime. It’s best to restrict use of these tests as much as possible, hence the encapsulation. Abstract Factory is a great pattern here. Autoconf is a useful tool for creating preprocessor tests for different features: though obviously it is done at build-time so think about where you’re building.\n
  49. Where possible, test for features rather than platforms (notice that in the address book example, Mac OS X and iOS offer the same frameworks and functions but they work differently so we have to test for platforms). Weak linking frameworks and libraries lets you test for their existence at runtime. It’s best to restrict use of these tests as much as possible, hence the encapsulation. Abstract Factory is a great pattern here. Autoconf is a useful tool for creating preprocessor tests for different features: though obviously it is done at build-time so think about where you’re building.\n
  50. Where possible, test for features rather than platforms (notice that in the address book example, Mac OS X and iOS offer the same frameworks and functions but they work differently so we have to test for platforms). Weak linking frameworks and libraries lets you test for their existence at runtime. It’s best to restrict use of these tests as much as possible, hence the encapsulation. Abstract Factory is a great pattern here. Autoconf is a useful tool for creating preprocessor tests for different features: though obviously it is done at build-time so think about where you’re building.\n
  51. Where possible, test for features rather than platforms (notice that in the address book example, Mac OS X and iOS offer the same frameworks and functions but they work differently so we have to test for platforms). Weak linking frameworks and libraries lets you test for their existence at runtime. It’s best to restrict use of these tests as much as possible, hence the encapsulation. Abstract Factory is a great pattern here. Autoconf is a useful tool for creating preprocessor tests for different features: though obviously it is done at build-time so think about where you’re building.\n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. GNUstep: build with makefiles that encapsulate all the complexity of configuring for the target platform, can be native or cross-compiled. \n
  58. GNUstep: build with makefiles that encapsulate all the complexity of configuring for the target platform, can be native or cross-compiled. \n
  59. GNUstep: build with makefiles that encapsulate all the complexity of configuring for the target platform, can be native or cross-compiled. \n
  60. GNUstep: build with makefiles that encapsulate all the complexity of configuring for the target platform, can be native or cross-compiled. \n
  61. GNUstep: build with makefiles that encapsulate all the complexity of configuring for the target platform, can be native or cross-compiled. \n
  62. GNUstep: build with makefiles that encapsulate all the complexity of configuring for the target platform, can be native or cross-compiled. \n
  63. GNUstep: build with makefiles that encapsulate all the complexity of configuring for the target platform, can be native or cross-compiled. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. Give people what they expect to see on whatever platform they’re using. That may mean writing custom UIs for each platform, but that’s OK: it’s not repetition because each is adding something useful to the app.\n
  70. \n
  71. \n