Home
Categories
EXPLORE
True Crime
Comedy
Society & Culture
Business
Sports
Technology
Health & Fitness
About Us
Contact Us
Copyright
© 2024 PodJoint
Podjoint Logo
US
00:00 / 00:00
Sign in

or

Don't have an account?
Sign up
Forgot password
https://is1-ssl.mzstatic.com/image/thumb/Podcasts115/v4/81/1a/f8/811af848-e8a2-a16f-7140-1390ba4f999a/mza_4037948398361091679.png/600x600bb.jpg
The iOS Dev Diary
Jay Versluis
36 episodes
1 month ago
Join your friendly next-door hacker Jay Versluis for tips and tricks on iOS and macOS Development with Xcode and Objective-C.
Show more...
Technology
RSS
All content for The iOS Dev Diary is the property of Jay Versluis and is served directly from their servers with no modification, redirects, or rehosting. The podcast is not affiliated with or endorsed by Podjoint in any way.
Join your friendly next-door hacker Jay Versluis for tips and tricks on iOS and macOS Development with Xcode and Objective-C.
Show more...
Technology
Episodes (20/36)
The iOS Dev Diary
Building a Day Counter on iOS – Part 3

In this series I’ll show you how to create a simple Day Counter on iOS, using Objective-C and Xcode 9. The idea is to set a date in a settings screen, and then see how many days have elapsed on the main screen right after launching the app.
This is a 3-Part Mini-Series:

* Part 1 is all about building the interface in Interface Builder
* Part 2 is about coding the NSDate subtraction methods, using NSCalendar and loading/saving data using NSUserDefaults
* Part 3 will introduce Key/Value Observing to update the first view controller as soon as the date is changed in the settings and deals with how to normalise an NSDate object.

You can find the full code on GitHub:

* https://github.com/versluis/Day-Counter/

Happy Hacking!
Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
7 years ago
19 minutes 59 seconds

The iOS Dev Diary
Building a Day Counter on iOS – Part 2

In this series I’ll show you how to create a simple Day Counter on iOS, using Objective-C and Xcode 9. The idea is to set a date in a settings screen, and then see how many days have elapsed on the main screen right after launching the app.
This is a 3-Part Mini-Series:

* Part 1 is all about building the interface in Interface Builder
* Part 2 is about coding the NSDate subtraction methods, using NSCalendar and loading/saving data using NSUserDefaults
* Part 3 will introduce Key/Value Observing to update the first view controller as soon as the date is changed in the settings and deals with how to normalise an NSDate object.

You can find the full code on GitHub:

* https://github.com/versluis/Day-Counter/

Happy Hacking!
Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
7 years ago
28 minutes 54 seconds

The iOS Dev Diary
Building a Day Counter on iOS – Part 1

In this series I’ll show you how to create a simple Day Counter on iOS, using Objective-C and Xcode 9. The idea is to set a date in a settings screen, and then see how many days have elapsed on the main screen right after launching the app.
This is a 3-Part Mini-Series:

* Part 1 is all about building the interface in Interface Builder
* Part 2 is about coding the NSDate subtraction methods, using NSCalendar and loading/saving data using NSUserDefaults
* Part 3 will introduce Key/Value Observing to update the first view controller as soon as the date is changed in the settings and deals with how to normalise an NSDate object.

You can find the full code on GitHub:

* https://github.com/versluis/Day-Counter/

Happy Hacking!
Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
7 years ago
19 minutes 18 seconds

The iOS Dev Diary
How to present a view controller on top of a UISplitView Controller – Part 2

The second part of this mini-series about presenting another UIViewController on top of a UISplitViewController in iOS 9 and Xcode 7.
Check out the first part here, complete with code snippets and a link to the full project.
Enjoy!
Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
9 years ago
12 minutes 44 seconds

The iOS Dev Diary
How to present a view controller on top of a UISplitView Controller – Part 1

