Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
lord funk
Feb 16, 2004

Having fun with word recognition and speech synthesis. I made the app speak back the recognized text for confirmation, and now it's just talking to itself.

Adbot
ADBOT LOVES YOU

Doh004
Apr 22, 2007

Mmmmm Donuts...
Video with sound or it didn't happen :colbert:

lord funk
Feb 16, 2004

Doh004 posted:

Video with sound or it didn't happen :colbert:

Fine. Actually had to break it again to get this, and even then it got camera shy. It does really well recognizing the numbers, and I have it catching multiple ways of saying numbers like '109.'

https://www.youtube.com/watch?v=Bfr6Nkblibc

Blakles
Mar 10, 2008

I have lived a great deal among grown-ups. I have seen them intimately, close at hand. And that hasnt much improved my opinion of them.
I'm still new to developing for iOS and can't figure this out: I added a UITableViewController to my storyboard and styled everything the way I needed it (grouped with 3 sections, styled the cells, labels, etc). Now how do I go about adding functionality? I thought I would add a custom class, but apparently when you do that you have to programmatically design the table all over again. I was hoping to keep that in the interface builder so that I can use auto-layout.

Is there a way to add your functionality to a table view controller without a custom class? (functionality like toggling a switch, tapping a row to pop up a UIPickerView, toggling selection between rows)

Doc Block
Apr 15, 2003
Fun Shoe
You should still be able to have a custom class and have all your Interface Builder stuff.

Basically, you make a custom UITableViewController (or whatever) subclass. Then, in Interface Builder, you select the table view controller you want to use and change its class to your custom subclass.


(I used a regular view controller for this screenshot, but it works the same way for table view controllers)

So you'd type in "MyTableViewControllerSubclass" or whatever and press the Return key. (Pressing the Return/Enter key is important, or else it won't take)

After that, everything should work fine.

Simulated
Sep 28, 2001
Lowtax giveth, and Lowtax taketh away.
College Slice
Make sure your custom class builds and everything, then hit Assistant view in Interface Builder. You may need to adjust the drop downs but your class header file should be one of the automatic options.

Now Control drag from IB to your header area and you can add Outlets (a named property hooked to a control) and Actions (event handlers).

When your controller is created at runtime, the controls in the storyboard/XIB are hooked up as specified. If you want to do any customizations, you can handle awakeFromNib. Be aware that if you alloc init a controller, it won't necessarily find the XIB if you did it in a storyboard, there is an API for getting a view controller instance out of a storyboard.


There is a whole view controller programming guide on Apple dev, it should cover most of this stuff.

Froist
Jun 6, 2004

I'm having some crazy performance problems in a thinly wrapped UIWebView. I'm not sure this is really the right place for it but I've boiled down the web code to the absolute basics and it still happens, so my gut feeling is it's something to do with Safari/iOS rather than JQuery.

Basically I need to scrape some data from a web page, so I send off an AJAX request to get the data, then run a class selector on the result. This is the entirety of the javascript code since I stripped it down to troubleshoot:

code:
$.get(theUrl, function(data){
	var doc = $(data);
	$('.someclass', doc).each(function(i, elem){
		// Do nothing
	});
});
For one of my test cases "someclass" matches around 1400 times. I realise that could be considered a large data set, however with the above null processing going on the loop finishes within about a second (on my iPhone 5) but the CPU is pegged at >100% for the next 45 seconds.

Running a Time Profiler in Instruments suggests it's all to do with thread management:


But when I dig deeper, it seems that every one of these threads is running some kind of SQL query within CFNetwork:


.. Has anyone got the slightest idea what might be going on here? Even with all my real processing in place of the "Do nothing" comment, the results come through reasonably quickly (1-2 seconds) but the CPU is still tied up for nearly a minute after, lagging the rest of the UI.

Dr Monkeysee
Oct 11, 2002

just a fox like a hundred thousand others
Nap Ghost

pokeyman posted:

