├── .gitignore ├── README.mdown ├── ch03 └── AssocRef │ ├── AssocRef.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── AssocRef │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── AssocRef-Info.plist │ ├── AssocRef-Prefix.pch │ ├── ViewController.h │ ├── ViewController.m │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ └── main.m │ └── Default-568h@2x.png ├── ch04 └── ObserverTrampoline │ ├── Default-568h@2x.png │ ├── ObserverTrampoline.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── ObserverTrampoline │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── ObserverTrampoline-Info.plist │ ├── ObserverTrampoline-Prefix.pch │ ├── ViewController.h │ ├── ViewController.m │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ ├── MainStoryboard_iPad.storyboard │ │ └── MainStoryboard_iPhone.storyboard │ └── main.m │ ├── RNMainThreadTrampoline.h │ ├── RNMainThreadTrampoline.m │ ├── RNObserverManager.h │ └── RNObserverManager.m ├── ch06 ├── NonRepeatingCellsExample │ ├── Default-568h@2x.png │ ├── NonRepeatingCellsExample.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── NonRepeatingCellsExample │ │ ├── BodyCell.h │ │ ├── BodyCell.m │ │ ├── FooterCell.h │ │ ├── FooterCell.m │ │ ├── HeaderCell.h │ │ ├── HeaderCell.m │ │ ├── NonRepeatingCellsExample-Info.plist │ │ ├── NonRepeatingCellsExample-Prefix.pch │ │ ├── NonRepeatingCellsExampleAppDelegate.h │ │ ├── NonRepeatingCellsExampleAppDelegate.m │ │ ├── NonRepeatingCellsExampleViewController.h │ │ ├── NonRepeatingCellsExampleViewController.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ ├── MainWindow.xib │ │ └── NonRepeatingCellsExampleViewController.xib │ │ └── main.m └── TableViewPerformance │ ├── Default-568h@2x.png │ ├── TableViewPerformance.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── TableViewPerformance │ ├── ABTableViewCell.h │ ├── ABTableViewCell.m │ ├── CustomCell.h │ ├── CustomCell.m │ ├── CustomCell.xib │ ├── CustomDrawnCell.h │ ├── CustomDrawnCell.m │ ├── TableViewPerformance-Info.plist │ ├── TableViewPerformance-Prefix.pch │ ├── TableViewPerformanceAppDelegate.h │ ├── TableViewPerformanceAppDelegate.m │ ├── TableViewPerformanceViewController.h │ ├── TableViewPerformanceViewController.m │ ├── en.lproj │ ├── InfoPlist.strings │ ├── MainWindow.xib │ └── TableViewPerformanceViewController.xib │ ├── iOS6.png │ └── main.m ├── ch07 ├── AutoLayoutDemo │ ├── AutoLayoutDemo.xcodeproj │ │ └── project.pbxproj │ └── AutoLayoutDemo │ │ ├── AutoLayoutDemo-Info.plist │ │ ├── AutoLayoutDemo-Prefix.pch │ │ ├── MKAppDelegate.h │ │ ├── MKAppDelegate.m │ │ ├── MKViewController.h │ │ ├── MKViewController.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ ├── ios6.png │ │ └── main.m └── CollectionViewDemo │ ├── CollectionViewDemo.xcodeproj │ └── project.pbxproj │ ├── CollectionViewDemo │ ├── CollectionViewDemo-Info.plist │ ├── CollectionViewDemo-Prefix.pch │ ├── MKAppDelegate.h │ ├── MKAppDelegate.m │ ├── MKDetailsViewController.h │ ├── MKDetailsViewController.m │ ├── MKPhotoCell.h │ ├── MKPhotoCell.m │ ├── MKViewController.h │ ├── MKViewController.m │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ └── main.m │ └── Photos │ ├── DSC00003.jpg │ ├── DSC00023.jpg │ ├── DSC00231.JPG │ ├── DSC00452.JPG │ ├── DSC00592.JPG │ ├── DSC00597.JPG │ ├── DSC00598.JPG │ ├── DSC00601.JPG │ ├── DSC00602.JPG │ ├── DSC00603.JPG │ ├── DSC00606.JPG │ ├── DSC00609.JPG │ ├── DSC00610.JPG │ ├── DSC00615.JPG │ ├── DSC00616.JPG │ ├── DSC00617.JPG │ ├── DSC00620.JPG │ ├── DSC00699.JPG │ ├── DSC00705.JPG │ ├── DSC00712.JPG │ ├── DSC00736.JPG │ ├── DSC00738.JPG │ ├── DSC00777.JPG │ ├── DSC00844.JPG │ ├── DSC00851.JPG │ ├── DSC00863.JPG │ ├── IMG_0005.JPG │ ├── IMG_0009.JPG │ ├── IMG_0010.JPG │ ├── IMG_0021.JPG │ ├── IMG_0023.JPG │ ├── IMG_0149.JPG │ ├── IMG_0151.JPG │ ├── IMG_0166.JPG │ ├── IMG_0180.JPG │ ├── IMG_0184.JPG │ ├── IMG_0193.JPG │ ├── IMG_0206.JPG │ ├── IMG_0345.JPG │ ├── IMG_0360.JPG │ ├── IMG_0362.JPG │ ├── IMG_0371.JPG │ ├── IMG_0376.JPG │ ├── IMG_0397.JPG │ ├── IMG_3064.JPG │ ├── IMG_3171.JPG │ ├── IMG_3235.JPG │ ├── IMG_3252.JPG │ ├── IMG_3256.JPG │ └── IMG_3275.JPG ├── ch08 ├── BlurryText │ ├── BlurryText.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── BlurryText │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── BlurryText-Info.plist │ │ ├── BlurryText-Prefix.pch │ │ ├── ViewController.h │ │ ├── ViewController.m │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── MainStoryboard.storyboard │ │ └── main.m │ └── Default-568h@2x.png ├── Drawing │ ├── Default-568h@2x.png │ ├── Drawing.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ │ └── rnapier.pbxuser │ └── Drawing │ │ ├── Drawing-Info.plist │ │ ├── Drawing-Prefix.pch │ │ ├── DrawingAppDelegate.h │ │ ├── DrawingAppDelegate.m │ │ ├── DrawingViewController.h │ │ ├── DrawingViewController.m │ │ ├── MYView.h │ │ ├── MYView.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ └── main.m ├── Graph │ ├── Default-568h@2x.png │ ├── Graph.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── Graph │ │ ├── Graph-Info.plist │ │ ├── Graph-Prefix.pch │ │ ├── GraphAppDelegate.h │ │ ├── GraphAppDelegate.m │ │ ├── GraphView.h │ │ ├── GraphView.m │ │ ├── GraphViewController.h │ │ ├── GraphViewController.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ └── main.m ├── Layer │ ├── Default-568h@2x.png │ ├── Layer.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── Layer │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Layer-Info.plist │ │ ├── Layer-Prefix.pch │ │ ├── ViewController.h │ │ ├── ViewController.m │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── MainStoryboard.storyboard │ │ └── main.m │ ├── LayerView.h │ └── LayerView.m ├── Paths │ ├── Default-568h@2x.png │ ├── FlowerView.h │ ├── FlowerView.m │ ├── Paths.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── Paths │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Paths-Info.plist │ │ ├── Paths-Prefix.pch │ │ ├── ViewController.h │ │ ├── ViewController.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ └── main.m ├── TimeConsuming │ ├── Default-568h@2x.png │ ├── TimeConsuming.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── TimeConsuming │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── TimeConsuming-Info.plist │ │ ├── TimeConsuming-Prefix.pch │ │ ├── ViewController.h │ │ ├── ViewController.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ └── main.m └── Transforms │ ├── Default-568h@2x.png │ ├── Transforms.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── Transforms │ ├── FlowerTransformView.h │ ├── FlowerTransformView.m │ ├── Transforms-Info.plist │ ├── Transforms-Prefix.pch │ ├── TransformsAppDelegate.h │ ├── TransformsAppDelegate.m │ ├── TransformsViewController.h │ ├── TransformsViewController.m │ ├── en.lproj │ ├── InfoPlist.strings │ └── MainStoryboard.storyboard │ └── main.m ├── ch09 ├── Actions │ ├── Actions.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── Actions │ │ ├── Actions-Info.plist │ │ ├── Actions-Prefix.pch │ │ ├── ActionsAppDelegate.h │ │ ├── ActionsAppDelegate.m │ │ ├── ActionsViewController.h │ │ ├── ActionsViewController.m │ │ ├── CircleLayer.h │ │ ├── CircleLayer.m │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── MainStoryboard.storyboard │ │ └── main.m │ └── Default-568h@2x.png ├── Box │ ├── Box.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── Box │ │ ├── Box-Info.plist │ │ ├── Box-Prefix.pch │ │ ├── BoxAppDelegate.h │ │ ├── BoxAppDelegate.m │ │ ├── BoxViewController.h │ │ ├── BoxViewController.m │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── MainStoryboard.storyboard │ │ └── main.m │ └── Default-568h@2x.png ├── BoxTransform │ ├── BoxTransform.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── BoxTransform │ │ ├── BoxTransform-Info.plist │ │ ├── BoxTransform-Prefix.pch │ │ ├── BoxTransformAppDelegate.h │ │ ├── BoxTransformAppDelegate.m │ │ ├── BoxTransformViewController.h │ │ ├── BoxTransformViewController.m │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── MainStoryboard.storyboard │ │ └── main.m │ └── Default-568h@2x.png ├── Decoration │ ├── Decoration.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── Decoration │ │ ├── Decoration-Info.plist │ │ ├── Decoration-Prefix.pch │ │ ├── DecorationAppDelegate.h │ │ ├── DecorationAppDelegate.m │ │ ├── DecorationViewController.h │ │ ├── DecorationViewController.m │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── MainStoryboard.storyboard │ │ └── main.m │ └── Default-568h@2x.png ├── LayerAnimation │ ├── Default-568h@2x.png │ ├── LayerAnimation.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── LayerAnimation │ │ ├── CALayer+RNAnimation.h │ │ ├── CALayer+RNAnimation.m │ │ ├── LayerAnimation-Info.plist │ │ ├── LayerAnimation-Prefix.pch │ │ ├── LayerAnimationAppDelegate.h │ │ ├── LayerAnimationAppDelegate.m │ │ ├── LayerAnimationViewController.h │ │ ├── LayerAnimationViewController.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ └── main.m ├── Layers │ ├── Default-568h@2x.png │ ├── Layers.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── Layers │ │ ├── DelegateView.h │ │ ├── DelegateView.m │ │ ├── Layers-Info.plist │ │ ├── Layers-Prefix.pch │ │ ├── LayersAppDelegate.h │ │ ├── LayersAppDelegate.m │ │ ├── LayersViewController.h │ │ ├── LayersViewController.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ ├── main.m │ │ ├── pushing.png │ │ └── pushing.psd └── ViewAnimation │ ├── Default-568h@2x.png │ ├── ViewAnimation.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── ViewAnimation │ ├── CircleView.h │ ├── CircleView.m │ ├── ViewAnimation-Info.plist │ ├── ViewAnimation-Prefix.pch │ ├── ViewAnimationAppDelegate.h │ ├── ViewAnimationAppDelegate.m │ ├── ViewAnimationViewController.h │ ├── ViewAnimationViewController.m │ ├── en.lproj │ ├── InfoPlist.strings │ └── MainStoryboard.storyboard │ └── main.m ├── ch10 └── RNAssert.h ├── ch11 ├── InfiniteScrollingExample │ ├── Default-568h@2x.png │ ├── iOS6.png │ ├── iOS6InfiniteScrolling.xcodeproj │ │ └── project.pbxproj │ └── iOS6InfiniteScrolling │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── EGORefreshTableHeaderView.h │ │ ├── EGORefreshTableHeaderView.m │ │ ├── MasterViewController.h │ │ ├── MasterViewController.m │ │ ├── PullToRefreshViewController.h │ │ ├── PullToRefreshViewController.m │ │ ├── RefreshArrow.png │ │ ├── RefreshArrow@2x.png │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ ├── iOS6InfiniteScrolling-Info.plist │ │ ├── iOS6InfiniteScrolling-Prefix.pch │ │ └── main.m ├── InlineEditingExample │ ├── Default-568h@2x.png │ ├── InlineEditingExample.xcodeproj │ │ └── project.pbxproj │ └── InlineEditingExample │ │ ├── InlineEditingExample-Info.plist │ │ ├── InlineEditingExample-Prefix.pch │ │ ├── InlineEditingExampleAppDelegate.h │ │ ├── InlineEditingExampleAppDelegate.m │ │ ├── InlineEditingExampleViewController.h │ │ ├── InlineEditingExampleViewController.m │ │ ├── LabelTextFieldCell.h │ │ ├── LabelTextFieldCell.m │ │ ├── LabelTextFieldCell.xib │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ ├── InlineEditingExampleViewController.xib │ │ └── MainWindow.xib │ │ └── main.m ├── MKAccordion │ ├── Default-568h@2x.png │ ├── MKAccordion.xcodeproj │ │ └── project.pbxproj │ └── MKAccordion │ │ ├── MKAccordion-Info.plist │ │ ├── MKAccordion-Prefix.pch │ │ ├── MKAccordionButton.h │ │ ├── MKAccordionButton.m │ │ ├── MKAccordionButton.xib │ │ ├── MKAppDelegate.h │ │ ├── MKAppDelegate.m │ │ ├── MKMasterViewController.h │ │ ├── MKMasterViewController.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ └── main.m ├── MKDrawerDemo │ ├── Default-568h@2x.png │ ├── MKDrawerDemo.xcodeproj │ │ └── project.pbxproj │ └── MKDrawerDemo │ │ ├── MKAppDelegate.h │ │ ├── MKAppDelegate.m │ │ ├── MKControlsCell.h │ │ ├── MKControlsCell.m │ │ ├── MKControlsCell.xib │ │ ├── MKDrawerDemo-Info.plist │ │ ├── MKDrawerDemo-Prefix.pch │ │ ├── MKMasterViewController.h │ │ ├── MKMasterViewController.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ └── main.m └── PullToRefreshExample │ ├── Default-568h@2x.png │ ├── iOS6.png │ ├── iOS6PullToRefresh.xcodeproj │ └── project.pbxproj │ └── iOS6PullToRefresh │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── EGORefreshTableHeaderView.h │ ├── EGORefreshTableHeaderView.m │ ├── MasterViewController.h │ ├── MasterViewController.m │ ├── PullToRefreshViewController.h │ ├── PullToRefreshViewController.m │ ├── RefreshArrow.png │ ├── RefreshArrow@2x.png │ ├── en.lproj │ ├── InfoPlist.strings │ └── MainStoryboard.storyboard │ ├── iOS6PullToRefresh-Info.plist │ ├── iOS6PullToRefresh-Prefix.pch │ └── main.m ├── ch13 ├── FavSpots │ ├── Default-568h@2x.png │ ├── FavSpots.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── FavSpots │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── DetailViewController.h │ │ ├── DetailViewController.m │ │ ├── FavSpots-Info.plist │ │ ├── FavSpots-Prefix.pch │ │ ├── FavSpots.xcdatamodeld │ │ ├── .xccurrentversion │ │ └── FavSpots.xcdatamodel │ │ │ └── contents │ │ ├── MapViewAnnotation.h │ │ ├── MapViewAnnotation.m │ │ ├── MapViewController.h │ │ ├── MapViewController.m │ │ ├── MasterViewController.h │ │ ├── MasterViewController.m │ │ ├── ModelController.h │ │ ├── ModelController.m │ │ ├── NSCoder+FavSpots.h │ │ ├── NSCoder+FavSpots.m │ │ ├── NSCoder+RNMapKit.h │ │ ├── NSCoder+RNMapKit.m │ │ ├── Spot.h │ │ ├── Spot.m │ │ ├── TextEditViewController.h │ │ ├── TextEditViewController.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ └── main.m ├── FavSpotsRestore │ ├── Default-568h@2x.png │ ├── FavSpots.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── FavSpots │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── DetailViewController.h │ │ ├── DetailViewController.m │ │ ├── FavSpots-Info.plist │ │ ├── FavSpots-Prefix.pch │ │ ├── FavSpots.xcdatamodeld │ │ ├── .xccurrentversion │ │ └── FavSpots.xcdatamodel │ │ │ └── contents │ │ ├── MapViewAnnotation.h │ │ ├── MapViewAnnotation.m │ │ ├── MapViewController.h │ │ ├── MapViewController.m │ │ ├── MasterViewController.h │ │ ├── MasterViewController.m │ │ ├── ModelController.h │ │ ├── ModelController.m │ │ ├── NSCoder+FavSpots.h │ │ ├── NSCoder+FavSpots.m │ │ ├── NSCoder+RNMapKit.h │ │ ├── NSCoder+RNMapKit.m │ │ ├── Spot.h │ │ ├── Spot.m │ │ ├── TextEditViewController.h │ │ ├── TextEditViewController.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ └── main.m ├── Julia │ ├── CollectionViewController.h │ ├── CollectionViewController.m │ ├── Julia.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── JuliaCell.h │ ├── JuliaCell.m │ └── Mandel │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── Julia-Info.plist │ │ ├── Julia-Prefix.pch │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ └── main.m ├── JuliaGCD │ ├── CollectionViewController.h │ ├── CollectionViewController.m │ ├── Julia │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── JuliaGCD-Info.plist │ │ ├── JuliaGCD-Prefix.pch │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── MainStoryboard.storyboard │ │ └── main.m │ ├── JuliaCalculation.h │ ├── JuliaCalculation.m │ ├── JuliaCell.h │ ├── JuliaCell.m │ └── JuliaGCD.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── JuliaOp │ ├── CollectionViewController.h │ ├── CollectionViewController.m │ ├── Julia │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── JuliaOp-Info.plist │ │ ├── JuliaOp-Prefix.pch │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── MainStoryboard.storyboard │ │ └── main.m │ ├── JuliaCell.h │ ├── JuliaCell.m │ ├── JuliaOp.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── JuliaOperation.h │ └── JuliaOperation.m ├── SimpleGCD │ ├── Default-568h@2x.png │ ├── SimpleGCD.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── SimpleGCD │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── SimpleGCD-Info.plist │ │ ├── SimpleGCD-Prefix.pch │ │ ├── ViewController.h │ │ ├── ViewController.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ └── main.m └── SimpleOperation │ ├── Default-568h@2x.png │ ├── SimpleOperation.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── SimpleOperation │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── SimpleOperation-Info.plist │ ├── SimpleOperation-Prefix.pch │ ├── ViewController.h │ ├── ViewController.m │ ├── en.lproj │ ├── InfoPlist.strings │ └── MainStoryboard.storyboard │ └── main.m ├── ch14 └── iHotelApp │ ├── Default-568h@2x.png │ ├── MKNetworkKit │ ├── MKNetworkKit-OSX │ │ ├── MKNetworkKit-OSX.xcodeproj │ │ │ └── project.pbxproj │ │ └── MKNetworkKit-OSX │ │ │ └── MKNetworkKit-OSX-Prefix.pch │ ├── MKNetworkKit-iOS │ │ ├── MKNetworkKit-iOS.xcodeproj │ │ │ └── project.pbxproj │ │ └── MKNetworkKit-iOS │ │ │ └── MKNetworkKit-iOS-Prefix.pch │ ├── MKNetworkKit.xcworkspace │ │ └── contents.xcworkspacedata │ ├── MKNetworkKit │ │ ├── Categories │ │ │ ├── NSAlert+MKNetworkKitAdditions.h │ │ │ ├── NSAlert+MKNetworkKitAdditions.m │ │ │ ├── NSData+Base64.h │ │ │ ├── NSData+Base64.m │ │ │ ├── NSDate+RFC1123.h │ │ │ ├── NSDate+RFC1123.m │ │ │ ├── NSDictionary+RequestEncoding.h │ │ │ ├── NSDictionary+RequestEncoding.m │ │ │ ├── NSString+MKNetworkKitAdditions.h │ │ │ ├── NSString+MKNetworkKitAdditions.m │ │ │ ├── UIAlertView+MKNetworkKitAdditions.h │ │ │ └── UIAlertView+MKNetworkKitAdditions.m │ │ ├── MKNetworkEngine.h │ │ ├── MKNetworkEngine.m │ │ ├── MKNetworkKit.h │ │ ├── MKNetworkOperation.h │ │ ├── MKNetworkOperation.m │ │ └── Reachability │ │ │ ├── Reachability.h │ │ │ └── Reachability.m │ ├── Mac-Demo │ │ └── MKNetworkKit-OSX-Demo │ │ │ ├── MKNetworkKit-OSX-Demo.xcodeproj │ │ │ └── project.pbxproj │ │ │ └── MKNetworkKit-OSX-Demo │ │ │ ├── AppDelegate.h │ │ │ ├── AppDelegate.m │ │ │ ├── MKNetworkKit-OSX-Demo-Info.plist │ │ │ ├── MKNetworkKit-OSX-Demo-Prefix.pch │ │ │ ├── en.lproj │ │ │ ├── Credits.rtf │ │ │ ├── InfoPlist.strings │ │ │ └── MainMenu.xib │ │ │ └── main.m │ ├── README.mdown │ ├── SampleImage.jpg │ ├── ServerTests │ │ ├── basic_auth.php │ │ └── digest_auth.php │ └── iOS-Demo │ │ ├── MKNetworkKit-iOS-Demo.xcodeproj │ │ └── project.pbxproj │ │ ├── MKNetworkKitDemo │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── AuthTestEngine.h │ │ ├── AuthTestEngine.m │ │ ├── ExampleDownloader.h │ │ ├── ExampleDownloader.m │ │ ├── ExamplePost.h │ │ ├── ExamplePost.m │ │ ├── ExampleUploader.h │ │ ├── ExampleUploader.m │ │ ├── FlickrCell.h │ │ ├── FlickrCell.m │ │ ├── FlickrEngine.h │ │ ├── FlickrEngine.m │ │ ├── FlickrTableViewController.h │ │ ├── FlickrTableViewController.m │ │ ├── MKNetworkKit-iOS-Demo-Info.plist │ │ ├── MKNetworkKit-iOS-Demo-Prefix.pch │ │ ├── ViewController.h │ │ ├── ViewController.m │ │ ├── YahooEngine.h │ │ ├── YahooEngine.m │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── MainStoryboard.storyboard │ │ └── main.m │ │ └── client.p12 │ ├── iHotelApp.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── iHotelApp │ ├── Errors_en_US.plist │ ├── JSONModel.h │ ├── JSONModel.m │ ├── MenuItem.h │ ├── MenuItem.m │ ├── RESTEngine │ ├── RESTfulEngine.h │ └── RESTfulEngine.m │ ├── RESTError.h │ ├── RESTError.m │ ├── RESTfulOperation.h │ ├── RESTfulOperation.m │ ├── Review.h │ ├── Review.m │ ├── en.lproj │ ├── InfoPlist.strings │ ├── MainWindow.xib │ └── iHotelAppViewController.xib │ ├── iHotelApp-Info.plist │ ├── iHotelApp-Prefix.pch │ ├── iHotelAppAppDelegate.h │ ├── iHotelAppAppDelegate.m │ ├── iHotelAppMenuViewController.h │ ├── iHotelAppMenuViewController.m │ ├── iHotelAppMenuViewController.xib │ ├── iHotelAppViewController.h │ ├── iHotelAppViewController.m │ └── main.m ├── ch15 ├── Connection │ ├── Connection.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── Connection │ │ ├── Connection-Info.plist │ │ ├── Connection-Prefix.pch │ │ ├── ConnectionAppDelegate.h │ │ ├── ConnectionAppDelegate.m │ │ ├── ConnectionViewController.h │ │ ├── ConnectionViewController.m │ │ ├── My Example Server.cer │ │ ├── My Server.cer │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── MainStoryboard.storyboard │ │ └── main.m │ └── Default-568h@2x.png ├── CryptPic │ ├── CryptPic.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── CryptPic │ │ ├── CPAppDelegate.h │ │ ├── CPAppDelegate.m │ │ ├── CPCryptController.h │ │ ├── CPCryptController.m │ │ ├── CPDecryptViewController.h │ │ ├── CPDecryptViewController.m │ │ ├── CPEncyptViewController.h │ │ ├── CPEncyptViewController.m │ │ ├── CPPasswordViewController.h │ │ ├── CPPasswordViewController.m │ │ ├── CryptPic-Info.plist │ │ ├── CryptPic-Prefix.pch │ │ ├── RNCryptManager.h │ │ ├── RNCryptManager.m │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── MainStoryboard.storyboard │ │ ├── first.png │ │ ├── first@2x.png │ │ ├── main.m │ │ ├── second.png │ │ └── second@2x.png │ └── Default-568h@2x.png └── FileExplorer │ ├── Default-568h@2x.png │ ├── FileExplorer.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── FileExplorer │ ├── DirectoryViewController.h │ ├── DirectoryViewController.m │ ├── FileExplorer-Info.plist │ ├── FileExplorer-Prefix.pch │ ├── FileExplorerAppDelegate.h │ ├── FileExplorerAppDelegate.m │ ├── en.lproj │ ├── InfoPlist.strings │ └── MainStoryboard.storyboard │ └── main.m ├── ch16 └── UIDeviceAdditions │ ├── UIDevice+MKAdditions.h │ └── UIDevice+MKAdditions.m ├── ch17 ├── Money │ ├── Money.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── Money │ │ ├── Money-Prefix.pch │ │ ├── Money.1 │ │ ├── RNMoney.h │ │ ├── RNMoney.m │ │ └── main.m └── find_nonlocalized ├── ch18 └── MKStoreKit.zip ├── ch20 └── ZipText │ ├── Default-568h@2x.png │ ├── ZipText.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── ZipText │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Lorem.txt │ ├── ViewController.h │ ├── ViewController.m │ ├── ZipText-Info.plist │ ├── ZipText-Prefix.pch │ ├── ZipTextView.h │ ├── ZipTextView1.m │ ├── ZipTextView2.m │ ├── ZipTextView3.m │ ├── ZipTextView4.m │ ├── ZipTextView5.m │ ├── en.lproj │ ├── InfoPlist.strings │ ├── ViewController_iPad.xib │ └── ViewController_iPhone.xib │ └── main.m ├── ch21 └── StoryboardTransition │ ├── StoryboardTransition.xcodeproj │ └── project.pbxproj │ └── StoryboardTransition │ ├── CustomSegue.h │ ├── CustomSegue.m │ ├── MKAppDelegate.h │ ├── MKAppDelegate.m │ ├── MKDetailViewController.h │ ├── MKDetailViewController.m │ ├── MKMasterViewController.h │ ├── MKMasterViewController.m │ ├── StoryboardTransition-Info.plist │ ├── StoryboardTransition-Prefix.pch │ ├── en.lproj │ ├── InfoPlist.strings │ └── MainStoryboard.storyboard │ └── main.m ├── ch22 ├── KVC-Collection │ ├── DataModel.h │ ├── DataModel.m │ ├── Default-568h@2x.png │ ├── KVC-Collection.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── KVC-Collection │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── KVC-Collection-Info.plist │ │ ├── KVC-Collection-Prefix.pch │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── MainStoryboard.storyboard │ │ └── main.m │ ├── KVCTableViewController.h │ ├── KVCTableViewController.m │ ├── RootViewController.h │ └── RootViewController.m ├── KVC │ ├── Default-568h@2x.png │ ├── KVC.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── KVC │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── KVC-Info.plist │ │ ├── KVC-Prefix.pch │ │ ├── KVCTableViewCell.h │ │ ├── KVCTableViewCell.m │ │ ├── KVCTableViewController.h │ │ ├── KVCTableViewController.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ └── main.m └── KVO │ ├── Default-568h@2x.png │ ├── KVCTableViewCell.h │ ├── KVCTableViewCell.m │ ├── KVCTableViewController.h │ ├── KVCTableViewController.m │ ├── KVO.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── KVO │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── KVO-Info.plist │ ├── KVO-Prefix.pch │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ └── main.m │ ├── RNTimer.h │ └── RNTimer.m ├── ch23 ├── UIAlertViewWithBlocks │ ├── Default-568h@2x.png │ ├── UIAlertViewWithBlocks.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── UIAlertViewWithBlocks │ │ ├── UIAlertView+Blocks.h │ │ ├── UIAlertView+Blocks.m │ │ ├── UIAlertViewWithBlocks-Info.plist │ │ ├── UIAlertViewWithBlocks-Prefix.pch │ │ ├── UIAlertViewWithBlocksAppDelegate.h │ │ ├── UIAlertViewWithBlocksAppDelegate.m │ │ ├── en.lproj │ │ └── InfoPlist.strings │ │ ├── iPhone │ │ └── en.lproj │ │ │ └── MainWindow.xib │ │ └── main.m └── iHotelApp │ ├── Default-568h@2x.png │ ├── MKNetworkKit │ ├── MKNetworkKit-OSX │ │ ├── MKNetworkKit-OSX.xcodeproj │ │ │ └── project.pbxproj │ │ └── MKNetworkKit-OSX │ │ │ └── MKNetworkKit-OSX-Prefix.pch │ ├── MKNetworkKit-iOS │ │ ├── MKNetworkKit-iOS.xcodeproj │ │ │ └── project.pbxproj │ │ └── MKNetworkKit-iOS │ │ │ └── MKNetworkKit-iOS-Prefix.pch │ ├── MKNetworkKit.xcworkspace │ │ └── contents.xcworkspacedata │ ├── MKNetworkKit │ │ ├── Categories │ │ │ ├── NSAlert+MKNetworkKitAdditions.h │ │ │ ├── NSAlert+MKNetworkKitAdditions.m │ │ │ ├── NSData+Base64.h │ │ │ ├── NSData+Base64.m │ │ │ ├── NSDate+RFC1123.h │ │ │ ├── NSDate+RFC1123.m │ │ │ ├── NSDictionary+RequestEncoding.h │ │ │ ├── NSDictionary+RequestEncoding.m │ │ │ ├── NSString+MKNetworkKitAdditions.h │ │ │ ├── NSString+MKNetworkKitAdditions.m │ │ │ ├── UIAlertView+MKNetworkKitAdditions.h │ │ │ └── UIAlertView+MKNetworkKitAdditions.m │ │ ├── MKNetworkEngine.h │ │ ├── MKNetworkEngine.m │ │ ├── MKNetworkKit.h │ │ ├── MKNetworkOperation.h │ │ ├── MKNetworkOperation.m │ │ └── Reachability │ │ │ ├── Reachability.h │ │ │ └── Reachability.m │ ├── Mac-Demo │ │ └── MKNetworkKit-OSX-Demo │ │ │ ├── MKNetworkKit-OSX-Demo.xcodeproj │ │ │ └── project.pbxproj │ │ │ └── MKNetworkKit-OSX-Demo │ │ │ ├── AppDelegate.h │ │ │ ├── AppDelegate.m │ │ │ ├── MKNetworkKit-OSX-Demo-Info.plist │ │ │ ├── MKNetworkKit-OSX-Demo-Prefix.pch │ │ │ ├── en.lproj │ │ │ ├── Credits.rtf │ │ │ ├── InfoPlist.strings │ │ │ └── MainMenu.xib │ │ │ └── main.m │ ├── README.mdown │ ├── SampleImage.jpg │ ├── ServerTests │ │ ├── basic_auth.php │ │ └── digest_auth.php │ └── iOS-Demo │ │ ├── MKNetworkKit-iOS-Demo.xcodeproj │ │ └── project.pbxproj │ │ ├── MKNetworkKitDemo │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── AuthTestEngine.h │ │ ├── AuthTestEngine.m │ │ ├── ExampleDownloader.h │ │ ├── ExampleDownloader.m │ │ ├── ExamplePost.h │ │ ├── ExamplePost.m │ │ ├── ExampleUploader.h │ │ ├── ExampleUploader.m │ │ ├── FlickrCell.h │ │ ├── FlickrCell.m │ │ ├── FlickrEngine.h │ │ ├── FlickrEngine.m │ │ ├── FlickrTableViewController.h │ │ ├── FlickrTableViewController.m │ │ ├── MKNetworkKit-iOS-Demo-Info.plist │ │ ├── MKNetworkKit-iOS-Demo-Prefix.pch │ │ ├── ViewController.h │ │ ├── ViewController.m │ │ ├── YahooEngine.h │ │ ├── YahooEngine.m │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── MainStoryboard.storyboard │ │ └── main.m │ │ └── client.p12 │ ├── iHotelApp.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── iHotelApp │ ├── Errors_en_US.plist │ ├── JSONModel.h │ ├── JSONModel.m │ ├── MenuItem.h │ ├── MenuItem.m │ ├── RESTEngine │ ├── RESTfulEngine.h │ └── RESTfulEngine.m │ ├── RESTError.h │ ├── RESTError.m │ ├── RESTfulOperation.h │ ├── RESTfulOperation.m │ ├── Review.h │ ├── Review.m │ ├── en.lproj │ ├── InfoPlist.strings │ ├── MainWindow.xib │ └── iHotelAppViewController.xib │ ├── iHotelApp-Info.plist │ ├── iHotelApp-Prefix.pch │ ├── iHotelAppAppDelegate.h │ ├── iHotelAppAppDelegate.m │ ├── iHotelAppMenuViewController.h │ ├── iHotelAppMenuViewController.m │ ├── iHotelAppMenuViewController.xib │ ├── iHotelAppViewController.h │ ├── iHotelAppViewController.m │ └── main.m ├── ch24 └── iHotelApp │ ├── Default-568h@2x.png │ ├── MKNetworkKit │ ├── iHotelApp.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── iHotelApp │ ├── AppCache.h │ ├── AppCache.m │ ├── Errors_en_US.plist │ ├── JSONModel.h │ ├── JSONModel.m │ ├── MenuItem.h │ ├── MenuItem.m │ ├── RESTEngine │ ├── RESTfulEngine.h │ └── RESTfulEngine.m │ ├── RESTError.h │ ├── RESTError.m │ ├── RESTfulOperation.h │ ├── RESTfulOperation.m │ ├── Review.h │ ├── Review.m │ ├── en.lproj │ ├── InfoPlist.strings │ ├── MainWindow.xib │ └── iHotelAppViewController.xib │ ├── iHotelApp-Info.plist │ ├── iHotelApp-Prefix.pch │ ├── iHotelAppAppDelegate.h │ ├── iHotelAppAppDelegate.m │ ├── iHotelAppMenuViewController.h │ ├── iHotelAppMenuViewController.m │ ├── iHotelAppMenuViewController.xib │ ├── iHotelAppViewController.h │ ├── iHotelAppViewController.m │ └── main.m ├── ch26 ├── AutoReturn │ ├── AutoReturn.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── AutoReturn │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── AutoReturn-Info.plist │ │ ├── AutoReturn-Prefix.pch │ │ ├── ViewController.h │ │ ├── ViewController.m │ │ ├── en.lproj │ │ │ ├── InfoPlist.strings │ │ │ └── MainStoryboard.storyboard │ │ └── main.m │ └── Default-568h@2x.png ├── CurvyText │ ├── CurvyText.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── CurvyText │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── CurvyText-Info.plist │ │ ├── CurvyText-Prefix.pch │ │ ├── CurvyTextView.h │ │ ├── CurvyTextView.m │ │ ├── ViewController.h │ │ ├── ViewController.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ └── main.m ├── RichText │ ├── RichText.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ └── RichText │ │ ├── AppDelegate.h │ │ ├── AppDelegate.m │ │ ├── RichText-Info.plist │ │ ├── RichText-Prefix.pch │ │ ├── ViewController.h │ │ ├── ViewController.m │ │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── MainStoryboard.storyboard │ │ └── main.m └── SimpleLayout │ ├── CoreTextLabel.h │ ├── CoreTextLabel.m │ ├── Default-568h@2x.png │ ├── SimpleLayout.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── SimpleLayout │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── SimpleLayout-Info.plist │ ├── SimpleLayout-Prefix.pch │ ├── ViewController.h │ ├── ViewController.m │ ├── en.lproj │ ├── InfoPlist.strings │ └── MainStoryboard.storyboard │ └── main.m ├── ch27 └── CoreFoundation │ ├── CoreFoundation.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata │ ├── CoreFoundation │ ├── CoreFoundation-Info.plist │ ├── CoreFoundation-Prefix.pch │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m │ ├── Default-568h@2x.png │ ├── MYStringConversion.c │ └── MYStringConversion.h └── ch28 ├── ISASwizzle ├── Default-568h@2x.png ├── ISASwizzle.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── ISASwizzle │ ├── ISASwizzle-Info.plist │ ├── ISASwizzle-Prefix.pch │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m ├── MYNotificationCenter.h ├── MYNotificationCenter.m ├── NSObject+SetClass.h └── NSObject+SetClass.m ├── MethodSwizzle ├── Default-568h@2x.png ├── MethodSwizzle.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata ├── MethodSwizzle │ ├── MethodSwizzle-Info.plist │ ├── MethodSwizzle-Prefix.pch │ ├── en.lproj │ │ └── InfoPlist.strings │ └── main.m ├── NSNotificationCenter+RNSwizzle.h ├── NSNotificationCenter+RNSwizzle.m ├── RNSwizzle.h └── RNSwizzle.m ├── Person ├── Default-568h@2x.png ├── Person.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ └── contents.xcworkspacedata └── Person │ ├── CacheProxy.h │ ├── CacheProxy.m │ ├── Person-Info.plist │ ├── Person-Prefix.pch │ ├── Person.h │ ├── Person.m │ ├── en.lproj │ └── InfoPlist.strings │ └── main.m └── Runtime ├── Default-568h@2x.png ├── MyMsgSend.c ├── MyMsgSend.h ├── Runtime.xcodeproj ├── project.pbxproj └── project.xcworkspace │ └── contents.xcworkspacedata └── Runtime ├── FastCall.h ├── FastCall.m ├── PrintObjectMethods.h ├── PrintObjectMethods.m ├── Runtime-Info.plist ├── Runtime-Prefix.pch ├── en.lproj └── InfoPlist.strings └── main.m /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | project.xcworkspace 3 | -------------------------------------------------------------------------------- /ch03/AssocRef/AssocRef.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch03/AssocRef/AssocRef/AssocRef-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'AssocRef' target in the 'AssocRef' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch03/AssocRef/AssocRef/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch03/AssocRef/AssocRef/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // AssocRef 4 | // 5 | // Created by Rob Napier on 9/14/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch03/AssocRef/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch03/AssocRef/Default-568h@2x.png -------------------------------------------------------------------------------- /ch04/ObserverTrampoline/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch04/ObserverTrampoline/Default-568h@2x.png -------------------------------------------------------------------------------- /ch04/ObserverTrampoline/ObserverTrampoline.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch04/ObserverTrampoline/ObserverTrampoline/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // ObserverTrampoline 4 | // 5 | // Created by Rob Napier on 9/7/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch04/ObserverTrampoline/ObserverTrampoline/ObserverTrampoline-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'ObserverTrampoline' target in the 'ObserverTrampoline' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch04/ObserverTrampoline/ObserverTrampoline/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // ObserverTrampoline 4 | // 5 | // Created by Rob Napier on 9/7/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class RNObserverManager; 12 | @interface ViewController : UIViewController 13 | @property (nonatomic, strong) id observerManager; 14 | @end 15 | -------------------------------------------------------------------------------- /ch04/ObserverTrampoline/ObserverTrampoline/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch04/ObserverTrampoline/ObserverTrampoline/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // ObserverTrampoline 4 | // 5 | // Created by Rob Napier on 9/7/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch06/NonRepeatingCellsExample/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch06/NonRepeatingCellsExample/Default-568h@2x.png -------------------------------------------------------------------------------- /ch06/NonRepeatingCellsExample/NonRepeatingCellsExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch06/NonRepeatingCellsExample/NonRepeatingCellsExample/BodyCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // BodyCell.h 3 | // NonRepeatingCellsExample 4 | // 5 | // Created by Mugunth Kumar M on 26/8/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface BodyCell : UITableViewCell 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch06/NonRepeatingCellsExample/NonRepeatingCellsExample/BodyCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // BodyCell.m 3 | // NonRepeatingCellsExample 4 | // 5 | // Created by Mugunth Kumar M on 26/8/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "BodyCell.h" 10 | 11 | @implementation BodyCell 12 | 13 | - (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 14 | { 15 | self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 16 | if (self) { 17 | // Initialization code 18 | } 19 | return self; 20 | } 21 | 22 | - (void)setSelected:(BOOL)selected animated:(BOOL)animated 23 | { 24 | [super setSelected:selected animated:animated]; 25 | 26 | // Configure the view for the selected state 27 | } 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /ch06/NonRepeatingCellsExample/NonRepeatingCellsExample/FooterCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // FooterCell.h 3 | // NonRepeatingCellsExample 4 | // 5 | // Created by Mugunth Kumar M on 26/8/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface FooterCell : UITableViewCell 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch06/NonRepeatingCellsExample/NonRepeatingCellsExample/HeaderCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // HeaderCell.h 3 | // NonRepeatingCellsExample 4 | // 5 | // Created by Mugunth Kumar M on 26/8/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface HeaderCell : UITableViewCell 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch06/NonRepeatingCellsExample/NonRepeatingCellsExample/NonRepeatingCellsExample-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'NonRepeatingCellsExample' target in the 'NonRepeatingCellsExample' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch06/NonRepeatingCellsExample/NonRepeatingCellsExample/NonRepeatingCellsExampleAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // NonRepeatingCellsExampleAppDelegate.h 3 | // NonRepeatingCellsExample 4 | // 5 | // Created by Mugunth Kumar M on 23/8/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class NonRepeatingCellsExampleViewController; 12 | 13 | @interface NonRepeatingCellsExampleAppDelegate : NSObject 14 | 15 | @property (nonatomic, strong) IBOutlet UIWindow *window; 16 | 17 | @property (nonatomic, strong) IBOutlet NonRepeatingCellsExampleViewController *viewController; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /ch06/NonRepeatingCellsExample/NonRepeatingCellsExample/NonRepeatingCellsExampleViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // NonRepeatingCellsExampleViewController.h 3 | // NonRepeatingCellsExample 4 | // 5 | // Created by Mugunth Kumar M on 23/8/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "HeaderCell.h" 11 | #import "BodyCell.h" 12 | #import "FooterCell.h" 13 | 14 | @interface NonRepeatingCellsExampleViewController : UIViewController 15 | 16 | @property (nonatomic, strong) IBOutlet UITableView *mainTable; 17 | @property (nonatomic, strong) IBOutlet HeaderCell *headerCell; 18 | @property (nonatomic, strong) IBOutlet BodyCell *bodyCell; 19 | @property (nonatomic, strong) IBOutlet FooterCell *footerCell; 20 | @end 21 | -------------------------------------------------------------------------------- /ch06/NonRepeatingCellsExample/NonRepeatingCellsExample/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch06/NonRepeatingCellsExample/NonRepeatingCellsExample/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // NonRepeatingCellsExample 4 | // 5 | // Created by Mugunth Kumar M on 23/8/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | @autoreleasepool { 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | return retVal; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ch06/TableViewPerformance/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch06/TableViewPerformance/Default-568h@2x.png -------------------------------------------------------------------------------- /ch06/TableViewPerformance/TableViewPerformance.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch06/TableViewPerformance/TableViewPerformance/CustomCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // CustomCell.h 3 | // TableViewPerformance 4 | // 5 | // Created by Mugunth Kumar M on 23/8/11. 6 | // 7 | 8 | #import 9 | 10 | @interface CustomCell : UITableViewCell 11 | 12 | @property (nonatomic, strong) IBOutlet UILabel *titleLabel; 13 | @property (nonatomic, strong) IBOutlet UILabel *subTitleLabel; 14 | @property (nonatomic, strong) IBOutlet UILabel *timeTitleLabel; 15 | @property (nonatomic, strong) IBOutlet UIImageView *thumbnailImage; 16 | @end 17 | -------------------------------------------------------------------------------- /ch06/TableViewPerformance/TableViewPerformance/CustomDrawnCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // CustomDrawnCell.h 3 | // TableViewPerformance 4 | // 5 | // Created by Mugunth Kumar M on 25/8/11. 6 | // 7 | 8 | #import 9 | #import "ABTableViewCell.h" 10 | 11 | @interface CustomDrawnCell : ABTableViewCell { 12 | 13 | NSString *_title; 14 | NSString *_subTitle; 15 | NSString *_timeTitle; 16 | UIImage *_thumbnail; 17 | } 18 | 19 | - (void)setTitle:(NSString*) title subTitle:(NSString*) subTitle time:(NSString*) time thumbnail:(UIImage *)aThumbnail; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /ch06/TableViewPerformance/TableViewPerformance/TableViewPerformance-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'TableViewPerformance' target in the 'TableViewPerformance' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iPhone SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch06/TableViewPerformance/TableViewPerformance/TableViewPerformanceAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // TableViewPerformanceAppDelegate.h 3 | // TableViewPerformance 4 | // 5 | // Created by Mugunth Kumar M on 23/8/11. 6 | // 7 | 8 | #import 9 | 10 | @class TableViewPerformanceViewController; 11 | 12 | @interface TableViewPerformanceAppDelegate : NSObject 13 | 14 | @property (nonatomic, strong) IBOutlet UIWindow *window; 15 | 16 | @property (nonatomic, strong) IBOutlet TableViewPerformanceViewController *viewController; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /ch06/TableViewPerformance/TableViewPerformance/TableViewPerformanceViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TableViewPerformanceViewController.h 3 | // TableViewPerformance 4 | // 5 | // Created by Mugunth Kumar M on 23/8/11. 6 | // 7 | 8 | #import 9 | 10 | @interface TableViewPerformanceViewController : UIViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /ch06/TableViewPerformance/TableViewPerformance/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch06/TableViewPerformance/TableViewPerformance/iOS6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch06/TableViewPerformance/TableViewPerformance/iOS6.png -------------------------------------------------------------------------------- /ch06/TableViewPerformance/TableViewPerformance/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // TableViewPerformance 4 | // 5 | // Created by Mugunth Kumar M on 23/8/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | @autoreleasepool { 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | return retVal; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ch07/AutoLayoutDemo/AutoLayoutDemo/AutoLayoutDemo-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'AutoLayoutDemo' target in the 'AutoLayoutDemo' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch07/AutoLayoutDemo/AutoLayoutDemo/MKAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKAppDelegate.h 3 | // AutoLayoutDemo 4 | // 5 | // Created by Mugunth on 5/9/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch07/AutoLayoutDemo/AutoLayoutDemo/MKViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKViewController.h 3 | // AutoLayoutDemo 4 | // 5 | // Created by Mugunth on 5/9/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch07/AutoLayoutDemo/AutoLayoutDemo/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch07/AutoLayoutDemo/AutoLayoutDemo/ios6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/AutoLayoutDemo/AutoLayoutDemo/ios6.png -------------------------------------------------------------------------------- /ch07/AutoLayoutDemo/AutoLayoutDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // AutoLayoutDemo 4 | // 5 | // Created by Mugunth on 5/9/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "MKAppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([MKAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/CollectionViewDemo/CollectionViewDemo-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'CollectionViewTest' target in the 'CollectionViewTest' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/CollectionViewDemo/MKAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKAppDelegate.h 3 | // CollectionViewTest 4 | // 5 | // Created by Mugunth on 4/9/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/CollectionViewDemo/MKDetailsViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKDetailsViewController.h 3 | // CollectionViewTest 4 | // 5 | // Created by Mugunth on 4/9/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKDetailsViewController : UIViewController 12 | @property (strong, nonatomic) NSString *photoPath; 13 | @end 14 | -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/CollectionViewDemo/MKPhotoCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKFlagsCell.h 3 | // CollectionViewTest 4 | // 5 | // Created by Mugunth on 4/9/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKPhotoCell : UICollectionViewCell 12 | @property (strong, nonatomic) IBOutlet UIImageView *photoView; 13 | @property (strong, nonatomic) IBOutlet UILabel *nameLabel; 14 | @end 15 | -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/CollectionViewDemo/MKPhotoCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKFlagsCell.m 3 | // CollectionViewTest 4 | // 5 | // Created by Mugunth on 4/9/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training. All rights reserved. 7 | // 8 | 9 | #import "MKPhotoCell.h" 10 | #import 11 | 12 | @implementation MKPhotoCell 13 | 14 | -(void) awakeFromNib { 15 | 16 | self.selectedBackgroundView = [[UIView alloc] initWithFrame:self.frame]; 17 | self.selectedBackgroundView.backgroundColor = [UIColor colorWithWhite:0.3 alpha:0.5]; 18 | 19 | self.photoView.layer.borderColor = [[UIColor whiteColor] CGColor]; 20 | self.photoView.layer.borderWidth = 5.0f; 21 | 22 | [super awakeFromNib]; 23 | } 24 | @end 25 | -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/CollectionViewDemo/MKViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKViewController.h 3 | // CollectionViewTest 4 | // 5 | // Created by Mugunth on 4/9/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKViewController : UICollectionViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/CollectionViewDemo/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/CollectionViewDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // CollectionViewTest 4 | // 5 | // Created by Mugunth on 4/9/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "MKAppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([MKAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00003.jpg -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00023.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00023.jpg -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00231.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00231.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00452.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00452.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00592.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00592.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00597.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00597.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00598.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00598.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00601.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00601.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00602.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00602.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00603.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00603.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00606.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00606.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00609.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00609.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00610.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00610.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00615.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00615.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00616.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00616.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00617.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00617.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00620.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00620.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00699.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00699.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00705.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00705.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00712.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00712.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00736.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00736.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00738.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00738.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00777.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00777.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00844.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00844.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00851.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00851.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/DSC00863.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/DSC00863.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0005.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0005.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0009.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0009.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0010.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0010.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0021.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0021.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0023.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0023.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0149.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0149.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0151.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0151.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0166.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0166.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0180.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0180.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0184.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0184.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0193.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0193.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0206.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0206.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0345.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0345.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0360.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0360.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0362.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0362.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0371.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0371.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0376.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0376.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_0397.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_0397.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_3064.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_3064.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_3171.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_3171.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_3235.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_3235.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_3252.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_3252.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_3256.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_3256.JPG -------------------------------------------------------------------------------- /ch07/CollectionViewDemo/Photos/IMG_3275.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch07/CollectionViewDemo/Photos/IMG_3275.JPG -------------------------------------------------------------------------------- /ch08/BlurryText/BlurryText.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch08/BlurryText/BlurryText/BlurryText-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'BlurryText' target in the 'BlurryText' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch08/BlurryText/BlurryText/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch08/BlurryText/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch08/BlurryText/Default-568h@2x.png -------------------------------------------------------------------------------- /ch08/Drawing/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch08/Drawing/Default-568h@2x.png -------------------------------------------------------------------------------- /ch08/Drawing/Drawing.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch08/Drawing/Drawing/Drawing-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Drawing' target in the 'Drawing' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch08/Drawing/Drawing/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch08/Graph/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch08/Graph/Default-568h@2x.png -------------------------------------------------------------------------------- /ch08/Graph/Graph.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch08/Graph/Graph/Graph-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Graph' target in the 'Graph' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch08/Graph/Graph/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch08/Layer/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch08/Layer/Default-568h@2x.png -------------------------------------------------------------------------------- /ch08/Layer/Layer.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch08/Layer/Layer/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Layer 4 | // 5 | // Created by Rob Napier on 9/18/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch08/Layer/Layer/Layer-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Layer' target in the 'Layer' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch08/Layer/Layer/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // Layer 4 | // 5 | // Created by Rob Napier on 9/18/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch08/Layer/Layer/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch08/Layer/Layer/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Layer 4 | // 5 | // Created by Rob Napier on 9/18/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch08/Paths/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch08/Paths/Default-568h@2x.png -------------------------------------------------------------------------------- /ch08/Paths/Paths.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch08/Paths/Paths/Paths-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Paths' target in the 'Paths' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch08/Paths/Paths/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch08/TimeConsuming/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch08/TimeConsuming/Default-568h@2x.png -------------------------------------------------------------------------------- /ch08/TimeConsuming/TimeConsuming.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch08/TimeConsuming/TimeConsuming/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // TimeConsuming 4 | // 5 | // Created by Rob Napier on 6/27/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch08/TimeConsuming/TimeConsuming/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // TimeConsumingAppDelegate.m 3 | // TimeConsuming 4 | // 5 | // Created by Rob Napier on 6/27/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @implementation AppDelegate 12 | 13 | @synthesize window = _window; 14 | 15 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 16 | { 17 | // Override point for customization after application launch. 18 | [self.window makeKeyAndVisible]; 19 | return YES; 20 | } 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /ch08/TimeConsuming/TimeConsuming/TimeConsuming-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'TimeConsuming' target in the 'TimeConsuming' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch08/TimeConsuming/TimeConsuming/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch08/TimeConsuming/TimeConsuming/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // TimeConsuming 4 | // 5 | // Created by Rob Napier on 9/17/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch08/Transforms/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch08/Transforms/Default-568h@2x.png -------------------------------------------------------------------------------- /ch08/Transforms/Transforms.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch08/Transforms/Transforms/Transforms-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Transforms' target in the 'Transforms' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch08/Transforms/Transforms/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch09/Actions/Actions.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch09/Actions/Actions/Actions-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Actions' target in the 'Actions' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch09/Actions/Actions/ActionsAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ActionsAppDelegate.h 3 | // Actions 4 | // 5 | // Created by Rob Napier on 7/17/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ActionsAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch09/Actions/Actions/ActionsViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ActionsViewController.h 3 | // Actions 4 | // 5 | // Created by Rob Napier on 7/17/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ActionsViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch09/Actions/Actions/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch09/Actions/Actions/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Actions 4 | // 5 | // Created by Rob Napier on 7/17/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "ActionsAppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([ActionsAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch09/Actions/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch09/Actions/Default-568h@2x.png -------------------------------------------------------------------------------- /ch09/Box/Box.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch09/Box/Box/Box-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Box' target in the 'Box' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch09/Box/Box/BoxAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // BoxAppDelegate.h 3 | // Box 4 | // 5 | // Created by Rob Napier on 7/19/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface BoxAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch09/Box/Box/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch09/Box/Box/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Box 4 | // 5 | // Created by Rob Napier on 7/19/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "BoxAppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([BoxAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch09/Box/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch09/Box/Default-568h@2x.png -------------------------------------------------------------------------------- /ch09/BoxTransform/BoxTransform.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch09/BoxTransform/BoxTransform/BoxTransform-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'BoxTransform' target in the 'BoxTransform' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch09/BoxTransform/BoxTransform/BoxTransformAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // BoxTransformAppDelegate.h 3 | // BoxTransform 4 | // 5 | // Created by Rob Napier on 7/20/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface BoxTransformAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch09/BoxTransform/BoxTransform/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch09/BoxTransform/BoxTransform/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // BoxTransform 4 | // 5 | // Created by Rob Napier on 7/20/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "BoxTransformAppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([BoxTransformAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch09/BoxTransform/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch09/BoxTransform/Default-568h@2x.png -------------------------------------------------------------------------------- /ch09/Decoration/Decoration.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch09/Decoration/Decoration/Decoration-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Decoration' target in the 'Decoration' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch09/Decoration/Decoration/DecorationAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // DecorationAppDelegate.h 3 | // Decoration 4 | // 5 | // Created by Rob Napier on 7/20/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DecorationAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch09/Decoration/Decoration/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch09/Decoration/Decoration/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Decoration 4 | // 5 | // Created by Rob Napier on 7/20/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "DecorationAppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([DecorationAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch09/Decoration/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch09/Decoration/Default-568h@2x.png -------------------------------------------------------------------------------- /ch09/LayerAnimation/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch09/LayerAnimation/Default-568h@2x.png -------------------------------------------------------------------------------- /ch09/LayerAnimation/LayerAnimation.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch09/LayerAnimation/LayerAnimation/LayerAnimation-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'LayerAnimation' target in the 'LayerAnimation' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch09/LayerAnimation/LayerAnimation/LayerAnimationAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // LayerAnimationAppDelegate.h 3 | // LayerAnimation 4 | // 5 | // Created by Rob Napier on 7/17/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LayerAnimationAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch09/LayerAnimation/LayerAnimation/LayerAnimationViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LayerAnimationViewController.h 3 | // LayerAnimation 4 | // 5 | // Created by Rob Napier on 7/17/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LayerAnimationViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch09/LayerAnimation/LayerAnimation/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch09/LayerAnimation/LayerAnimation/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // LayerAnimation 4 | // 5 | // Created by Rob Napier on 7/17/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "LayerAnimationAppDelegate.h" 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([LayerAnimationAppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ch09/Layers/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch09/Layers/Default-568h@2x.png -------------------------------------------------------------------------------- /ch09/Layers/Layers.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch09/Layers/Layers/Layers-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Layers' target in the 'Layers' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch09/Layers/Layers/LayersAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // LayersAppDelegate.h 3 | // Layers 4 | // 5 | // Created by Rob Napier on 7/16/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface LayersAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch09/Layers/Layers/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch09/Layers/Layers/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Layers 4 | // 5 | // Created by Rob Napier on 7/16/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "LayersAppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([LayersAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch09/Layers/Layers/pushing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch09/Layers/Layers/pushing.png -------------------------------------------------------------------------------- /ch09/Layers/Layers/pushing.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch09/Layers/Layers/pushing.psd -------------------------------------------------------------------------------- /ch09/ViewAnimation/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch09/ViewAnimation/Default-568h@2x.png -------------------------------------------------------------------------------- /ch09/ViewAnimation/ViewAnimation.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch09/ViewAnimation/ViewAnimation/CircleView.h: -------------------------------------------------------------------------------- 1 | // 2 | // CircleView.h 3 | // ViewAnimation 4 | // 5 | // Created by Rob Napier on 7/13/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CircleView : UIView 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch09/ViewAnimation/ViewAnimation/CircleView.m: -------------------------------------------------------------------------------- 1 | // 2 | // CircleView.m 3 | // ViewAnimation 4 | // 5 | 6 | #import "CircleView.h" 7 | 8 | @implementation CircleView 9 | 10 | - (id)initWithFrame:(CGRect)frame { 11 | self = [super initWithFrame:frame]; 12 | if (self) { 13 | self.opaque = NO; 14 | } 15 | return self; 16 | } 17 | 18 | - (void)drawRect:(CGRect)rect { 19 | [[UIColor redColor] setFill]; 20 | [[UIBezierPath bezierPathWithOvalInRect:self.bounds] fill]; 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /ch09/ViewAnimation/ViewAnimation/ViewAnimation-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'ViewAnimation' target in the 'ViewAnimation' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch09/ViewAnimation/ViewAnimation/ViewAnimationAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewAnimationAppDelegate.h 3 | // ViewAnimation 4 | // 5 | // Created by Rob Napier on 7/13/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewAnimationAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch09/ViewAnimation/ViewAnimation/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch09/ViewAnimation/ViewAnimation/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // ViewAnimation 4 | // 5 | // Created by Rob Napier on 7/13/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "ViewAnimationAppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([ViewAnimationAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch11/InfiniteScrollingExample/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch11/InfiniteScrollingExample/Default-568h@2x.png -------------------------------------------------------------------------------- /ch11/InfiniteScrollingExample/iOS6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch11/InfiniteScrollingExample/iOS6.png -------------------------------------------------------------------------------- /ch11/InfiniteScrollingExample/iOS6InfiniteScrolling/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // iOS6PullToRefresh 4 | // 5 | // Created by Mugunth on 9/7/12. 6 | // Copyright (c) 2012 Mugunth. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch11/InfiniteScrollingExample/iOS6InfiniteScrolling/MasterViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MasterViewController.h 3 | // iOS6PullToRefresh 4 | // 5 | // Created by Mugunth on 9/7/12. 6 | // Copyright (c) 2012 Mugunth. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "PullToRefreshViewController.h" 12 | 13 | @interface MasterViewController : PullToRefreshViewController 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch11/InfiniteScrollingExample/iOS6InfiniteScrolling/RefreshArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch11/InfiniteScrollingExample/iOS6InfiniteScrolling/RefreshArrow.png -------------------------------------------------------------------------------- /ch11/InfiniteScrollingExample/iOS6InfiniteScrolling/RefreshArrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch11/InfiniteScrollingExample/iOS6InfiniteScrolling/RefreshArrow@2x.png -------------------------------------------------------------------------------- /ch11/InfiniteScrollingExample/iOS6InfiniteScrolling/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch11/InfiniteScrollingExample/iOS6InfiniteScrolling/iOS6InfiniteScrolling-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'iOS6PullToRefresh' target in the 'iOS6PullToRefresh' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch11/InfiniteScrollingExample/iOS6InfiniteScrolling/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // iOS6PullToRefresh 4 | // 5 | // Created by Mugunth on 9/7/12. 6 | // Copyright (c) 2012 Mugunth. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch11/InlineEditingExample/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch11/InlineEditingExample/Default-568h@2x.png -------------------------------------------------------------------------------- /ch11/InlineEditingExample/InlineEditingExample/InlineEditingExample-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'InlineEditingExample' target in the 'InlineEditingExample' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch11/InlineEditingExample/InlineEditingExample/InlineEditingExampleAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // InlineEditingExampleAppDelegate.h 3 | // InlineEditingExample 4 | // 5 | // Created by Mugunth Kumar M on 30/8/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class InlineEditingExampleViewController; 12 | 13 | @interface InlineEditingExampleAppDelegate : NSObject 14 | 15 | @property (nonatomic, strong) IBOutlet UIWindow *window; 16 | 17 | @property (nonatomic, strong) IBOutlet InlineEditingExampleViewController *viewController; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /ch11/InlineEditingExample/InlineEditingExample/InlineEditingExampleViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // InlineEditingExampleViewController.h 3 | // InlineEditingExample 4 | // 5 | // Created by Mugunth Kumar M on 30/8/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface InlineEditingExampleViewController : UITableViewController 12 | 13 | @property (nonatomic, strong) NSMutableArray *data; 14 | @end 15 | -------------------------------------------------------------------------------- /ch11/InlineEditingExample/InlineEditingExample/LabelTextFieldCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // LabelTextFieldCell.h 3 | // InlinteEditingExample 4 | // 5 | // Created by Mugunth Kumar on 20-Jun-10. 6 | // Copyright 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface LabelTextFieldCell : UITableViewCell 13 | 14 | @property (nonatomic, strong) IBOutlet UILabel *labelText; 15 | @property (nonatomic, strong) IBOutlet UITextField *inputText; 16 | @property (nonatomic, copy) void (^onTextEntered)(NSString *enteredText); 17 | 18 | -(IBAction)textEditingDidEnd:(id)sender; 19 | @end 20 | -------------------------------------------------------------------------------- /ch11/InlineEditingExample/InlineEditingExample/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch11/InlineEditingExample/InlineEditingExample/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // InlineEditingExample 4 | // 5 | // Created by Mugunth Kumar M on 30/8/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | @autoreleasepool { 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | return retVal; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ch11/MKAccordion/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch11/MKAccordion/Default-568h@2x.png -------------------------------------------------------------------------------- /ch11/MKAccordion/MKAccordion/MKAccordion-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'MKAccordion' target in the 'MKAccordion' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #import 15 | #endif 16 | -------------------------------------------------------------------------------- /ch11/MKAccordion/MKAccordion/MKAccordionButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKAccordionButton.h 3 | // MKAccordion 4 | // 5 | // Created by Mugunth on 24/7/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training Pte Ltd. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKAccordionButton : UIView 12 | @property (nonatomic, weak) IBOutlet UIButton *mainButton; 13 | @property (nonatomic, copy) void (^buttonTappedHandler)(); 14 | @end 15 | -------------------------------------------------------------------------------- /ch11/MKAccordion/MKAccordion/MKAccordionButton.m: -------------------------------------------------------------------------------- 1 | // 2 | // MKAccordionButton.m 3 | // MKAccordion 4 | // 5 | // Created by Mugunth on 24/7/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training Pte Ltd. All rights reserved. 7 | // 8 | 9 | #import "MKAccordionButton.h" 10 | 11 | @implementation MKAccordionButton 12 | 13 | -(void) awakeFromNib { 14 | 15 | self.layer.borderColor = [UIColor colorWithWhite:0.6 alpha:0.6].CGColor; 16 | self.layer.borderWidth = 1.0f; 17 | [super awakeFromNib]; 18 | } 19 | -(IBAction)buttonTapped:(id)sender { 20 | 21 | if(self.buttonTappedHandler) 22 | self.buttonTappedHandler(); 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /ch11/MKAccordion/MKAccordion/MKAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKAppDelegate.h 3 | // MKAccordion 4 | // 5 | // Created by Mugunth on 24/7/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training Pte Ltd. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch11/MKAccordion/MKAccordion/MKMasterViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKMasterViewController.h 3 | // MKAccordion 4 | // 5 | // Created by Mugunth on 24/7/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training Pte Ltd. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKMasterViewController : UITableViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch11/MKAccordion/MKAccordion/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch11/MKAccordion/MKAccordion/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // MKAccordion 4 | // 5 | // Created by Mugunth on 24/7/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training Pte Ltd. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "MKAppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([MKAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch11/MKDrawerDemo/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch11/MKDrawerDemo/Default-568h@2x.png -------------------------------------------------------------------------------- /ch11/MKDrawerDemo/MKDrawerDemo/MKAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKAppDelegate.h 3 | // MKDrawerDemo 4 | // 5 | // Created by Mugunth on 25/7/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training Pte Ltd. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch11/MKDrawerDemo/MKDrawerDemo/MKControlsCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKControlsCell.h 3 | // MKDrawerDemo 4 | // 5 | // Created by Mugunth on 25/7/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training Pte Ltd. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKControlsCell : UITableViewCell 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch11/MKDrawerDemo/MKDrawerDemo/MKDrawerDemo-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'MKDrawerDemo' target in the 'MKDrawerDemo' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch11/MKDrawerDemo/MKDrawerDemo/MKMasterViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKMasterViewController.h 3 | // MKDrawerDemo 4 | // 5 | // Created by Mugunth on 25/7/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training Pte Ltd. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKMasterViewController : UITableViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch11/MKDrawerDemo/MKDrawerDemo/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch11/MKDrawerDemo/MKDrawerDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // MKDrawerDemo 4 | // 5 | // Created by Mugunth on 25/7/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training Pte Ltd. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "MKAppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([MKAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch11/PullToRefreshExample/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch11/PullToRefreshExample/Default-568h@2x.png -------------------------------------------------------------------------------- /ch11/PullToRefreshExample/iOS6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch11/PullToRefreshExample/iOS6.png -------------------------------------------------------------------------------- /ch11/PullToRefreshExample/iOS6PullToRefresh/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // iOS6PullToRefresh 4 | // 5 | // Created by Mugunth on 9/7/12. 6 | // Copyright (c) 2012 Mugunth. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch11/PullToRefreshExample/iOS6PullToRefresh/MasterViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MasterViewController.h 3 | // iOS6PullToRefresh 4 | // 5 | // Created by Mugunth on 9/7/12. 6 | // Copyright (c) 2012 Mugunth. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "PullToRefreshViewController.h" 12 | 13 | @interface MasterViewController : PullToRefreshViewController 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch11/PullToRefreshExample/iOS6PullToRefresh/RefreshArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch11/PullToRefreshExample/iOS6PullToRefresh/RefreshArrow.png -------------------------------------------------------------------------------- /ch11/PullToRefreshExample/iOS6PullToRefresh/RefreshArrow@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch11/PullToRefreshExample/iOS6PullToRefresh/RefreshArrow@2x.png -------------------------------------------------------------------------------- /ch11/PullToRefreshExample/iOS6PullToRefresh/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch11/PullToRefreshExample/iOS6PullToRefresh/iOS6PullToRefresh-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'iOS6PullToRefresh' target in the 'iOS6PullToRefresh' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch11/PullToRefreshExample/iOS6PullToRefresh/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // iOS6PullToRefresh 4 | // 5 | // Created by Mugunth on 9/7/12. 6 | // Copyright (c) 2012 Mugunth. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch13/FavSpots/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch13/FavSpots/Default-568h@2x.png -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots/DetailViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DetailViewController.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "Spot.h" 12 | 13 | @interface DetailViewController : UIViewController 14 | 15 | @property (strong, nonatomic) Spot *spot; 16 | 17 | @property (weak, nonatomic) IBOutlet UITextField *nameTextField; 18 | @property (weak, nonatomic) IBOutlet UILabel *locationLabel; 19 | @property (weak, nonatomic) IBOutlet UITextView *noteTextView; 20 | @property (weak, nonatomic) IBOutlet MKMapView *mapView; 21 | @end 22 | -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots/FavSpots-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'FavSpots' target in the 'FavSpots' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #import 15 | #endif 16 | -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots/FavSpots.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | _XCCurrentVersionName 6 | FavSpots.xcdatamodel 7 | 8 | 9 | -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots/MapViewAnnotation.h: -------------------------------------------------------------------------------- 1 | // 2 | // MapViewAnnotation.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @class Spot; 13 | 14 | @interface MapViewAnnotation : NSObject 15 | @property (nonatomic, readonly, weak) Spot *spot; 16 | @property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 17 | 18 | - (MapViewAnnotation *)initWithSpot:(Spot *)spot; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots/MapViewAnnotation.m: -------------------------------------------------------------------------------- 1 | // 2 | // MapViewAnnotation.m 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import "MapViewAnnotation.h" 10 | #import "Spot.h" 11 | 12 | @implementation MapViewAnnotation 13 | 14 | //+ (NSSet *)keyPathsForValuesAffectingCoordinate { 15 | // return [NSSet setWithArray:@[ @"spot.latitude", @"spot.longitude" ]]; 16 | //} 17 | 18 | - (MapViewAnnotation *)initWithSpot:(Spot *)spot 19 | { 20 | self = [super init]; 21 | if (self) { 22 | _spot = spot; 23 | } 24 | return self; 25 | } 26 | 27 | - (CLLocationCoordinate2D)coordinate { 28 | return CLLocationCoordinate2DMake(self.spot.latitude, self.spot.longitude); 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots/MapViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MapViewController.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MapViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots/MasterViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MasterViewController.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import 12 | 13 | @interface MasterViewController : UITableViewController 14 | 15 | @property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots/ModelController.h: -------------------------------------------------------------------------------- 1 | // 2 | // Model.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ModelController : NSObject 12 | @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; 13 | 14 | - (void)saveContext; 15 | 16 | + (ModelController *)sharedController; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots/NSCoder+FavSpots.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSCoder+FavSpots.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "NSCoder+RNMapKit.h" 11 | 12 | @class Spot; 13 | 14 | @interface NSCoder (FavSpots) 15 | - (void)RN_encodeSpot:(Spot *)spot forKey:(NSString *)key; 16 | - (Spot *)RN_decodeSpotForKey:(NSString *)key; 17 | @end 18 | -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots/NSCoder+RNMapKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSCoder+RNMapKit.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface NSCoder (RNMapKit) 13 | - (void)RN_encodeMKCoordinateRegion:(MKCoordinateRegion)region 14 | forKey:(NSString *)key; 15 | - (MKCoordinateRegion)RN_decodeMKCoordinateRegionForKey:(NSString *)key; 16 | @end 17 | -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots/Spot.h: -------------------------------------------------------------------------------- 1 | // 2 | // Location.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | 13 | @interface Spot : NSManagedObject 14 | 15 | @property (nonatomic) float latitude; 16 | @property (nonatomic) float longitude; 17 | @property (nonatomic, retain) NSString * name; 18 | @property (nonatomic, retain) NSString * notes; 19 | 20 | + (Spot *)insertNewSpotWithCoordinate:(CLLocationCoordinate2D)coordinate inManagedObjectContext:(NSManagedObjectContext *)context; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots/TextEditViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TextEditViewController.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class Spot; 12 | 13 | @interface TextEditViewController : UIViewController 14 | @property (strong, nonatomic) Spot *spot; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch13/FavSpots/FavSpots/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch13/FavSpotsRestore/Default-568h@2x.png -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots/DetailViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DetailViewController.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "Spot.h" 12 | 13 | @interface DetailViewController : UIViewController 14 | 15 | @property (strong, nonatomic) Spot *spot; 16 | 17 | @property (weak, nonatomic) IBOutlet UITextField *nameTextField; 18 | @property (weak, nonatomic) IBOutlet UILabel *locationLabel; 19 | @property (weak, nonatomic) IBOutlet UITextView *noteTextView; 20 | @property (weak, nonatomic) IBOutlet MKMapView *mapView; 21 | @end 22 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots/FavSpots-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'FavSpots' target in the 'FavSpots' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #import 15 | #endif 16 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots/FavSpots.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | _XCCurrentVersionName 6 | FavSpots.xcdatamodel 7 | 8 | 9 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots/MapViewAnnotation.h: -------------------------------------------------------------------------------- 1 | // 2 | // MapViewAnnotation.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @class Spot; 13 | 14 | @interface MapViewAnnotation : NSObject 15 | @property (nonatomic, readonly, weak) Spot *spot; 16 | @property (nonatomic, readonly) CLLocationCoordinate2D coordinate; 17 | 18 | - (MapViewAnnotation *)initWithSpot:(Spot *)spot; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots/MapViewAnnotation.m: -------------------------------------------------------------------------------- 1 | // 2 | // MapViewAnnotation.m 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import "MapViewAnnotation.h" 10 | #import "Spot.h" 11 | 12 | @implementation MapViewAnnotation 13 | 14 | //+ (NSSet *)keyPathsForValuesAffectingCoordinate { 15 | // return [NSSet setWithArray:@[ @"spot.latitude", @"spot.longitude" ]]; 16 | //} 17 | 18 | - (MapViewAnnotation *)initWithSpot:(Spot *)spot 19 | { 20 | self = [super init]; 21 | if (self) { 22 | _spot = spot; 23 | } 24 | return self; 25 | } 26 | 27 | - (CLLocationCoordinate2D)coordinate { 28 | return CLLocationCoordinate2DMake(self.spot.latitude, self.spot.longitude); 29 | } 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots/MapViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MapViewController.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MapViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots/MasterViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MasterViewController.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import 12 | 13 | @interface MasterViewController : UITableViewController 14 | 15 | @property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots/ModelController.h: -------------------------------------------------------------------------------- 1 | // 2 | // Model.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ModelController : NSObject 12 | @property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; 13 | 14 | - (void)saveContext; 15 | 16 | + (ModelController *)sharedController; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots/NSCoder+FavSpots.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSCoder+FavSpots.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "NSCoder+RNMapKit.h" 11 | 12 | @class Spot; 13 | 14 | @interface NSCoder (FavSpots) 15 | - (void)RN_encodeSpot:(Spot *)spot forKey:(NSString *)key; 16 | - (Spot *)RN_decodeSpotForKey:(NSString *)key; 17 | @end 18 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots/NSCoder+RNMapKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSCoder+RNMapKit.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface NSCoder (RNMapKit) 13 | - (void)RN_encodeMKCoordinateRegion:(MKCoordinateRegion)region 14 | forKey:(NSString *)key; 15 | - (MKCoordinateRegion)RN_decodeMKCoordinateRegionForKey:(NSString *)key; 16 | @end 17 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots/Spot.h: -------------------------------------------------------------------------------- 1 | // 2 | // Location.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | 13 | @interface Spot : NSManagedObject 14 | 15 | @property (nonatomic) float latitude; 16 | @property (nonatomic) float longitude; 17 | @property (nonatomic, retain) NSString * name; 18 | @property (nonatomic, retain) NSString * notes; 19 | 20 | + (Spot *)insertNewSpotWithCoordinate:(CLLocationCoordinate2D)coordinate inManagedObjectContext:(NSManagedObjectContext *)context; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots/TextEditViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // TextEditViewController.h 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class Spot; 12 | 13 | @interface TextEditViewController : UIViewController 14 | @property (strong, nonatomic) Spot *spot; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch13/FavSpotsRestore/FavSpots/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // FavSpots 4 | // 5 | // Created by Rob Napier on 8/11/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch13/Julia/CollectionViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CollectionViewController.h 3 | // Mandel 4 | // 5 | // Created by Rob Napier on 8/6/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CollectionViewController : UICollectionViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch13/Julia/Julia.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch13/Julia/JuliaCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // MadelCell.h 3 | // Mandel 4 | // 5 | // Created by Rob Napier on 8/6/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface JuliaCell : UICollectionViewCell 12 | - (void)configureWithSeed:(NSUInteger)seed; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /ch13/Julia/Mandel/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Mandel 4 | // 5 | // Created by Rob Napier on 8/6/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch13/Julia/Mandel/Julia-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Mandel' target in the 'Mandel' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch13/Julia/Mandel/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch13/Julia/Mandel/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Mandel 4 | // 5 | // Created by Rob Napier on 8/6/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch13/JuliaGCD/CollectionViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CollectionViewController.h 3 | // Mandel 4 | // 5 | // Created by Rob Napier on 8/6/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CollectionViewController : UICollectionViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch13/JuliaGCD/Julia/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Mandel 4 | // 5 | // Created by Rob Napier on 8/6/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch13/JuliaGCD/Julia/JuliaGCD-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Mandel' target in the 'Mandel' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch13/JuliaGCD/Julia/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch13/JuliaGCD/Julia/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Mandel 4 | // 5 | // Created by Rob Napier on 8/6/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch13/JuliaGCD/JuliaCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // MadelCell.h 3 | // Mandel 4 | // 5 | // Created by Rob Napier on 8/6/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface JuliaCell : UICollectionViewCell 12 | - (void)configureWithSeed:(NSUInteger)seed; // queue:(NSOperationQueue *)queue; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /ch13/JuliaGCD/JuliaGCD.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch13/JuliaOp/CollectionViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CollectionViewController.h 3 | // Mandel 4 | // 5 | // Created by Rob Napier on 8/6/12. 6 | // 7 | 8 | #import 9 | 10 | @interface CollectionViewController : UICollectionViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /ch13/JuliaOp/Julia/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Mandel 4 | // 5 | // Created by Rob Napier on 8/6/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch13/JuliaOp/Julia/JuliaOp-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Mandel' target in the 'Mandel' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch13/JuliaOp/Julia/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch13/JuliaOp/Julia/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Mandel 4 | // 5 | // Created by Rob Napier on 8/6/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch13/JuliaOp/JuliaCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // MadelCell.h 3 | // Mandel 4 | // 5 | // Created by Rob Napier on 8/6/12. 6 | // 7 | 8 | #import 9 | 10 | @interface JuliaCell : UICollectionViewCell 11 | - (void)configureWithSeed:(NSUInteger)seed 12 | queue:(NSOperationQueue *)queue 13 | scales:(NSArray *)scales; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch13/JuliaOp/JuliaOp.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch13/SimpleGCD/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch13/SimpleGCD/Default-568h@2x.png -------------------------------------------------------------------------------- /ch13/SimpleGCD/SimpleGCD.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch13/SimpleGCD/SimpleGCD/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // SimpleGCD 4 | // 5 | // Created by Rob Napier on 8/15/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch13/SimpleGCD/SimpleGCD/SimpleGCD-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'SimpleGCD' target in the 'SimpleGCD' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch13/SimpleGCD/SimpleGCD/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // SimpleGCD 4 | // 5 | // Created by Rob Napier on 8/15/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch13/SimpleGCD/SimpleGCD/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch13/SimpleGCD/SimpleGCD/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // SimpleGCD 4 | // 5 | // Created by Rob Napier on 8/15/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch13/SimpleOperation/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch13/SimpleOperation/Default-568h@2x.png -------------------------------------------------------------------------------- /ch13/SimpleOperation/SimpleOperation.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch13/SimpleOperation/SimpleOperation/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // SimpleOperation 4 | // 5 | // Created by Rob Napier on 8/15/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch13/SimpleOperation/SimpleOperation/SimpleOperation-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'SimpleOperation' target in the 'SimpleOperation' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch13/SimpleOperation/SimpleOperation/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // SimpleOperation 4 | // 5 | // Created by Rob Napier on 8/15/11. 6 | // 7 | 8 | #import 9 | 10 | @interface ViewController : UIViewController 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /ch13/SimpleOperation/SimpleOperation/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch13/SimpleOperation/SimpleOperation/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // SimpleOperation 4 | // 5 | // Created by Rob Napier on 8/15/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch14/iHotelApp/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch14/iHotelApp/Default-568h@2x.png -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/MKNetworkKit-OSX/MKNetworkKit-OSX/MKNetworkKit-OSX-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'MKNetworkKit-OSX' target in the 'MKNetworkKit-OSX' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #import "MKNetworkKit.h" 8 | #endif 9 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/MKNetworkKit-iOS/MKNetworkKit-iOS/MKNetworkKit-iOS-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'MKNetworkKit-iOS' target in the 'MKNetworkKit-iOS' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #import "MKNetworkKit.h" 8 | #endif 9 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/MKNetworkKit.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 12 | 13 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/MKNetworkKit/Categories/NSDate+RFC1123.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDate+RFC1123.h 3 | // MKNetworkKit 4 | // 5 | // Created by Marcus Rohrmoser 6 | // http://blog.mro.name/2009/08/nsdateformatter-http-header/ 7 | // http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1 8 | 9 | // No obvious license attached 10 | 11 | @interface NSDate (RFC1123) 12 | /** 13 | Convert a RFC1123 'Full-Date' string 14 | (http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1) 15 | into NSDate. 16 | */ 17 | +(NSDate*)dateFromRFC1123:(NSString*)value_; 18 | 19 | /** 20 | Convert NSDate into a RFC1123 'Full-Date' string 21 | (http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1). 22 | */ 23 | -(NSString*)rfc1123String; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/Mac-Demo/MKNetworkKit-OSX-Demo/MKNetworkKit-OSX-Demo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // MKNetworkKit-OSX-Demo 4 | // 5 | // Created by Mugunth Kumar on 7/12/11. 6 | // Copyright (c) 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : NSObject 12 | 13 | @property (assign) IBOutlet NSWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/Mac-Demo/MKNetworkKit-OSX-Demo/MKNetworkKit-OSX-Demo/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // MKNetworkKit-OSX-Demo 4 | // 5 | // Created by Mugunth Kumar on 7/12/11. 6 | // Copyright (c) 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @implementation AppDelegate 12 | 13 | @synthesize window = _window; 14 | 15 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 16 | { 17 | // Insert code here to initialize your application 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/Mac-Demo/MKNetworkKit-OSX-Demo/MKNetworkKit-OSX-Demo/MKNetworkKit-OSX-Demo-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'MKNetworkKit-OSX-Demo' target in the 'MKNetworkKit-OSX-Demo' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/Mac-Demo/MKNetworkKit-OSX-Demo/MKNetworkKit-OSX-Demo/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/Mac-Demo/MKNetworkKit-OSX-Demo/MKNetworkKit-OSX-Demo/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/Mac-Demo/MKNetworkKit-OSX-Demo/MKNetworkKit-OSX-Demo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // MKNetworkKit-OSX-Demo 4 | // 5 | // Created by Mugunth Kumar on 7/12/11. 6 | // Copyright (c) 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | return NSApplicationMain(argc, (const char **)argv); 14 | } 15 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/SampleImage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch14/iHotelApp/MKNetworkKit/SampleImage.jpg -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/ServerTests/basic_auth.php: -------------------------------------------------------------------------------- 1 | Hello {$_SERVER['PHP_AUTH_USER']}.