Since its introduction in iOS 5, our good friend the UISplitView Controller has always had a really annoying habit: it has to be the root view controller in our apps. This means that it cannot be presented from any other view controller, nor can the split view controller present other view controllers.
This sucks because 99% of all apps probably need to present a user choice overlay at some point during the lifetime of an app. While some apps may get away with showing a Popover on iPad, many apps would be better off if we could present something like a proper form sheet as pictured in the image above. However, by Apple’s definition, that’s just not possible with the split view controller.
Or is it…?
In this screencast I’ll show you how to make it appear as if we could present another view controller over a UISplitView Controller. We’ll employ a bit of magic to create a great user experience, and it’s not really difficult either. The whole thing works on both iPhone and iPad with no extra work, and it works with apps in Slideover Mode too.
At the bottom of the article I’ll show you the code snippets to make this magic happen, together with a fully working demo project.
Enjoy!

 
Code Snippets
The app is based on the Xcode Master/Detail template. Aside from hooking up two buttons to present and dismiss the overlay, all methods are conveniently called in AppDelegate. We need three methods in total.
The first one will create a screenshot of whatever is currently on screen and return it as a UIImage:- (UIImage *)grabScreenshot {

// create graphics context with screen size
CGRect screenRect = [[UIScreen mainScreen] bounds];
UIGraphicsBeginImageContext(screenRect.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor blackColor] set];
CGContextFillRect(ctx, screenRect);

// grab reference to our window
UIWindow *window = [UIApplication sharedApplication].keyWindow;

// transfer content into our context
[window.layer renderInContext:ctx];
UIImage *screengrab = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return screengrab;
}I’m explaining how this method works and what it does  in this article.
The next two methods need to be public, so let’s make sure their signature appears in our AppDelegate.h file, anywhere before the @end:- (void)showOverlay;
- (void)dismissOverlay;Back in our AppDelegate.m file, here’s the first method:- (void)showOverlay {

// grab a screenshot
UIImage *screenshot = [self grabScreenshot];

// create a new view controller with it
UIViewController *underlay = [[UIViewController alloc]init];
UIImageView *background = [[UIImageView alloc]initWithImage:screenshot];
underlay.view = background;

// grab the overlay controller
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *overlay = (UINavigationController *)[storyboard instantiateViewControllerWithIdentifier:@"Overlay"];
overlay.modalPresentationStyle = UIModalPresentationFormSheet;

// swap the split view
self.splitView = (UISplitViewController *)self.window.rootViewController;
self.window.rootViewController = underlay;

// present the overlay
[underlay presentViewController:overlay animated:YES completion:nil];
}Here we grab a screenshot using our previous method and create a brand new...
Show more...
9 years ago
17 minutes 17 seconds

The iOS Dev Diary
Building a searchable UITableView in iOS 9 – Part 4

In this final part of our project we’ll finish off the app by implementing a little Key Value Observation magic. This will let us update our second UITableViewController when new search results are to be displayed.
Check out the first part here, as well as a link to my demo project.
Enjoy!
Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
9 years ago
11 minutes 17 seconds

The iOS Dev Diary
Building a searchable UITableView in iOS 9 – Part 3

In this part of our series we’ll take a look at how we actually filter the data that is displayed in the searchable table view. We do that using an NSPredicate.
Check out the first part here, as well as a link to my demo project.
Enjoy!
Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
9 years ago
7 minutes 55 seconds

The iOS Dev Diary
Building a searchable UITableView in iOS 9 – Part 2

In the previous part we’ve setup our project and the relevant graphical bits to make the app display the table view. Now it’s time to implement the UISearchController object that will be at the heart of letting users sift through our search results. We’ll do that in this part.
Check out the first part here, as well as a link to my demo project.
Enjoy!
Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
9 years ago
11 minutes 29 seconds

The iOS Dev Diary
Building a searchable UITableView in iOS 9 – Part 1

