13. EVOLUTION XCODE 4.1
JUILLET 2011
• Support de Mac OS X LION (10.7)
• Autolayout (Lion)
14. EVOLUTION XCODE 4.1
JUILLET 2011
• Support de Mac OS X LION (10.7)
• Autolayout (Lion)
• OS X Application Sandbox (Lion)
15. EVOLUTION XCODE 4.1
JUILLET 2011
• Support de Mac OS X LION (10.7)
• Autolayout (Lion)
• OS X Application Sandbox (Lion)
• Default compiler LLVM-GCC 4.2
16. EVOLUTION XCODE 4.1
JUILLET 2011
• Support de Mac OS X LION (10.7)
• Autolayout (Lion)
• OS X Application Sandbox (Lion)
• Default compiler LLVM-GCC 4.2
• Custom Behaviors
17. EVOLUTION XCODE 4.1
JUILLET 2011
• Support de Mac OS X LION (10.7)
• Autolayout (Lion)
• OS X Application Sandbox (Lion)
• Default compiler LLVM-GCC 4.2
• Custom Behaviors
• Git Remote Management
26. EVOLUTION XCODE 4.3
MARS 2012
• Une application “tout en un“ téléchargeable depuis le Mac
AppStore. Bybye «/Developer»
27. EVOLUTION XCODE 4.3
MARS 2012
• Une application “tout en un“ téléchargeable depuis le Mac
AppStore. Bybye «/Developer»
• Auto Layout est par défaut pour tout projet Cocoa
28. EVOLUTION XCODE 4.3
MARS 2012
• Une application “tout en un“ téléchargeable depuis le Mac
AppStore. Bybye «/Developer»
• Auto Layout est par défaut pour tout projet Cocoa
• Xcode 4.3.1 -> support iOS5.1
29. EVOLUTION XCODE 4.3
MARS 2012
• Une application “tout en un“ téléchargeable depuis le Mac
AppStore. Bybye «/Developer»
• Auto Layout est par défaut pour tout projet Cocoa
• Xcode 4.3.1 -> support iOS5.1
• Xcode 4.3.3 -> maj pour 10.7.4
32. EVOLUTION XCODE 4.4
JUILLET 2012
• Support de Mountain Lion (10.8)
• Fonctionne sur Mac OS X Lion et Mountain Lion
33. EVOLUTION XCODE 4.4
JUILLET 2012
• Support de Mountain Lion (10.8)
• Fonctionne sur Mac OS X Lion et Mountain Lion
• LLVM 4.0 Compiler màj (literals & subscription) - OS X
34. EVOLUTION XCODE 4.4
JUILLET 2012
• Support de Mountain Lion (10.8)
• Fonctionne sur Mac OS X Lion et Mountain Lion
• LLVM 4.0 Compiler màj (literals & subscription) - OS X
• Synthesize par défaut pour les properties
35. EVOLUTION XCODE 4.4
JUILLET 2012
• Support de Mountain Lion (10.8)
• Fonctionne sur Mac OS X Lion et Mountain Lion
• LLVM 4.0 Compiler màj (literals & subscription) - OS X
• Synthesize par défaut pour les properties
• Amélioration de l’«analyzer» (common security mistakes in API and malloc
usages)
36. EVOLUTION XCODE 4.4
JUILLET 2012
• Support de Mountain Lion (10.8)
• Fonctionne sur Mac OS X Lion et Mountain Lion
• LLVM 4.0 Compiler màj (literals & subscription) - OS X
• Synthesize par défaut pour les properties
• Amélioration de l’«analyzer» (common security mistakes in API and malloc
usages)
• 4.4.1 -> avec correction de quelques bugs
39. EVOLUTION XCODE 4.5
SEPTEMBRE 2012
• iOS6 support
• Écran 4“ Retina de l’iPhone 5 & iPod
40. EVOLUTION XCODE 4.5
SEPTEMBRE 2012
• iOS6 support
• Écran 4“ Retina de l’iPhone 5 & iPod
• Support des literals & subscripting pour iOS
41. EVOLUTION XCODE 4.5
SEPTEMBRE 2012
• iOS6 support
• Écran 4“ Retina de l’iPhone 5 & iPod
• Support des literals & subscripting pour iOS
• Autolayout pour iOS
42. EVOLUTION XCODE 4.5
SEPTEMBRE 2012
• iOS6 support
• Écran 4“ Retina de l’iPhone 5 & iPod
• Support des literals & subscripting pour iOS
• Autolayout pour iOS
• LLDB is now the default debugger & LLDB supports hardware
watchpoints on iOS devices
43. EVOLUTION XCODE 4.5
SEPTEMBRE 2012
• iOS6 support
• Écran 4“ Retina de l’iPhone 5 & iPod
• Support des literals & subscripting pour iOS
• Autolayout pour iOS
• LLDB is now the default debugger & LLDB supports hardware
watchpoints on iOS devices
• Xcode 4.5.1 (octobre) -> bug fix & stabilité
44. EVOLUTION XCODE 4.5
SEPTEMBRE 2012
• iOS6 support
• Écran 4“ Retina de l’iPhone 5 & iPod
• Support des literals & subscripting pour iOS
• Autolayout pour iOS
• LLDB is now the default debugger & LLDB supports hardware
watchpoints on iOS devices
• Xcode 4.5.1 (octobre) -> bug fix & stabilité
• Xcode 4.5.2 (novembre) -> support de l’iPad mini & iPad écran retina
49. AMÉLIORATION D’OBJECTIVE C
SIMPLIFICATION : ORDRE DES MÉTHODES 2/5
Solution 1) Ordonnancer les méthodes
#import "CocoaheadsMeetingViewController.h"
@implementation CocoaheadsMeetingViewController
- (void)carefully {}
- (void)listeningThePresentation {
[self carefully];
}
@end
50. AMÉLIORATION D’OBJECTIVE C
SIMPLIFICATION : ORDRE DES MÉTHODES 2/5
Solution 1) Ordonnancer les méthodes
#import "CocoaheadsMeetingViewController.h"
@implementation CocoaheadsMeetingViewController
- (void)carefully {}
- (void)listeningThePresentation {
[self carefully];
}
@end
Analyse :
• ne fonctionne pas tout le temps
• surtout une perte de temps
57. AMÉLIORATION D’OBJECTIVE C
SIMPLIFICATION : ORDRE DES MÉTHODES 4/5
Solution 3) Extension de classe
@interface CocoaheadsMeetingViewController ()
- (void)carefully;
@end
@implementation CocoaheadsMeetingViewController
- (void)listeningThePresentation {
[self carefully];
}
- (void)carefully {}
58. AMÉLIORATION D’OBJECTIVE C
SIMPLIFICATION : ORDRE DES MÉTHODES 4/5
Solution 3) Extension de classe
@interface CocoaheadsMeetingViewController ()
- (void)carefully;
@end
@implementation CocoaheadsMeetingViewController
- (void)listeningThePresentation {
[self carefully];
}
- (void)carefully {}
Analyse :
• permet l’ajout de “property“ privées & méthodes accessibles depuis un nib
• reste une perte de temps & un workaround
64. AMÉLIORATION D’OBJECTIVE C
SIMPLIFICATION : PROPERTIES
@interface PropertyObject : NSObject
@property (readwrite, strong) NSString * name;
@end
@implementation PropertyObject
@end
Analyse :
•“synthesize“ par défaut
•chaque accesseur est généré si non fourni
65. AMÉLIORATION D’OBJECTIVE C
SIMPLIFICATION : PROPERTIES
@interface PropertyObject : NSObject
@property (readwrite, strong) NSString * name;
@end
@implementation PropertyObject
@synthesize name = _name;// generated by default
@end
Analyse :
•“synthesize“ par défaut
•chaque accesseur est généré si non fourni
•variable d’instance généré par défaut “_variable“ si non fournie
66. AMÉLIORATION D’OBJECTIVE C
SIMPLIFICATION : PROPERTIES
@interface PropertyObject : NSObject
@property (readwrite, strong) NSString * name;
@end
@implementation PropertyObject
@synthesize name = _name;// generated by default
@end
Analyse :
•“synthesize“ par défaut
•chaque accesseur est généré si non fourni
•variable d’instance généré par défaut “_variable“ si non fournie
•compatibilité :
96. LITERALS 5/6
CONTAINER
• Container sont “immutable“
• Utiliser : “-mutableCopy“
NSMutableArray * numberArray = [@[ @"one", @"two", @"three"]mutableCopy];
• Usage static : «Initializer element is not a compile-time constant»
97. LITERALS 5/6
CONTAINER
• Container sont “immutable“
• Utiliser : “-mutableCopy“
NSMutableArray * numberArray = [@[ @"one", @"two", @"three"]mutableCopy];
• Usage static : «Initializer element is not a compile-time constant»
• workaround : affecter la valeur dans la méthode “+initialize“ de
votre classe
105. ASTUCES DÉMO
• Find and Search indexation de symbols & Insert pattern
• Callers or Callees
• Tag Fixme & TODO
• Refactor -> convert to modern Objectiv C
Amélioration du rechercher/remplacer (Pattern & Appelant et appelé & indexation de symbole)\n Tag Fixme & TODO & #pragma mark listés dans les méthodes\n
Amélioration du rechercher/remplacer (Pattern & Appelant et appelé & indexation de symbole)\n Tag Fixme & TODO & #pragma mark listés dans les méthodes\n
Amélioration du rechercher/remplacer (Pattern & Appelant et appelé & indexation de symbole)\n Tag Fixme & TODO & #pragma mark listés dans les méthodes\n
Amélioration du rechercher/remplacer (Pattern & Appelant et appelé & indexation de symbole)\n Tag Fixme & TODO & #pragma mark listés dans les méthodes\n
Amélioration du rechercher/remplacer (Pattern & Appelant et appelé & indexation de symbole)\n Tag Fixme & TODO & #pragma mark listés dans les méthodes\n
Amélioration du rechercher/remplacer (Pattern & Appelant et appelé & indexation de symbole)\n Tag Fixme & TODO & #pragma mark listés dans les méthodes\n
When the type of the parenthesized expression is (char *) or (const char *), the result of the boxed expression is a pointer to an NSString object containing equivalent character data, which is assumed to be '\\0'-terminated and UTF-8 encoded.\n(use the fixed underlying type)\n
When the type of the parenthesized expression is (char *) or (const char *), the result of the boxed expression is a pointer to an NSString object containing equivalent character data, which is assumed to be '\\0'-terminated and UTF-8 encoded.\n(use the fixed underlying type)\n
When the type of the parenthesized expression is (char *) or (const char *), the result of the boxed expression is a pointer to an NSString object containing equivalent character data, which is assumed to be '\\0'-terminated and UTF-8 encoded.\n(use the fixed underlying type)\n
When the type of the parenthesized expression is (char *) or (const char *), the result of the boxed expression is a pointer to an NSString object containing equivalent character data, which is assumed to be '\\0'-terminated and UTF-8 encoded.\n(use the fixed underlying type)\n
When the type of the parenthesized expression is (char *) or (const char *), the result of the boxed expression is a pointer to an NSString object containing equivalent character data, which is assumed to be '\\0'-terminated and UTF-8 encoded.\n(use the fixed underlying type)\n