Glad you got something going. I think your hunch is right, it shouldn't be that hard at all. If you're feeling charitable, file a couple radars: one for the table-in-nav-in-tab not automatically adjusting insets bug and one for the first-two-tabs-only bug. Though I understand if you'd rather not bother!

I might. I'd have to sit down and get a proper, simple repro case before filing anything so it's gonna be up to my motivation to actually do that.

Doctor w-rw-rw-
Jun 24, 2008

Froist posted:

Has anyone got the slightest idea what might be going on here? Even with all my real processing in place of the "Do nothing" comment, the results come through reasonably quickly (1-2 seconds) but the CPU is still tied up for nearly a minute after, lagging the rest of the UI.

Run this and tell us whether you still get it.
Objective-C code:
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
[[NSURLCache sharedURLCache] setMemoryCapacity:0];
Shot in the dark based on googling and seeing _CFURLCache::ExecuteSQLSelectAndCreateResponse in https://discussions.apple.com/message/9674706#9674706 and then finding http://lists.apple.com/archives/macnetworkprog/2012/May/msg00024.html and its two follow up messages.

So yeah, try turning off the cache.

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

Froist posted:

code:
$.get(theUrl, function(data){
	var doc = $(data);
	$('.someclass', doc).each(function(i, elem){
		// Do nothing
	});
});

When you have jQuery create a document the browser will request all the resources (images, scripts, css, etc.) mentioned in the newly-created DOM elements. That's where the requests come from; why they spin inside NSURLCache for a minute is beyond me.

Froist
Jun 6, 2004

Doctor w-rw-rw- posted:

Run this and tell us whether you still get it.
Objective-C code:
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
[[NSURLCache sharedURLCache] setMemoryCapacity:0];
Shot in the dark based on googling and seeing _CFURLCache::ExecuteSQLSelectAndCreateResponse in https://discussions.apple.com/message/9674706#9674706 and then finding http://lists.apple.com/archives/macnetworkprog/2012/May/msg00024.html and its two follow up messages.

So yeah, try turning off the cache.

I tried this and it reduced the churn significantly but it's still there; now down to about 15 seconds.


pokeyman posted:

When you have jQuery create a document the browser will request all the resources (images, scripts, css, etc.) mentioned in the newly-created DOM elements. That's where the requests come from; why they spin inside NSURLCache for a minute is beyond me.

This made sense when I read it (as the page I'm trying to scrape has a load of images but I don't really care about them, only the data) but doesn't seem to be the case. I put a simple HTML page on my local Apache server referencing a load of images etc, then pointed the app at that and watched Apache's access log - only the html page was requested, never any of the referenced images/css/scripts. I take it back, you're (mostly!) correct. I'd only added relative paths in my test page so the WebView was trying to request them from the iPhone filesystem rather than the web server. With absolute HTTP paths, it makes requests for all the images but not scripts or stylesheets.

I guess there's no way to prevent this behaviour without stripping out the image tags with a regex?

Froist fucked around with this message at 15:00 on Dec 6, 2013

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.
I only tested an image tag, my bad on assuming script and link tags would follow.

Best way to avoid it would be to include a separate HTML parser. Could be javascript, could be in objc-land.

Doh004
Apr 22, 2007

Mmmmm Donuts...

lord funk posted:

Fine. Actually had to break it again to get this, and even then it got camera shy. It does really well recognizing the numbers, and I have it catching multiple ways of saying numbers like '109.'

https://www.youtube.com/watch?v=Bfr6Nkblibc

Next stop, it'll become self aware :ohdear:

evilmonkeh
Apr 18, 2004
meh
I'm working on an iOS app, and I'm trying to use a Storyboard to achieve the following.

Each scene will have the same view controller as the background (a video feed from the camera). I'd like to put some buttons on top of the video feed that do stuff like transition to a view with a settings menu that also appears on top of the video. How can I achieve this with one 'base' view controller that remains throughout?

Glimm
Jul 27, 2005

Time is only gonna pass you by