"; 11 | echo "

You entered {$_SERVER['PHP_AUTH_PW']} as your password.

"; 12 | } 13 | else 14 | { 15 | echo "

Sorry, invalid crednetials

"; 16 | } 17 | } 18 | ?> -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/iOS-Demo/MKNetworkKitDemo/AuthTestEngine.h: -------------------------------------------------------------------------------- 1 | // 2 | // AuthTestEngine.h 3 | // MKNetworkKit-iOS-Demo 4 | // 5 | // Created by Mugunth Kumar on 4/12/11. 6 | // Copyright (c) 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | @interface AuthTestEngine : MKNetworkEngine 10 | 11 | -(void) basicAuthTest; 12 | -(void) digestAuthTest; 13 | -(void)digestAuthTestWithUser:(NSString*)username password:(NSString*)password; 14 | -(void) clientCertTest; 15 | -(int) cacheMemoryCost; 16 | 17 | -(MKNetworkOperation*) uploadImageFromFile:(NSString*) file 18 | onCompletion:(TwitPicBlock) completionBlock 19 | onError:(MKNKErrorBlock) errorBlock; 20 | @end 21 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/iOS-Demo/MKNetworkKitDemo/ExamplePost.h: -------------------------------------------------------------------------------- 1 | // 2 | // ExamplePost.h 3 | // MKNetworkKitDemo 4 | // 5 | // Created by Mugunth Kumar on 1/12/11. 6 | // Copyright (c) 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | @interface ExamplePost : MKNetworkEngine 10 | 11 | -(MKNetworkOperation*) postDataToServer; 12 | @end 13 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/iOS-Demo/MKNetworkKitDemo/FlickrCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // FlickrCell.h 3 | // MKNetworkKit-iOS-Demo 4 | // 5 | // Created by Mugunth Kumar on 22/1/12. 6 | // Copyright (c) 2012 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface FlickrCell : UITableViewCell 12 | 13 | @property (nonatomic, assign) IBOutlet UIImageView *thumbnailImage; 14 | @property (nonatomic, assign) IBOutlet UILabel *titleLabel; 15 | @property (nonatomic, assign) IBOutlet UILabel *authorNameLabel; 16 | 17 | @property (nonatomic, strong) NSString* loadingImageURLString; 18 | @property (nonatomic, strong) MKNetworkOperation* imageLoadingOperation; 19 | -(void) setFlickrData:(NSDictionary*) thisFlickrImage; 20 | @end 21 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/iOS-Demo/MKNetworkKitDemo/FlickrTableViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // FlickrTableViewController.h 3 | // MKNetworkKit-iOS-Demo 4 | // 5 | // Created by Mugunth Kumar on 22/1/12. 6 | // Copyright (c) 2012 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface FlickrTableViewController : UITableViewController 12 | 13 | @property (strong, nonatomic) NSMutableArray *flickrImages; 14 | @end 15 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/iOS-Demo/MKNetworkKitDemo/MKNetworkKit-iOS-Demo-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'MKNetworkKit' target in the 'MKNetworkKit' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #import "../../MKNetworkKit/MKNetworkKit.h" 15 | #import "AppDelegate.h" 16 | #endif 17 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/iOS-Demo/MKNetworkKitDemo/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/iOS-Demo/MKNetworkKitDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // MKNetworkKit 4 | // 5 | // Created by Mugunth Kumar on 7/11/11. 6 | // Copyright (c) 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch14/iHotelApp/MKNetworkKit/iOS-Demo/client.p12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch14/iHotelApp/MKNetworkKit/iOS-Demo/client.p12 -------------------------------------------------------------------------------- /ch14/iHotelApp/iHotelApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch14/iHotelApp/iHotelApp/JSONModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // ModelBase.h 3 | // Steinlogic 4 | // 5 | // Created by Mugunth Kumar on 26-Jul-10. 6 | // Copyright 2011 Steinlogic All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface JSONModel : NSObject { 12 | 13 | } 14 | 15 | -(id) initWithDictionary:(NSMutableDictionary*) jsonObject; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /ch14/iHotelApp/iHotelApp/RESTError.h: -------------------------------------------------------------------------------- 1 | // 2 | // RESTError.h 3 | // iHotelApp 4 | // 5 | // Created by Mugunth Kumar on 1-Jan-11. 6 | // Copyright 2010 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | #define kRequestErrorDomain @"HTTP_ERROR" 11 | #define kBusinessErrorDomain @"BIZ_ERROR" // rename this appropriately 12 | 13 | @interface RESTError : NSError 14 | 15 | @property (nonatomic, strong) NSString *message; 16 | @property (nonatomic, strong) NSString *errorCode; 17 | 18 | - (NSString*) localizedOption; 19 | -(id) initWithDictionary:(NSMutableDictionary*) jsonObject; 20 | @end 21 | -------------------------------------------------------------------------------- /ch14/iHotelApp/iHotelApp/RESTfulOperation.h: -------------------------------------------------------------------------------- 1 | // 2 | // RESTfulOperation.h 3 | // iHotelApp 4 | // 5 | // Created by Mugunth on 28/05/11. 6 | // Copyright 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "RESTError.h" 12 | 13 | @interface RESTfulOperation : MKNetworkOperation 14 | 15 | @property (nonatomic, strong) RESTError *restError; 16 | @end 17 | -------------------------------------------------------------------------------- /ch14/iHotelApp/iHotelApp/Review.h: -------------------------------------------------------------------------------- 1 | // 2 | // Review.h 3 | // 4 | // 5 | // Created by Mugunth Kumar on 28/05/11. 6 | // Copyright 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "JSONModel.h" 11 | 12 | @interface Review : JSONModel 13 | 14 | @property (nonatomic, strong) NSString *rating; 15 | @property (nonatomic, strong) NSString *reviewDate; 16 | @property (nonatomic, strong) NSString *reviewerName; 17 | @property (nonatomic, strong) NSString *reviewId; 18 | @property (nonatomic, strong) NSString *reviewText; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /ch14/iHotelApp/iHotelApp/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch14/iHotelApp/iHotelApp/iHotelApp-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'iHotelApp' target in the 'iHotelApp' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #import "MKNetworkKit.h" 15 | #endif 16 | -------------------------------------------------------------------------------- /ch14/iHotelApp/iHotelApp/iHotelAppAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // iHotelAppAppDelegate.h 3 | // iHotelApp 4 | // 5 | // Created by Mugunth on 25/05/11. 6 | // Copyright 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "RESTfulEngine.h" 11 | #define AppDelegate ((iHotelAppAppDelegate *)[UIApplication sharedApplication].delegate) 12 | 13 | @class iHotelAppViewController; 14 | 15 | @interface iHotelAppAppDelegate : NSObject 16 | 17 | @property (nonatomic, strong) IBOutlet UIWindow *window; 18 | 19 | @property (nonatomic, strong) IBOutlet UINavigationController *navController; 20 | 21 | @property (nonatomic, strong) RESTfulEngine *engine; 22 | @end 23 | 24 | -------------------------------------------------------------------------------- /ch14/iHotelApp/iHotelApp/iHotelAppMenuViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // iHotelAppMenuViewController.h 3 | // iHotelApp 4 | // 5 | // Created by Mugunth on 28/6/12. 6 | // Copyright (c) 2012 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface iHotelAppMenuViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch14/iHotelApp/iHotelApp/iHotelAppViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // iHotelAppViewController.h 3 | // iHotelApp 4 | // 5 | // Created by Mugunth on 25/05/11. 6 | // Copyright 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "RESTfulEngine.h" 11 | 12 | @interface iHotelAppViewController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /ch14/iHotelApp/iHotelApp/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // iHotelApp 4 | // 5 | // Created by Mugunth on 25/05/11. 6 | // Copyright 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | @autoreleasepool { 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | return retVal; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ch15/Connection/Connection.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch15/Connection/Connection/Connection-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Connection' target in the 'Connection' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch15/Connection/Connection/ConnectionAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ConnectionAppDelegate.h 3 | // Connection 4 | // 5 | // Created by Rob Napier on 8/1/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ConnectionAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch15/Connection/Connection/My Example Server.cer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch15/Connection/Connection/My Example Server.cer -------------------------------------------------------------------------------- /ch15/Connection/Connection/My Server.cer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch15/Connection/Connection/My Server.cer -------------------------------------------------------------------------------- /ch15/Connection/Connection/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch15/Connection/Connection/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Connection 4 | // 5 | // Created by Rob Napier on 8/1/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "ConnectionAppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([ConnectionAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch15/Connection/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch15/Connection/Default-568h@2x.png -------------------------------------------------------------------------------- /ch15/CryptPic/CryptPic.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch15/CryptPic/CryptPic/CPAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // CPAppDelegate.h 3 | // CryptPic 4 | // 5 | 6 | #import 7 | 8 | @interface CPAppDelegate : UIResponder 9 | 10 | @property (strong, nonatomic) UIWindow *window; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /ch15/CryptPic/CryptPic/CPAppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // CPAppDelegate.m 3 | // CryptPic 4 | // 5 | 6 | #import "CPAppDelegate.h" 7 | 8 | @implementation CPAppDelegate 9 | 10 | @end 11 | -------------------------------------------------------------------------------- /ch15/CryptPic/CryptPic/CPDecryptViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CPSecondViewController.h 3 | // CryptPic 4 | // 5 | 6 | #import 7 | #import "CPPasswordViewController.h" 8 | 9 | @interface CPDecryptViewController : UIViewController 10 | 11 | @property (strong, nonatomic) IBOutlet UIImageView *imageView; 12 | @property (strong, nonatomic) NSString *password; 13 | @property (strong, nonatomic) IBOutlet UIButton *decryptButton; 14 | 15 | - (IBAction)decrypt:(id)sender; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /ch15/CryptPic/CryptPic/CPEncyptViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CPFirstViewController.h 3 | // CryptPic 4 | // 5 | 6 | #import 7 | #import "CPPasswordViewController.h" 8 | 9 | @interface CPEncyptViewController : UIViewController ; 10 | 11 | @property (strong, nonatomic) IBOutlet UIImageView *imageView; 12 | @property (strong, nonatomic) NSString *password; 13 | @property (strong, nonatomic) IBOutlet UISegmentedControl *modeSegmentedControl; 14 | @property (strong, nonatomic) IBOutlet UIButton *encryptButton; 15 | 16 | - (IBAction)selectPicture:(id)sender; 17 | - (IBAction)encrypt:(id)sender; 18 | - (IBAction)changeMode:(id)sender; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /ch15/CryptPic/CryptPic/CPPasswordViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // CPPasswordViewController.h 3 | // CryptPic 4 | // 5 | 6 | #import 7 | 8 | @class CPPasswordViewController; 9 | 10 | @protocol CPPasswordViewControllerDelegate 11 | - (void)passwordViewController:(CPPasswordViewController *)vc didFinishWithPassword:(NSString *)password; 12 | @end 13 | 14 | @interface CPPasswordViewController : UIViewController 15 | 16 | @property (strong, nonatomic) IBOutlet UITextField *passwordTextField; 17 | @property (copy, nonatomic) NSString *password; 18 | @property (weak, nonatomic) id delegate; 19 | @end 20 | -------------------------------------------------------------------------------- /ch15/CryptPic/CryptPic/CryptPic-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'CryptPic' target in the 'CryptPic' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch15/CryptPic/CryptPic/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch15/CryptPic/CryptPic/first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch15/CryptPic/CryptPic/first.png -------------------------------------------------------------------------------- /ch15/CryptPic/CryptPic/first@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch15/CryptPic/CryptPic/first@2x.png -------------------------------------------------------------------------------- /ch15/CryptPic/CryptPic/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // CryptPic 4 | // 5 | // Created by Rob Napier on 8/9/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "CPAppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([CPAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch15/CryptPic/CryptPic/second.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch15/CryptPic/CryptPic/second.png -------------------------------------------------------------------------------- /ch15/CryptPic/CryptPic/second@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch15/CryptPic/CryptPic/second@2x.png -------------------------------------------------------------------------------- /ch15/CryptPic/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch15/CryptPic/Default-568h@2x.png -------------------------------------------------------------------------------- /ch15/FileExplorer/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch15/FileExplorer/Default-568h@2x.png -------------------------------------------------------------------------------- /ch15/FileExplorer/FileExplorer.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch15/FileExplorer/FileExplorer/DirectoryViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DirectoryViewController.h 3 | // FileExplorer 4 | // 5 | // Created by Rob Napier on 7/30/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface DirectoryViewController : UITableViewController 12 | 13 | @property (nonatomic, readwrite, strong) NSString *path; 14 | @property (nonatomic, readwrite, strong) NSArray *contents; 15 | @end 16 | -------------------------------------------------------------------------------- /ch15/FileExplorer/FileExplorer/FileExplorer-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'FileExplorer' target in the 'FileExplorer' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch15/FileExplorer/FileExplorer/FileExplorerAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // FileExplorerAppDelegate.h 3 | // FileExplorer 4 | // 5 | // Created by Rob Napier on 7/30/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface FileExplorerAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch15/FileExplorer/FileExplorer/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch15/FileExplorer/FileExplorer/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // FileExplorer 4 | // 5 | // Created by Rob Napier on 7/30/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "FileExplorerAppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([FileExplorerAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch17/Money/Money.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch17/Money/Money/Money-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Money' target in the 'Money' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | -------------------------------------------------------------------------------- /ch17/Money/Money/RNMoney.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface RNMoney : NSObject 4 | @property (nonatomic, readonly, strong) 5 | NSDecimalNumber *amount; 6 | @property (nonatomic, readonly, strong) 7 | NSString *currencyCode; 8 | 9 | - (RNMoney *)initWithAmount:(NSDecimalNumber *)anAmount 10 | currencyCode:(NSString *)aCode; 11 | - (RNMoney *)initWithAmount:(NSDecimalNumber *)anAmount; 12 | 13 | - (RNMoney *)initWithIntegerAmount:(NSInteger)anAmount 14 | currencyCode:(NSString *)aCode; 15 | - (RNMoney *)initWithIntegerAmount:(NSInteger)anAmount; 16 | 17 | - (NSString *)localizedStringForLocale:(NSLocale *)aLocale; 18 | - (NSString *)localizedString; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /ch18/MKStoreKit.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch18/MKStoreKit.zip -------------------------------------------------------------------------------- /ch20/ZipText/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch20/ZipText/Default-568h@2x.png -------------------------------------------------------------------------------- /ch20/ZipText/ZipText.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch20/ZipText/ZipText/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // ZipText 4 | // 5 | // Created by Rob Napier on 7/15/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @class ViewController; 12 | 13 | @interface AppDelegate : UIResponder 14 | 15 | @property (strong, nonatomic) UIWindow *window; 16 | 17 | @property (strong, nonatomic) ViewController *viewController; 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /ch20/ZipText/ZipText/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // ZipText 4 | // 5 | // Created by Rob Napier on 7/15/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch20/ZipText/ZipText/ZipText-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'ZipText' target in the 'ZipText' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_4_0 8 | #warning "This project uses features only available in iOS SDK 4.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch20/ZipText/ZipText/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch20/ZipText/ZipText/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // ZipText 4 | // 5 | // Created by Rob Napier on 7/15/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch21/StoryboardTransition/StoryboardTransition/CustomSegue.h: -------------------------------------------------------------------------------- 1 | // 2 | // CustomSegue.h 3 | // StoryboardTransition 4 | // 5 | // Created by Mugunth Kumar on 24/7/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training Pte Ltd. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CustomSegue : UIStoryboardSegue 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch21/StoryboardTransition/StoryboardTransition/MKAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKAppDelegate.h 3 | // StoryboardTransition 4 | // 5 | // Created by Mugunth Kumar on 24/7/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training Pte Ltd. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKAppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch21/StoryboardTransition/StoryboardTransition/MKDetailViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKDetailViewController.h 3 | // StoryboardTransition 4 | // 5 | // Created by Mugunth Kumar on 24/7/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training Pte Ltd. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKDetailViewController : UIViewController 12 | 13 | @property (strong, nonatomic) id detailItem; 14 | 15 | @property (strong, nonatomic) IBOutlet UILabel *detailDescriptionLabel; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /ch21/StoryboardTransition/StoryboardTransition/MKMasterViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // MKMasterViewController.h 3 | // StoryboardTransition 4 | // 5 | // Created by Mugunth Kumar on 24/7/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training Pte Ltd. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MKMasterViewController : UITableViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch21/StoryboardTransition/StoryboardTransition/StoryboardTransition-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'StoryboardTransition' target in the 'StoryboardTransition' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch21/StoryboardTransition/StoryboardTransition/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch21/StoryboardTransition/StoryboardTransition/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // StoryboardTransition 4 | // 5 | // Created by Mugunth Kumar on 24/7/12. 6 | // Copyright (c) 2012 Steinlogic Consulting and Training Pte Ltd. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "MKAppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([MKAppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch22/KVC-Collection/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch22/KVC-Collection/Default-568h@2x.png -------------------------------------------------------------------------------- /ch22/KVC-Collection/KVC-Collection.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch22/KVC-Collection/KVC-Collection/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // KVC-Collection 4 | // 5 | // Created by Rob Napier on 9/12/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch22/KVC-Collection/KVC-Collection/KVC-Collection-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'KVC-Collection' target in the 'KVC-Collection' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch22/KVC-Collection/KVC-Collection/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch22/KVC-Collection/KVC-Collection/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // KVC-Collection 4 | // 5 | // Created by Rob Napier on 9/12/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch22/KVC/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch22/KVC/Default-568h@2x.png -------------------------------------------------------------------------------- /ch22/KVC/KVC.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch22/KVC/KVC/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // KVC 4 | // 5 | // Created by Rob Napier on 9/12/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch22/KVC/KVC/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // KVC 4 | // 5 | // Created by Rob Napier on 9/12/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @implementation AppDelegate 12 | 13 | @synthesize window = _window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch22/KVC/KVC/KVC-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'KVC' target in the 'KVC' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch22/KVC/KVC/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch22/KVC/KVC/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // KVC 4 | // 5 | // Created by Rob Napier on 9/12/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch22/KVO/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch22/KVO/Default-568h@2x.png -------------------------------------------------------------------------------- /ch22/KVO/KVO.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch22/KVO/KVO/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // KVO 4 | // 5 | // Created by Rob Napier on 9/12/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch22/KVO/KVO/KVO-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'KVO' target in the 'KVO' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch22/KVO/KVO/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch22/KVO/KVO/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // KVO 4 | // 5 | // Created by Rob Napier on 9/12/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch23/UIAlertViewWithBlocks/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch23/UIAlertViewWithBlocks/Default-568h@2x.png -------------------------------------------------------------------------------- /ch23/UIAlertViewWithBlocks/UIAlertViewWithBlocks.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch23/UIAlertViewWithBlocks/UIAlertViewWithBlocks/UIAlertView+Blocks.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIAlertView+Blocks.h 3 | // UIKitCategoryAdditions 4 | // 5 | 6 | #import 7 | 8 | typedef void (^DismissBlock)(int buttonIndex); 9 | typedef void (^CancelBlock)(); 10 | 11 | @interface UIAlertView (Blocks) 12 | 13 | + (UIAlertView*) showAlertViewWithTitle:(NSString*) title 14 | message:(NSString*) message 15 | cancelButtonTitle:(NSString*) cancelButtonTitle 16 | otherButtonTitles:(NSArray*) otherButtons 17 | onDismiss:(DismissBlock) dismissed 18 | onCancel:(CancelBlock) cancelled; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /ch23/UIAlertViewWithBlocks/UIAlertViewWithBlocks/UIAlertViewWithBlocks-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'UIAlertViewWithBlocks' target in the 'UIAlertViewWithBlocks' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch23/UIAlertViewWithBlocks/UIAlertViewWithBlocks/UIAlertViewWithBlocksAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIAlertViewWithBlocksAppDelegate.h 3 | // UIAlertViewWithBlocks 4 | // 5 | 6 | #import 7 | 8 | @interface UIAlertViewWithBlocksAppDelegate : NSObject 9 | 10 | @property (nonatomic, strong) IBOutlet UIWindow *window; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /ch23/UIAlertViewWithBlocks/UIAlertViewWithBlocks/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch23/UIAlertViewWithBlocks/UIAlertViewWithBlocks/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // UIAlertViewWithBlocks 4 | // 5 | // Created by Mugunth Kumar M on 6/8/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | @autoreleasepool { 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | return retVal; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ch23/iHotelApp/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch23/iHotelApp/Default-568h@2x.png -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/MKNetworkKit-OSX/MKNetworkKit-OSX/MKNetworkKit-OSX-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'MKNetworkKit-OSX' target in the 'MKNetworkKit-OSX' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #import "MKNetworkKit.h" 8 | #endif 9 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/MKNetworkKit-iOS/MKNetworkKit-iOS/MKNetworkKit-iOS-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'MKNetworkKit-iOS' target in the 'MKNetworkKit-iOS' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #import "MKNetworkKit.h" 8 | #endif 9 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/MKNetworkKit.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 12 | 13 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/MKNetworkKit/Categories/NSDate+RFC1123.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDate+RFC1123.h 3 | // MKNetworkKit 4 | // 5 | // Created by Marcus Rohrmoser 6 | // http://blog.mro.name/2009/08/nsdateformatter-http-header/ 7 | // http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1 8 | 9 | // No obvious license attached 10 | 11 | @interface NSDate (RFC1123) 12 | /** 13 | Convert a RFC1123 'Full-Date' string 14 | (http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1) 15 | into NSDate. 16 | */ 17 | +(NSDate*)dateFromRFC1123:(NSString*)value_; 18 | 19 | /** 20 | Convert NSDate into a RFC1123 'Full-Date' string 21 | (http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1). 22 | */ 23 | -(NSString*)rfc1123String; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/Mac-Demo/MKNetworkKit-OSX-Demo/MKNetworkKit-OSX-Demo/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // MKNetworkKit-OSX-Demo 4 | // 5 | // Created by Mugunth Kumar on 7/12/11. 6 | // Copyright (c) 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : NSObject 12 | 13 | @property (assign) IBOutlet NSWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/Mac-Demo/MKNetworkKit-OSX-Demo/MKNetworkKit-OSX-Demo/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // MKNetworkKit-OSX-Demo 4 | // 5 | // Created by Mugunth Kumar on 7/12/11. 6 | // Copyright (c) 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @implementation AppDelegate 12 | 13 | @synthesize window = _window; 14 | 15 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 16 | { 17 | // Insert code here to initialize your application 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/Mac-Demo/MKNetworkKit-OSX-Demo/MKNetworkKit-OSX-Demo/MKNetworkKit-OSX-Demo-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'MKNetworkKit-OSX-Demo' target in the 'MKNetworkKit-OSX-Demo' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/Mac-Demo/MKNetworkKit-OSX-Demo/MKNetworkKit-OSX-Demo/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/Mac-Demo/MKNetworkKit-OSX-Demo/MKNetworkKit-OSX-Demo/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/Mac-Demo/MKNetworkKit-OSX-Demo/MKNetworkKit-OSX-Demo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // MKNetworkKit-OSX-Demo 4 | // 5 | // Created by Mugunth Kumar on 7/12/11. 6 | // Copyright (c) 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | return NSApplicationMain(argc, (const char **)argv); 14 | } 15 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/SampleImage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch23/iHotelApp/MKNetworkKit/SampleImage.jpg -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/ServerTests/basic_auth.php: -------------------------------------------------------------------------------- 1 | Hello {$_SERVER['PHP_AUTH_USER']}.

"; 11 | echo "

You entered {$_SERVER['PHP_AUTH_PW']} as your password.

"; 12 | } 13 | else 14 | { 15 | echo "

Sorry, invalid crednetials

"; 16 | } 17 | } 18 | ?> -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/iOS-Demo/MKNetworkKitDemo/AuthTestEngine.h: -------------------------------------------------------------------------------- 1 | // 2 | // AuthTestEngine.h 3 | // MKNetworkKit-iOS-Demo 4 | // 5 | // Created by Mugunth Kumar on 4/12/11. 6 | // Copyright (c) 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | @interface AuthTestEngine : MKNetworkEngine 10 | 11 | -(void) basicAuthTest; 12 | -(void) digestAuthTest; 13 | -(void)digestAuthTestWithUser:(NSString*)username password:(NSString*)password; 14 | -(void) clientCertTest; 15 | -(int) cacheMemoryCost; 16 | 17 | -(MKNetworkOperation*) uploadImageFromFile:(NSString*) file 18 | onCompletion:(TwitPicBlock) completionBlock 19 | onError:(MKNKErrorBlock) errorBlock; 20 | @end 21 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/iOS-Demo/MKNetworkKitDemo/ExamplePost.h: -------------------------------------------------------------------------------- 1 | // 2 | // ExamplePost.h 3 | // MKNetworkKitDemo 4 | // 5 | // Created by Mugunth Kumar on 1/12/11. 6 | // Copyright (c) 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | @interface ExamplePost : MKNetworkEngine 10 | 11 | -(MKNetworkOperation*) postDataToServer; 12 | @end 13 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/iOS-Demo/MKNetworkKitDemo/FlickrCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // FlickrCell.h 3 | // MKNetworkKit-iOS-Demo 4 | // 5 | // Created by Mugunth Kumar on 22/1/12. 6 | // Copyright (c) 2012 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface FlickrCell : UITableViewCell 12 | 13 | @property (nonatomic, assign) IBOutlet UIImageView *thumbnailImage; 14 | @property (nonatomic, assign) IBOutlet UILabel *titleLabel; 15 | @property (nonatomic, assign) IBOutlet UILabel *authorNameLabel; 16 | 17 | @property (nonatomic, strong) NSString* loadingImageURLString; 18 | @property (nonatomic, strong) MKNetworkOperation* imageLoadingOperation; 19 | -(void) setFlickrData:(NSDictionary*) thisFlickrImage; 20 | @end 21 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/iOS-Demo/MKNetworkKitDemo/FlickrTableViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // FlickrTableViewController.h 3 | // MKNetworkKit-iOS-Demo 4 | // 5 | // Created by Mugunth Kumar on 22/1/12. 6 | // Copyright (c) 2012 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface FlickrTableViewController : UITableViewController 12 | 13 | @property (strong, nonatomic) NSMutableArray *flickrImages; 14 | @end 15 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/iOS-Demo/MKNetworkKitDemo/MKNetworkKit-iOS-Demo-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'MKNetworkKit' target in the 'MKNetworkKit' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #import "../../MKNetworkKit/MKNetworkKit.h" 15 | #import "AppDelegate.h" 16 | #endif 17 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/iOS-Demo/MKNetworkKitDemo/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/iOS-Demo/MKNetworkKitDemo/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // MKNetworkKit 4 | // 5 | // Created by Mugunth Kumar on 7/11/11. 6 | // Copyright (c) 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch23/iHotelApp/MKNetworkKit/iOS-Demo/client.p12: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch23/iHotelApp/MKNetworkKit/iOS-Demo/client.p12 -------------------------------------------------------------------------------- /ch23/iHotelApp/iHotelApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch23/iHotelApp/iHotelApp/JSONModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // ModelBase.h 3 | // iHotelApp 4 | // 5 | 6 | #import 7 | 8 | @interface JSONModel : NSObject { 9 | 10 | } 11 | 12 | -(id) initWithDictionary:(NSMutableDictionary*) jsonObject; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /ch23/iHotelApp/iHotelApp/RESTError.h: -------------------------------------------------------------------------------- 1 | // 2 | // RESTError.h 3 | // iHotelApp 4 | // 5 | // Created by Mugunth Kumar on 1-Jan-11. 6 | // Copyright 2010 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | #define kRequestErrorDomain @"HTTP_ERROR" 11 | #define kBusinessErrorDomain @"BIZ_ERROR" // rename this appropriately 12 | 13 | @interface RESTError : NSError 14 | 15 | @property (nonatomic, strong) NSString *message; 16 | @property (nonatomic, strong) NSString *errorCode; 17 | 18 | - (NSString*) localizedOption; 19 | -(id) initWithDictionary:(NSMutableDictionary*) jsonObject; 20 | @end 21 | -------------------------------------------------------------------------------- /ch23/iHotelApp/iHotelApp/RESTfulOperation.h: -------------------------------------------------------------------------------- 1 | // 2 | // RESTfulOperation.h 3 | // iHotelApp 4 | // 5 | // Created by Mugunth on 28/05/11. 6 | // Copyright 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "RESTError.h" 12 | 13 | @interface RESTfulOperation : MKNetworkOperation 14 | 15 | @property (nonatomic, strong) RESTError *restError; 16 | @end 17 | -------------------------------------------------------------------------------- /ch23/iHotelApp/iHotelApp/Review.h: -------------------------------------------------------------------------------- 1 | // 2 | // Review.h 3 | // 4 | // 5 | // Created by Mugunth Kumar on 28/05/11. 6 | // Copyright 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "JSONModel.h" 11 | 12 | @interface Review : JSONModel 13 | 14 | @property (nonatomic, strong) NSString *rating; 15 | @property (nonatomic, strong) NSString *reviewDate; 16 | @property (nonatomic, strong) NSString *reviewerName; 17 | @property (nonatomic, strong) NSString *reviewId; 18 | @property (nonatomic, strong) NSString *reviewText; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /ch23/iHotelApp/iHotelApp/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch23/iHotelApp/iHotelApp/iHotelApp-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'iHotelApp' target in the 'iHotelApp' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iPhone SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #import "MKNetworkKit.h" 15 | #endif 16 | -------------------------------------------------------------------------------- /ch23/iHotelApp/iHotelApp/iHotelAppAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // iHotelAppAppDelegate.h 3 | // iHotelApp 4 | // 5 | 6 | #import 7 | #import "RESTfulEngine.h" 8 | #define AppDelegate ((iHotelAppAppDelegate *)[UIApplication sharedApplication].delegate) 9 | 10 | @class iHotelAppViewController; 11 | 12 | @interface iHotelAppAppDelegate : NSObject { 13 | 14 | } 15 | 16 | @property (nonatomic, strong) IBOutlet UIWindow *window; 17 | 18 | @property (nonatomic, strong) IBOutlet UINavigationController *navigationController; 19 | 20 | @property (nonatomic, strong) RESTfulEngine *engine; 21 | @end 22 | -------------------------------------------------------------------------------- /ch23/iHotelApp/iHotelApp/iHotelAppMenuViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // iHotelAppMenuViewController.h 3 | // iHotelApp 4 | // 5 | // Created by Mugunth on 28/6/12. 6 | // Copyright (c) 2012 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface iHotelAppMenuViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch23/iHotelApp/iHotelApp/iHotelAppViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // iHotelAppViewController.h 3 | // iHotelApp 4 | // 5 | 6 | #import 7 | #import "RESTfulEngine.h" 8 | 9 | @interface iHotelAppViewController : UIViewController 10 | 11 | @end 12 | -------------------------------------------------------------------------------- /ch23/iHotelApp/iHotelApp/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // iHotelApp 4 | // 5 | 6 | #import 7 | 8 | int main(int argc, char *argv[]) 9 | { 10 | @autoreleasepool { 11 | int retVal = UIApplicationMain(argc, argv, nil, nil); 12 | return retVal; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /ch24/iHotelApp/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch24/iHotelApp/Default-568h@2x.png -------------------------------------------------------------------------------- /ch24/iHotelApp/MKNetworkKit: -------------------------------------------------------------------------------- 1 | ../../ch23/iHotelApp/MKNetworkKit -------------------------------------------------------------------------------- /ch24/iHotelApp/iHotelApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch24/iHotelApp/iHotelApp/AppCache.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppCache.h 3 | // iHotelApp 4 | // 5 | 6 | #import 7 | 8 | @interface AppCache : NSObject 9 | 10 | +(void) clearCache; 11 | +(void) cacheMenuItems:(NSArray*) menuItems; 12 | +(NSMutableArray*) getCachedMenuItems; 13 | +(BOOL) isMenuItemsStale; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch24/iHotelApp/iHotelApp/JSONModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // ModelBase.h 3 | // Steinlogic 4 | // 5 | // Created by Mugunth Kumar on 26-Jul-10. 6 | // Copyright 2011 Steinlogic All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface JSONModel : NSObject { 12 | 13 | } 14 | 15 | -(id) initWithDictionary:(NSMutableDictionary*) jsonObject; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /ch24/iHotelApp/iHotelApp/RESTError.h: -------------------------------------------------------------------------------- 1 | // 2 | // RESTError.h 3 | // iHotelApp 4 | // 5 | // Created by Mugunth Kumar on 1-Jan-11. 6 | // Copyright 2010 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | #define kRequestErrorDomain @"HTTP_ERROR" 11 | #define kBusinessErrorDomain @"BIZ_ERROR" // rename this appropriately 12 | 13 | @interface RESTError : NSError 14 | 15 | @property (nonatomic, strong) NSString *message; 16 | @property (nonatomic, strong) NSString *errorCode; 17 | 18 | - (NSString*) localizedOption; 19 | -(id) initWithDictionary:(NSMutableDictionary*) jsonObject; 20 | @end 21 | -------------------------------------------------------------------------------- /ch24/iHotelApp/iHotelApp/RESTfulOperation.h: -------------------------------------------------------------------------------- 1 | // 2 | // RESTfulOperation.h 3 | // iHotelApp 4 | // 5 | // Created by Mugunth on 28/05/11. 6 | // Copyright 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "RESTError.h" 12 | 13 | @interface RESTfulOperation : MKNetworkOperation 14 | 15 | @property (nonatomic, strong) RESTError *restError; 16 | @end 17 | -------------------------------------------------------------------------------- /ch24/iHotelApp/iHotelApp/Review.h: -------------------------------------------------------------------------------- 1 | // 2 | // Review.h 3 | // 4 | // 5 | // Created by Mugunth Kumar on 28/05/11. 6 | // Copyright 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "JSONModel.h" 11 | 12 | @interface Review : JSONModel 13 | 14 | @property (nonatomic, strong) NSString *rating; 15 | @property (nonatomic, strong) NSString *reviewDate; 16 | @property (nonatomic, strong) NSString *reviewerName; 17 | @property (nonatomic, strong) NSString *reviewId; 18 | @property (nonatomic, strong) NSString *reviewText; 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /ch24/iHotelApp/iHotelApp/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch24/iHotelApp/iHotelApp/iHotelApp-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'iHotelApp' target in the 'iHotelApp' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iPhone SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #import "MKNetworkKit.h" 15 | #endif 16 | -------------------------------------------------------------------------------- /ch24/iHotelApp/iHotelApp/iHotelAppAppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // iHotelAppAppDelegate.h 3 | // iHotelApp 4 | // 5 | // Created by Mugunth on 25/05/11. 6 | // Copyright 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "RESTfulEngine.h" 11 | #define AppDelegate ((iHotelAppAppDelegate *)[UIApplication sharedApplication].delegate) 12 | 13 | @class iHotelAppViewController; 14 | 15 | @interface iHotelAppAppDelegate : NSObject 16 | 17 | @property (nonatomic, strong) IBOutlet UIWindow *window; 18 | 19 | @property (nonatomic, strong) IBOutlet UINavigationController *navController; 20 | 21 | @property (nonatomic, strong) RESTfulEngine *engine; 22 | @end 23 | -------------------------------------------------------------------------------- /ch24/iHotelApp/iHotelApp/iHotelAppMenuViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // iHotelAppMenuViewController.h 3 | // iHotelApp 4 | // 5 | // Created by Mugunth on 28/6/12. 6 | // Copyright (c) 2012 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface iHotelAppMenuViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch24/iHotelApp/iHotelApp/iHotelAppViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // iHotelAppViewController.h 3 | // iHotelApp 4 | // 5 | // Created by Mugunth on 25/05/11. 6 | // Copyright 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "RESTfulEngine.h" 11 | 12 | @interface iHotelAppViewController : UIViewController 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /ch24/iHotelApp/iHotelApp/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // iHotelApp 4 | // 5 | // Created by Mugunth on 25/05/11. 6 | // Copyright 2011 Steinlogic. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | @autoreleasepool { 14 | int retVal = UIApplicationMain(argc, argv, nil, nil); 15 | return retVal; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ch26/AutoReturn/AutoReturn.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch26/AutoReturn/AutoReturn/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // AutoReturn 4 | // 5 | // Created by Rob Napier on 8/23/11. 6 | // 7 | 8 | #import 9 | 10 | @interface AppDelegate : UIResponder 11 | 12 | @property (strong, nonatomic) UIWindow *window; 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /ch26/AutoReturn/AutoReturn/AutoReturn-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'AutoReturn' target in the 'AutoReturn' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch26/AutoReturn/AutoReturn/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch26/AutoReturn/AutoReturn/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // AutoReturn 4 | // 5 | // Created by Rob Napier on 8/23/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch26/AutoReturn/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch26/AutoReturn/Default-568h@2x.png -------------------------------------------------------------------------------- /ch26/CurvyText/CurvyText.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch26/CurvyText/CurvyText/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // CurvyText 4 | // 5 | // Created by Rob Napier on 8/28/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch26/CurvyText/CurvyText/CurvyText-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'CurvyText' target in the 'CurvyText' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch26/CurvyText/CurvyText/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // CurvyText 4 | // 5 | // Created by Rob Napier on 8/28/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch26/CurvyText/CurvyText/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch26/CurvyText/CurvyText/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // CurvyText 4 | // 5 | // Created by Rob Napier on 8/28/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch26/RichText/RichText.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch26/RichText/RichText/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // RichText 4 | // 5 | // Created by Rob Napier on 8/20/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch26/RichText/RichText/RichText-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'RichText' target in the 'RichText' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch26/RichText/RichText/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch26/RichText/RichText/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // RichText 4 | // 5 | // Created by Rob Napier on 8/20/12. 6 | // Copyright (c) 2012 Rob Napier. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch26/SimpleLayout/CoreTextLabel.h: -------------------------------------------------------------------------------- 1 | // 2 | // CoreTextLabel.h 3 | // SimpleLayout 4 | // 5 | // Created by Rob Napier on 8/25/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface CoreTextLabel : UIView 12 | @property (nonatomic, copy) NSAttributedString *attributedString; 13 | @end 14 | -------------------------------------------------------------------------------- /ch26/SimpleLayout/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch26/SimpleLayout/Default-568h@2x.png -------------------------------------------------------------------------------- /ch26/SimpleLayout/SimpleLayout.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch26/SimpleLayout/SimpleLayout/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // SimpleLayout 4 | // 5 | // Created by Rob Napier on 8/25/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /ch26/SimpleLayout/SimpleLayout/SimpleLayout-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'SimpleLayout' target in the 'SimpleLayout' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_5_0 8 | #warning "This project uses features only available in iOS SDK 5.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch26/SimpleLayout/SimpleLayout/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // SimpleLayout 4 | // 5 | // Created by Rob Napier on 8/25/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ch26/SimpleLayout/SimpleLayout/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch26/SimpleLayout/SimpleLayout/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // SimpleLayout 4 | // 5 | // Created by Rob Napier on 8/25/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | #import "AppDelegate.h" 12 | 13 | int main(int argc, char *argv[]) 14 | { 15 | @autoreleasepool { 16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ch27/CoreFoundation/CoreFoundation.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch27/CoreFoundation/CoreFoundation/CoreFoundation-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'CoreFoundation' target in the 'CoreFoundation' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iOS SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch27/CoreFoundation/CoreFoundation/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch27/CoreFoundation/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch27/CoreFoundation/Default-568h@2x.png -------------------------------------------------------------------------------- /ch28/ISASwizzle/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch28/ISASwizzle/Default-568h@2x.png -------------------------------------------------------------------------------- /ch28/ISASwizzle/ISASwizzle.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch28/ISASwizzle/ISASwizzle/ISASwizzle-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'ISASwizzle' target in the 'ISASwizzle' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iOS SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch28/ISASwizzle/ISASwizzle/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch28/MethodSwizzle/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch28/MethodSwizzle/Default-568h@2x.png -------------------------------------------------------------------------------- /ch28/MethodSwizzle/MethodSwizzle.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch28/MethodSwizzle/MethodSwizzle/MethodSwizzle-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'MethodSwizzle' target in the 'MethodSwizzle' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iOS SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch28/MethodSwizzle/MethodSwizzle/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch28/MethodSwizzle/NSNotificationCenter+RNSwizzle.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSNotification+RNSwizzle.h 3 | // MethodSwizzle 4 | // 5 | // Created by Rob Napier on 6/8/11. 6 | // Copyright 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSNotificationCenter (RNSwizzle) 12 | + (void)swizzleAddObserver; 13 | @end 14 | -------------------------------------------------------------------------------- /ch28/MethodSwizzle/RNSwizzle.h: -------------------------------------------------------------------------------- 1 | // 2 | // RNSwizzle.h 3 | // MethodSwizzle 4 | 5 | #import 6 | 7 | @interface NSObject (RNSwizzle) 8 | + (IMP)swizzleSelector:(SEL)origSelector 9 | withIMP:(IMP)newIMP; 10 | @end 11 | -------------------------------------------------------------------------------- /ch28/MethodSwizzle/RNSwizzle.m: -------------------------------------------------------------------------------- 1 | // 2 | // RNSwizzle.m 3 | // MethodSwizzle 4 | 5 | #import "RNSwizzle.h" 6 | #import 7 | @implementation NSObject (RNSwizzle) 8 | 9 | + (IMP)swizzleSelector:(SEL)origSelector 10 | withIMP:(IMP)newIMP { 11 | Class class = [self class]; 12 | Method origMethod = class_getInstanceMethod(class, 13 | origSelector); 14 | IMP origIMP = method_getImplementation(origMethod); 15 | 16 | if(!class_addMethod(self, origSelector, newIMP, 17 | method_getTypeEncoding(origMethod))) 18 | { 19 | method_setImplementation(origMethod, newIMP); 20 | } 21 | 22 | return origIMP; 23 | } 24 | @end 25 | -------------------------------------------------------------------------------- /ch28/Person/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch28/Person/Default-568h@2x.png -------------------------------------------------------------------------------- /ch28/Person/Person.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch28/Person/Person/Person-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Person' target in the 'Person' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iOS SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch28/Person/Person/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch28/Runtime/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iosptl/ios6ptl/26a606c50430395f8579e0e290a171994f32826f/ch28/Runtime/Default-568h@2x.png -------------------------------------------------------------------------------- /ch28/Runtime/Runtime.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ch28/Runtime/Runtime/Runtime-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Runtime' target in the 'Runtime' project 3 | // 4 | 5 | #import 6 | 7 | #ifndef __IPHONE_3_0 8 | #warning "This project uses features only available in iOS SDK 3.0 and later." 9 | #endif 10 | 11 | #ifdef __OBJC__ 12 | #import 13 | #import 14 | #endif 15 | -------------------------------------------------------------------------------- /ch28/Runtime/Runtime/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /ch28/Runtime/Runtime/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Runtime 4 | // 5 | // Created by Rob Napier on 8/22/11. 6 | // Copyright (c) 2011 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import "PrintObjectMethods.h" 12 | #import "MyMsgSend.h" 13 | #import "FastCall.h" 14 | 15 | int main(int argc, char *argv[]) 16 | { 17 | @autoreleasepool { 18 | printf("PrintObjectMethods()\n"); 19 | PrintObjectMethods(); 20 | printf("\n\nRunMyMsgSend()\n"); 21 | RunMyMsgSend(); 22 | printf("\n\nFastCall()\n"); 23 | FastCall(); 24 | return 0; //UIApplicationMain(argc, argv, nil, nil); 25 | } 26 | } 27 | --------------------------------------------------------------------------------