In this 4 part course I’ll show you how to build a searchable UITableView using iOS 9.1 and Xcode 7.1.

* Part 1 will talk you through how to build a UITableView with dummy data
* In Part 2 I’ll show you how to use a UISearchController to display a second table view
* In Part 3 we’ll discuss how to filter results using an NSPredicate
* And in Part 4 we’ll see how to communicate those search results to the second table view via KVO.

The whole course is about 50 minutes long, and I’ll explain details step by step. All code is Objective-C, and the the full project I’m building is available on GitHub.
Sounds interesting? Join me now and I’ll see you on the other side 😉
Demo Project
Here’s the code I’ve built during the screencast. As promised, I’ve also implemented the UISearchControllerDelegate methods – just in case you need them:

* https://github.com/versluis/Table-Search-2015

Further Reading

* https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UISearchController/
* https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UISearchControllerDelegate_Ref/index.html#//apple_ref/occ/intf/UISearchControllerDelegate
* https://developer.apple.com/library/prerelease/ios/documentation/Cocoa/Reference/Foundation/Classes/NSPredicate_Class/
* How to use Key-Value Observing in Objective-C

The Apple Class References aside, I’ve also put together written instructions on how to create this project in my next article. If you prefer written instructions, go check it out here – it covers the same steps as these videos 🙂
Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
10 years ago
23 minutes 25 seconds

The iOS Dev Diary
How to load UIStoryboards depending on screen height in iOS

A while ago I’ve written an article about how to load different storyboards depending on the screen size of an iOS device. Back in those days (2013) it was all a bit simpler than it is today, and I looked into it mainly because I loathed Auto Layout so much.
I felt it was time for an update, so here it is!
Things haven’t gotten any easier in iOS, because currently we have the following 5 screen sizes to deal with:

* iPhone 6 Plus: 736×414 @3x
* iPhone 6: 667×375 @3x
* iPhone 5s: 568×320 @2x
* iPhone 4s: 480×320 @2x
* all iPads: 1024×768 @1x / @2x

It’s very difficult to make a UI look nice on all devices with a single UIStoryboard, and in the above video I’m showing you an alternative: design a completely different storyboard for each screen size.
The upkeep of such an app will be a little more complex, but it puts us in full control of the user experience, and not some compromise that sounds good in the Apple presentation (and sucks in reality).
In principle, the following steps are involved:

* design various storyboards
* detect the current device’s screen height
* load the appropriate storyboard
* make it “key and visible”

Detecting the screen size
If your app is set to “auto-rotate” (i.e. both portrait and landscape modes, or portrait only), the screen height will detect the longer side of the screen. This is true even if the app is started in landscape mode. Determining screen height can be done like this:int screenHeight = [UIScreen mainScreen].bounds.size.height;
NSLog(@"Screen Height is %i", screenHeight);Note that if you set your app to “landscape only” mode, the height parameter will return the shorter side of the screen – in which case, bounds.size.width to determine the longer portion of the screen. Thanks to Johan Grip for bringing this to my attention!
iOS 7 compatibility
Note that the screen size is orientation dependant since iOS 8 – previous versions did not take this into a account. If you must support iOS 7 and earlier it gets a lot more complicated (and I won’t cover this here – sorry).
However, this Stack Overflow discussion may help you in that case: http://stackoverflow.com/questions/24150359/is-uiscreen-mainscreen-bounds-size-becoming-orientation-dependent-in-ios8
Loading the correct UIStoryboard
With this handy integer in place, we can build a switch statement to react according to the screen height. I’m using the following method that returns my desired storyboard in my AppDelegate implementation file.
If you’re not worried about each single size, feel free to write a shorter if/then/else type method.
 - (UIStoryboard *)grabStoryboard {

// determine screen size
int screenHeight = [UIScreen mainScreen].bounds.size.height;
UIStoryboard *storyboard;

switch (screenHeight) {

// iPhone 4s
case 480:
storyboard = [UIStoryboard storyboardWithName:@"Main-4s" bundle:nil];
break;

// iPhone 5s
case 568:
storyboard = [UIStoryboard storyboardWithName:@"Main-5s" bundle:nil];
break;

// iPhone 6
case 667:
storyboard = [UIStoryboard storyboardWithName:@"Main-6" bundle:nil];
break;

Show more...
10 years ago
19 minutes 26 seconds

The iOS Dev Diary
How to build a UICollectionView in iOS 8

In this episode I’ll show you how to build a UICollectionView from scratch in Xcode 6. The class is available for both iPhone and iPad since iOS 6. If you know how to build a UITableView then building a UICollectionView will be familiar to you.
I’ll start with a single view application, delete the ViewController class and start fresh with a UICollectionViewController. Next I’ll add a custom class for the UICollectionViewController and UICollectionViewCell and then we’ll hook it up in the storyboard.
By the end we’ll have a simple Collection View App which allows multiple selections. I’m going to use this project to build on with other features in the future.
Custom CollectionViewController Class
The template provides a few good starting points, but they need to be changed to work. First there’s the cell’s reuse identifier, conveniently added as a static at the top of the implementation file. It’s there so we only need to change this once in the file. Replace it with your own, and remember to make the same change in the storyboard:static NSString * const reuseIdentifier = @"Cell";
Next up is the viewDidLoad method. To make dequeuing cells easier, Apple have provided a registerClass method. If you don’t add your custom cell here, nothing will appear when you run the app. I found that simply commenting out the line works just as well.
The reason they provide this is so that the dequeueCellWithIdendifier method knows which custom cell class to instantiate (prior to iOS 6 it returned nil, but that check is no longer necessary).
I’m also adding multiple selections here, something that cannot be done in the storyboard.- (void)viewDidLoad {

[super viewDidLoad];

// EVIL: Register your own cell class (or comment this out)
[self.collectionView registerClass:[YourCustomCell class] forCellWithReuseIdentifier:reuseIdentifier];

// allow multiple selections
self.collectionView.allowsMultipleSelection = YES;
self.collectionView.allowsSelection = YES;

}
UICollectionViewDataSource
Much like with UITableViews, we need to provide the number of sections, as well as the number of items in each section:- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {

return 1;
}


- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {

return self.cellData.count;
}If you don’t provide the sections method, it is assumed that you have one section. Usually we’d have some data and would return a count of how many items we have rather than fixed values here.
We also need to provide what’s in each cell. Here we can add data to labels, populate UIImageViews and many other things our collection view cells may need:- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
cell.textLabel.text = [self.cellData objectAtIndex:indexPath.row];

return cell;
}
UICollectionViewCell
With UITableViews there were four styles of table cells we could choose from out of the box. A collection view cell on the other hand is completely blank, and we’re expected to provide everything inside it. This means we need a custom UICollectionViewCell class for our project.
Anything we drag into the prototype cell in the storyboard can be hooked up to that custom class and the configured in the above cellForItemAtIndexPath method. Make sure any outlets are defined in the cell’s header file.
Show more...
10 years ago
26 minutes 55 seconds

The iOS Dev Diary
How to create an Unwind Segue in iOS 8

The Unwind Segue was introduced in iOS 6 to make retrieving data from a dismissed view controller easier. A regular Segue allows us to send data from one view controller to another, but it’s not easy to bring data back if the user has changed or added details in that view controller. That’s where an software like the one at Paxata comes in.
Part 1: Code
Here’s how to create one. I’m assuming we have two view controllers at our disposal, ViewController1 has initiated a standard segue, maybe passing some data. The user then changes the data, and upon saving the data, ViewController2 is dismissed and we’re going back to ViewController1.
So in ViewController1 we’ll add a method we can use as an Unwind Segue, which we later hook up in the storyboard to the Exit object. Here’s that method:- (IBAction)backToTheStart:(UIStoryboardSegue *)segue {

// grab a reference
ViewController2 *viewController2 = segue.sourceViewController;

// access public properties from ViewController2 here
}It doesn’t matter what the method is called, just as long as it resides in ViewController1, in which you’ve imported the ViewController2.h file. What DOES matter however that our method is an IBAction and takes a UIStoryboardSegue as a parameter – otherwise Interface builder won’t recognise it, and you won’t be able to drag to the Exit object later.
Meanwhile, in ViewController2, we can make use of the following method which is often provided as a stub in new view controller classes:- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

// do any preparation here when the segue is called
}prepareForSegue is called just before the unwind segue (or any segue for that matter) is about to begin. You may want to read out a text field or any other values and add it to the object or variable that ViewController1 needs access to.
Part 2: Hooking up the Storyboard
With our code in place, control-drag from the button you’d like to use for initiating the segue. You can hook up multiple buttons to the same unwind segue.
Control-drag each button to the Exit object (in ViewController2):

As soon as the button is pressed, the unwind code in ViewController1 is executed and ViewController2 is dismissed.
Demo Project
I’ve put together a quick demo project on GitHub which is the code I’m creating the screencast above:

* https://github.com/versluis/Unwind-Segue

Further Reading

* https://developer.apple.com/library/ios/technotes/tn2298/_index.html

Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
10 years ago
19 minutes 1 second

The iOS Dev Diary
How to speak Core Data

In this episode core data I’ll talk you through the lingo of Core Data: those scary classes and expressions that you’ll frequently come across. In fact, this is the start of a new series:
Core Data Nuggets are bite-sized chunks about the framework. Dip in and out or watch them all in a row and learn how this super complicated framework works and what it has to offer.
Don’t get overwhelmed by Core Data: it wants to help – it’s just not designed with humans in mind.
As always, enjoy!

Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
11 years ago
26 minutes 51 seconds

The iOS Dev Diary
Creating an In-App Purchase in iOS 7 – Part 6: Restoring

And finally in the last part I’ll show you how to restore purchases.
Note that you must implement a restore option for non-consumable products or the review team will reject your app.
Demo Project
You can download the full source code of what I’m building in this screencast on GitHub:

* https://github.com/versluis/In-App-Purchases/

Further Reading
I’m following my earlier two articles almost to the letter, here they are for reference:

* http://pinkstone.co.uk/how-to-create-a-single-in-app-purchase-in-ios-7/
* http://pinkstone.co.uk/how-to-restore-your-single-in-app-purchase-in-ios/
* https://developer.apple.com/library/ios/technotes/tn2259/_index.html


Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
11 years ago
8 minutes 18 seconds

The iOS Dev Diary
Creating an In-App Purchase in iOS 7 – Part 5: Testing

In this part we’ll see our hard work comes to life on a real device while we’re performing our purchase in the App Store Sandbox.
Demo Project
You can download the full source code of what I’m building in this screencast on GitHub:

* https://github.com/versluis/In-App-Purchases/

Further Reading
I’m following my earlier two articles almost to the letter, here they are for reference:

* http://pinkstone.co.uk/how-to-create-a-single-in-app-purchase-in-ios-7/
* http://pinkstone.co.uk/how-to-restore-your-single-in-app-purchase-in-ios/
* https://developer.apple.com/library/ios/technotes/tn2259/_index.html


Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
11 years ago
17 minutes 18 seconds

The iOS Dev Diary
Creating an In-App Purchase in iOS 7 – Part 4: The Purchase

Learn how to make the purchase in this part of our series about in-app purchases.
Demo Project
You can download the full source code of what I’m building in this screencast on GitHub:

* https://github.com/versluis/In-App-Purchases/

Further Reading
I’m following my earlier two articles almost to the letter, here they are for reference:

* http://pinkstone.co.uk/how-to-create-a-single-in-app-purchase-in-ios-7/
* http://pinkstone.co.uk/how-to-restore-your-single-in-app-purchase-in-ios/
* https://developer.apple.com/library/ios/technotes/tn2259/_index.html


Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
11 years ago
3 minutes 33 seconds

The iOS Dev Diary
Creating an In-App Purchase in iOS 7 – Part 3: StoreKit Observer

In this part we’ll setup the observers needed to react to responses from the App Store.
Demo Project
You can download the full source code of what I’m building in this screencast on GitHub:

* https://github.com/versluis/In-App-Purchases/

Further Reading
I’m following my earlier two articles almost to the letter, here they are for reference:

* http://pinkstone.co.uk/how-to-create-a-single-in-app-purchase-in-ios-7/
* http://pinkstone.co.uk/how-to-restore-your-single-in-app-purchase-in-ios/
* https://developer.apple.com/library/ios/technotes/tn2259/_index.html


Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
11 years ago
7 minutes 53 seconds

The iOS Dev Diary
Creating an In-App Purchase in iOS 7 – Part 2: Custom Shop Class

In this part I’ll talk you through building a custom shop class and how to make “first contact” with the App Store.
Demo Project
You can download the full source code of what I’m building in this screencast on GitHub:

* https://github.com/versluis/In-App-Purchases/

Further Reading
I’m following my earlier two articles almost to the letter, here they are for reference:

* http://pinkstone.co.uk/how-to-create-a-single-in-app-purchase-in-ios-7/
* http://pinkstone.co.uk/how-to-restore-your-single-in-app-purchase-in-ios/
* https://developer.apple.com/library/ios/technotes/tn2259/_index.html


Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
11 years ago
19 minutes 2 seconds

The iOS Dev Diary
Creating an In-App Purchase in iOS 7 – Part 1: Setup

In this 7-part screencast series I’ll show you how to create an In-App Purchase in iOS 7 with Xcode 5.1.
The course will run you through everything from setting up your product in iTunes Connect, creating a custom shop class for easy re-use, making “first contact” with the App Store and how to deal with its responses. I’ll explain the overall concept in Part 1.
I’ll describe the overall concept in this part, and how to setup your your app for use with In-App purchases. We’ll setup a new App ID in Member Center and then create a product in iTunes Connect.
Demo Project
You can download the full source code of what I’m building in this screencast on GitHub:

* https://github.com/versluis/In-App-Purchases/

Further Reading
I’m following my earlier two articles almost to the letter, here they are for reference:

* http://pinkstone.co.uk/how-to-create-a-single-in-app-purchase-in-ios-7/
* http://pinkstone.co.uk/how-to-restore-your-single-in-app-purchase-in-ios/
* https://developer.apple.com/library/ios/technotes/tn2259/_index.html


Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
11 years ago
15 minutes 29 seconds

The iOS Dev Diary
How to use Popovers on iPad – Part 3: Image Picker

In this series I’ll show you how to create Popovers on iPad. They’re fairly easy to create once you get the hang of the inner workings of the UIPopoverController.
I’ll show you how to create basic Popover in code and in your Storyboard, and we’ll discuss how you can retrieve data from a Popover when it’s dismissed. We’ll do this with a simple UIDatePicker. In the last video I’ll demonstrate how you can pick images from the camera roll using the UImagePickerController with a Popover – which is how you’re meant to do it on iPad.
The series contains three videos in total:

* Part 1 deals with the initial code and class etup
* Part 2 deals with setting up the UIStoryboard and connect our code to it
* and in Part 3 we’ll implement a UIImagePickerController to demonstrate a use case

Enjoy!
Get the code for this project on GitHub

* https://github.com/versluis/Popovers


Watch the full course in one convenient playlist:Catch this episode on my iOS Dev Diary Podcast:
Show more...
11 years ago
10 minutes 38 seconds

The iOS Dev Diary
Join your friendly next-door hacker Jay Versluis for tips and tricks on iOS and macOS Development with Xcode and Objective-C.