evilmonkeh posted:

I'm working on an iOS app, and I'm trying to use a Storyboard to achieve the following.

Each scene will have the same view controller as the background (a video feed from the camera). I'd like to put some buttons on top of the video feed that do stuff like transition to a view with a settings menu that also appears on top of the video. How can I achieve this with one 'base' view controller that remains throughout?

I think you can use a container view with a transparent background here, but I haven't tried doing something like that.

Doc Block
Apr 15, 2003
Fun Shoe
I have a networking code question.

I'm making a two-player game (real time, not turn based), and know how to implement pretty much every part of it except the multiplayer stuff. Connecting the two players' devices is easy using iOS 7's multipeer framework, but I only have a very high level understanding of what to do beyond that. Like, I understand that I need to encapsulate what's happening on one device and send it to the other as quickly and as often as possible, but I'm not sure about the best way to implement that.

Mainly, I'm just wondering if this is the right general idea:
Put everything in packed C structs (so the memory layout is the same on 32-bit and 64-bit devices), with the first byte or whatever determining what type of struct it is (object state update, object creation, game state update, whatever). When a new struct comes in, pull all the data out and create some sort of data object that gets added to a queue, which the game logic will then process when it gets the chance.

Essentially, passing messages for the things that have changed so I'm not wasting bandwidth on redundant data, with the downside of having to have messages for every little thing (player fired a missile, missile moved, missile hit, player moved, etc.) and a giant switch statement to handle all the message types.

Ideas? Suggestions?

I'm hoping that I won't have to do something like make the game in Unity just to get non-retarded networking code.

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.
You've got something that sounds workable, and more importantly not too difficult to try. Give it a go and see how it works.

My only suggestion is go more structured than structs. You have many options: JSON, plists, NSCoding, protobufs, probably lots I'm forgetting. You don't want to put structs on the wire.

Doc Block
Apr 15, 2003
Fun Shoe
Yeah, I'm just worried about encoding/decoding time, plus a packed struct is gonna need less bandwidth than the same data encoded with JSON or whatever.

Gonna see if I can bang out a simple demo this weekend and see how it goes. Thanks.

Doc Block fucked around with this message at 22:28 on Dec 6, 2013

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.
Premature optimization. Networks are slow as gently caress. Unless you're doing something ridiculous, encoding/decoding time will not be a factor. Not to mention it's trivial to parallelize.

Dr Monkeysee
Oct 11, 2002

just a fox like a hundred thousand others
Nap Ghost
Seriously that a million times. Is your app connecting to the network for anything? Then there's virtually nothing you can do in code that will come anywhere close to being a performance bottleneck compared to network latency.

rjmccall
Sep 7, 2007

no worries friend
Fun Shoe
I agree that encoding time is not that important for most applications. Transmission time / bandwidth is worth optimizing for, though, depending on how much you're sending and how often. A textual wire format — particularly one where you're re-encoding property names repeatedly instead of hard-coding a particular sequence — can easily require an order of magnitude more traffic, even with compression.

This is an internationalization issue as well, because a lot of countries have really bad / stingy networks, especially for what is probably an international connection to your servers.

So it's important, but it's also something you can come back to and improve easily later on.

Doc Block
Apr 15, 2003
Fun Shoe
It's just peer-to-peer multiplayer via iOS 7's multipeer framework, with one of the devices acting as the server, so I'd like it to be as lag-free as possible.

In most cases both devices will probably be on the same wifi network.

Simulated
Sep 28, 2001
Lowtax giveth, and Lowtax taketh away.
College Slice
Don't assume the packets are valid. They may be malicious or even corrupted by faulty hardware. Build in some sort of versioning (another good reason to be careful about just ripping packed structs onto the wire) or prohibit different versions from playing against each other.

You are talking about a fairly difficult problem, depending on what kind of game it is, how sensitive to latency it is, etc. You can use TCP, but a lightly loaded wifi network can stall out trying to retransmit packets you stopped caring about 700ms ago depending on the type of game. With UDP, poo poo can arrive out of order (or some may go missing). You'll need to figure out how far out of sync things can get before you give up, but not too soon or minor hiccups will kill games.

You can also have minor variations add up over time, eg slight variations in timers leading to accumulated floating point errors or other insanity. Unlikely but you may not be able to assume.

Again depending on game type, you may need to handle undoing operations. Imagine we are both building a tower in a TD game and we arrive at the same spot at about the same time and tap Build. But my packet is delayed. Now both systems think their user built the tower but a packet arrives later saying the other person took the slot. Who wins? How do I communicate that to the other peer? In my case, since my packet was delayed by 1 second, my screen has visually started showing me building the tower, even though your algorithm decided you "won". In fact, do both systems need to agree on what game time is? What if they diverge?


Depending on the type of game none of this may matter very much, or you may be walking into the 8 fallacies of distributed computing at 100mph.

Simulated
Sep 28, 2001
Lowtax giveth, and Lowtax taketh away.
College Slice
Speak of the devil, much smarter than myself Mr Mike Ash covers network protocols this week: http://www.mikeash.com/pyblog/friday-qa-2013-12-06-network-protocol-design.html

Doc Block
Apr 15, 2003
Fun Shoe
To make things more clear, this is a 2 player game where the objective is to shoot down the other guy's spaceship. Shouldn't be more than a few dozen objects in play at any given time.

My current thinking is something along the lines of:

- The device that starts the game is the Host Device (aka the game server) and is Player 1, the second device is the client and Player 2. The host device is The Great Decider and has final say on everything. They do a little handshake at first, make sure they're using the same protocol version, etc.
- Host device sends out synchronization packets periodically, which contain all game and object state. The exact rate is To Be Determined, a few times a second if possible.
- Client device sends all player 2 input to the host, but acts on it immediately without waiting for a host response.
- Host device sends update packets to client device when necessary (such as when player 1 does something, the game ends, etc.).
- While waiting for updates from the host device, the client device keeps going based off the last data received, i.e. the other player's ship keeps moving along its last known trajectory, etc.

This is all done via an Efficient But Totally Not C Structs Binary Protocol.

Ideas? Suggestions?

Doctor w-rw-rw-
Jun 24, 2008
I'm not a game developer, so this is just me spitballing, but...

IMO, try Lamport timestamps to make sure you have a canonical ordering of events, and refer to this for the logic: http://www.gabrielgambetta.com/fpm1.html. I just stumbled on that while looking for relevant stuff - hopefully it's informative.

Synchronizing on a keyframe and using prediction in between seems like a reasonable idea (roughly what you laid out). One idea that comes to mind is force keyframes (synchronization points) to be reliably delivered, and use a combination of prediction and datagrams (not-guaranteed packets, i.e. UDP) for the stuff in between. Maybe use protocol buffers for serialization format.

Also, off the top of my head, League of Legends uses ENet for part of its networking layer, but I don't know anything beyond that.

Hope these wild ideas help out.

duck monster
Dec 15, 2004

Hughlander posted:

Oh. :effort: Of course this is probably going to lead me to swizzle the implementation to one that does just call [retain] and gently caress off NoCopy/freeWhenDone for performance reasons.

You aint touched the wild side till you've swizzled at least one alloc/dealloc implementation.

(I've had to actually tried to do this on at least two occasions, once when I was trying to make my own hare-brained garbage collector back in the IOS 3 days, and another when trying to make ObjC use the strange custom malloc in PJSip's library. Both times a failure :sigh: (The garbage collector idea was swiftly abandoned, although I did end up with a drat useful memory alloc debugging tool I made called 'swizzle stick', now utterly redundant due to arc, and the pjsip thing was abandoned because it turned out I could just get pjsip to use the system default malloc via a few strategic #defines

duck monster
Dec 15, 2004

lord funk posted:

Having fun with word recognition and speech synthesis. I made the app speak back the recognized text for confirmation, and now it's just talking to itself.

Pocket Sphinx? I just finished a contract using that for an app that does voice recognition stuff for kids with speech difficulties for some researcher.

It works disturbingly well, but there was a good 6-7 months of fiddlefucking around with that.

lord funk
Feb 16, 2004

duck monster posted:

Pocket Sphinx? I just finished a contract using that for an app that does voice recognition stuff for kids with speech difficulties for some researcher.

It works disturbingly well, but there was a good 6-7 months of fiddlefucking around with that.

Yep, and it is disturbingly good. It's ability to reject ambient sound astonishes me. I'm constantly listening to music while I work, and it just ignores it. Then I speak and it's on point.

lord funk
Feb 16, 2004

A friendly reminder that you should never request your application's window tintColor to get your application's window tintColor. It changes its value to gray whenever popovers appear.

wakachamo
Dec 3, 2013

Doc Block posted:

To make things more clear, this is a 2 player game where the objective is to shoot down the other guy's spaceship. Shouldn't be more than a few dozen objects in play at any given time.

My current thinking is something along the lines of:

- The device that starts the game is the Host Device (aka the game server) and is Player 1, the second device is the client and Player 2. The host device is The Great Decider and has final say on everything. They do a little handshake at first, make sure they're using the same protocol version, etc.
- Host device sends out synchronization packets periodically, which contain all game and object state. The exact rate is To Be Determined, a few times a second if possible.
- Client device sends all player 2 input to the host, but acts on it immediately without waiting for a host response.
- Host device sends update packets to client device when necessary (such as when player 1 does something, the game ends, etc.).
- While waiting for updates from the host device, the client device keeps going based off the last data received, i.e. the other player's ship keeps moving along its last known trajectory, etc.

This is all done via an Efficient But Totally Not C Structs Binary Protocol.

Ideas? Suggestions?

You should be fine with latency using Multipeer unless you're targeting slightly older devices (a set to which the iPhone 4 is sadly transitioning), and like some other folks on this thread I can confirm there's no need to worry about using anything at a much higher level than C structs for your data. Objects compliant with NSCoding work great - I'm a little new to game dev as well (currently writing a pseudo-real-time game for iOS) and this seems to be working fine so far.

Since you're using the Multipeer framework, you could also experiment with interweaving reliable and unreliable packets of the same type of data, just to guarantee accuracy every once in a while without having to worry too much about it all the time.

Also, on the topic of multipeer - mind if I ask you why you're not going with the Game Center/Game Kit API to do this instead? Is it because the sandboxing servers suck so horribly bad it's impossible to get a reliable connection between two devices even if they're right next to each other because for some rear end-backward reason the nearby device discovery barely works so I end up having to fall back to online connections, which always drop immediately?

Sorry, just felt like voicing that frustration. Apparently Apple isn't dedicating enough time/resources to make their sandbox servers as reliable as the production ones, which makes testing a huge hassle and rewriting a tiresome obligation.

Doc Block
Apr 15, 2003
Fun Shoe
The old GameKit peer-to-peer over bluetooth from the iOS 3 days is deprecated in iOS 7. I settled on the multipeer connection framework because, after discovering that the old GameKit peer-to-peer stuff was deprecated, I did a Google search for "ios peer to peer" and the multipeer connection framework came up. Plus, it makes setting up local peer-to-peer connections ridiculously easy, and will automatically choose the fastest method based on what the devices support (Bluetooth, Wi-Fi via a router, or Wi-Fi direct), and so far seems pretty reliable.

I wasn't aware Game Center could be used for matchmaking real-time multiplayer games. Hmm...

wakachamo
Dec 3, 2013

Doc Block posted:

The old GameKit peer-to-peer over bluetooth from the iOS 3 days is deprecated in iOS 7. I settled on the multipeer connection framework because, after discovering that the old GameKit peer-to-peer stuff was deprecated, I did a Google search for "ios peer to peer" and the multipeer connection framework came up. Plus, it makes setting up local peer-to-peer connections ridiculously easy, and will automatically choose the fastest method based on what the devices support (Bluetooth, Wi-Fi via a router, or Wi-Fi direct), and so far seems pretty reliable.

I wasn't aware Game Center could be used for matchmaking real-time multiplayer games. Hmm...

Game Kit does still support peer-to-peer discovery over Bluetooth+Wi-Fi combo; they just reworked the API a little bit at some stage which is why some of the old stuff is deprecated, as far as I can remember. Plus, if you use their standard UI that can offload a lot of the work (just as in Multipeer) and you've got a real-time match set up in minutes. The cool add-on is that if you want, by using the standard UI you don't even have to distinguish between local or online multiplayer - the same view controller supports looking for both people online as well as devices that are nearby, and it just adds them to the match. Once you've got the match set up, the methods for sending and receiving data are actually pretty much identical to the ones in Multipeer (sendData:toPlayers:withDataMode:error:). In fact, I'm pretty sure there was a lot of shared work between development of the two things, since some of the classes and methods are just so similar to each other.

Once again, though, Game Center's sandbox servers make things a little difficult sometimes, at least in my personal experience. Your mileage may differ, though. :)

Doh004
Apr 22, 2007

Mmmmm Donuts...

lord funk posted:

A friendly reminder that you should never request your application's window tintColor to get your application's window tintColor. It changes its value to gray whenever popovers appear.

Wwwwhhhhyyyy?

lord funk
Feb 16, 2004

Doh004 posted:

Wwwwhhhhyyyy?

It's because they want to give you the exciting ability to make your custom views grayscale along with all half the other UI elements when a popover dims the screen.

DreadCthulhu
Sep 17, 2008

What the fuck is up, Denny's?!
This is going to be a weird question, but do bear with me. Let's say you're hiring a mobile/iOS developer to single-handedly take over the iOS portion of your product (very tiny at this point, not Facebook), maybe expand to other mobile platforms eventually. What exactly do you look for outside the generic programmer basics?

As in, I know that given enough time, any capable developer can learn something, but I also don't have 6-12 for someone to get fully trained in a platform (I think that was the Coding Horror ballpark estimate of how long it usually takes for full-time people). I need them to start contributing right away, and in fact I need them to carry forward the torch and make sure that the product is as lean, simple and fast (iteration-wise) as it can be, something that a generalist hack like me who has 13 other responsibilities simply cannot achieve. If I was hiring someone to take over our backend, I'd have a very clear idea in mind of the skillsets I'm looking for and what their responsibilities would be. With iOS, I'm not sure. I've put a couple of apps out there that did OK, but there's giant difference between that and someone who does this full time and is obsessed with crafting the most impressive mobile apps.

Any thoughts from you savvy gentlemen?

DreadCthulhu fucked around with this message at 02:07 on Dec 9, 2013

carry on then
Jul 10, 2010

by VideoGames

(and can't post for 10 years!)

You want to hire an iOS developer. Just about anyone else would need some time to learn (good) iOS programming. Maybe take Android or Mac development experience as a second best but just about anyone without direct iOS skills will need time to figure things out, at least above and beyond the time it would take them to learn your code base.

Doh004
Apr 22, 2007

Mmmmm Donuts...

DreadCthulhu posted:

This is going to be a weird question, but do bear with me. Let's say you're hiring a mobile/iOS developer to single-handedly take over the iOS portion of your product (very tiny at this point, not Facebook), maybe expand to other mobile platforms eventually. What exactly do you look for outside the generic programmer basics?

As in, I know that given enough time, any capable developer can learn something, but I also don't have 6-12 for someone to get fully trained in a platform (I think that was the Coding Horror ballpark estimate of how long it usually takes for full-time people). I need them to start contributing right away, and in fact I need them to carry forward the torch and make sure that the product is as lean, simple and fast (iteration-wise) as it can be, something that a generalist hack like me who has 13 other responsibilities simply cannot achieve. If I was hiring someone to take over our backend, I'd have a very clear idea in mind of the skillsets I'm looking for and what their responsibilities would be. With iOS, I'm not sure. I've put a couple of apps out there that did OK, but there's giant difference between that and someone who does this full time and is obsessed with crafting the most impressive mobile apps.

Any thoughts from you savvy gentlemen?

I'm not sure what to offer for advice but I can relate:

I started at my company doing C# and MSSQL work (mvc.net so web stuff) and did that for 3 months. Our lone iOS guy ended up leaving and I offered to take the torch and took a prototype of an iOS app and was able to release our iPhone app in 3 months. The iPad version came 3 months later (while also expanding on the iPhone app).

There's A LOT in the app that I wish I hadn't done but I didn't know any better and I was in a rush to get something working out there. Now that I'm a year plus in I've replaced all but ~10% of the original codebase and am happier.

That said, find someone who has experience doing iOS work - I was completely over my head and owed a lot of my success to this thread as you guys have helped me out greatly. There's just so much different from your standard (non mobile) developer that this has going for it. At least that's my take on it.

Volmarias
Dec 31, 2002

EMAIL... THE INTERNET... SEARCH ENGINES...
Oh, hey, this is actually a good time for me to pop my head in, since I'm actually going to be headed in the same direction.

I've got a plethora of Android experience (I've been developing for Android since the pre 1.0 SDK), and I'm moving to an iOS team at a new job. What I'd like to know is whether there are any resources for helping someone like myself transition from Android developer to iOS developer? It looks like there are a great many blag posts about the differences between iOS and Android, and which one is "Better", and a ton of "Android for iOS devs" tutorials since that's the way the market moved, but there doesn't seem to be a lot of help going the other way.

I'm hoping for something like this, which was extremely helpful when I needed to pick up C++ after not using it for several years. The book was written as if I were a literate adult who has done professional development in the past, understood what OO was already, and could actually map concepts. Unfortunately, I'm concerned that I'll either have to pick up an "Objective C for people who have never done mobile development, here let me explain to you how your phone actually works its really a tiny computer you see and-" book, or just figure it out on myself as I go along.

Adbot
ADBOT LOVES YOU

Simulated
Sep 28, 2001
Lowtax giveth, and Lowtax taketh away.
College Slice

Volmarias posted:

Oh, hey, this is actually a good time for me to pop my head in, since I'm actually going to be headed in the same direction.

I've got a plethora of Android experience (I've been developing for Android since the pre 1.0 SDK), and I'm moving to an iOS team at a new job. What I'd like to know is whether there are any resources for helping someone like myself transition from Android developer to iOS developer? It looks like there are a great many blag posts about the differences between iOS and Android, and which one is "Better", and a ton of "Android for iOS devs" tutorials since that's the way the market moved, but there doesn't seem to be a lot of help going the other way.

I'm hoping for something like this, which was extremely helpful when I needed to pick up C++ after not using it for several years. The book was written as if I were a literate adult who has done professional development in the past, understood what OO was already, and could actually map concepts. Unfortunately, I'm concerned that I'll either have to pick up an "Objective C for people who have never done mobile development, here let me explain to you how your phone actually works its really a tiny computer you see and-" book, or just figure it out on myself as I go along.

Honestly, CS193P (or whatever they are calling it these days) is the best one I've seen. I was always a MS guy, most recently doing C#. I skipped some of the initial session or two, but I went ahead and watched the MVC one to refresh my theory. The rest just dig right into doing iOS development, presuming you understand C-ish languages, OO concepts, etc. I didn't do the exercises, but I did somewhat follow along with the in-session code tasks.

The course has been updated several times since then, I did this back in 2009 or 2010 I think. (You young whipper-snappers, what with your ARC and whatnot. In my day we did manual retain/release and malloc'd both ways in the snow :corsair: ).

Simulated fucked around with this message at 20:10 on Dec 9, 2013

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply