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
Funso Banjo
Dec 22, 2003

How much are you guys seeing per app sold?

On a 69pence, 99c app, how much do you actually get in your bank account?

I know I should get 70% of any sales, but I assume Apple take taxes from our 70% too. So from that 69p (I'm in the UK) I assume rather than the 48p (70%) I'll more likely receive somewhere in the region of 38p (knocking our 20% VAT tax off, vast majority of my apps sales are UK sales).

Am I thinking along the right lines here? Anyone actually know?

Adbot
ADBOT LOVES YOU

lord funk
Feb 16, 2004

Funso Banjo posted:

How much are you guys seeing per app sold?

My general rule is that you will bank 50% of the selling price after taxes.

Also: updated device motion graphic (now with depth!).
https://rapidshare.com/files/3471396788/ipad-device-motion-1.zip

stray
Jun 28, 2005

"It's a jet pack, Michael. What could possibly go wrong?"
It's easy enough to build a table-view-with-nav-controller app that will read a dictionary of things (with several attributes for each) from a plist file, but is there a decent tutorial on how to pull one specific record from a plist? I'm looking to build an object that I can initialize with one parameter (e.g., initWithName:foo) which will then load up the complete record for the item in the plist whose name attribute equals foo.

stray fucked around with this message at 20:28 on Oct 8, 2011

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

stray posted:

It's easy enough to build a table-view-with-nav-controller app that will read a dictionary of things (with several attributes for each) from a plist file, but is there a decent tutorial on how to pull one specific record from a plist? I'm looking to build an object that I can initialize with one parameter (e.g., initWithName:foo) which will then load up the complete record for the item in the plist whose name attribute equals foo.

It sounds like you need to read in the plist and search for the item you want. So either grab it by key if you know the key, or loop through the dictionary (bit of a waste of a dictionary) checking the name of each item until you find it.

stray
Jun 28, 2005

"It's a jet pack, Michael. What could possibly go wrong?"

pokeyman posted:

It sounds like you need to read in the plist and search for the item you want. So either grab it by key if you know the key, or loop through the dictionary (bit of a waste of a dictionary) checking the name of each item until you find it.
Thanks. Does anyone know of a tutorial that might show me how to do that?

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

stray posted:

Thanks. Does anyone know of a tutorial that might show me how to do that?

code:
- (id)initWithName:(NSString *)name
{
    self = [super init];
    if (self) {
        NSDictionary *plist = [NSDictionary dictionaryWithContentsOfFile:@"something.plist"];
        NSDictionary *dictionaryRepresentation = [plist objectForKey:name];
        // set ivars based on dictionary representation
    }
    return self;
}
Assumes your plist is a dictionary whose keys are the name you're looking for and whose values are a dictionary with keys/values you care about.

I'm curious what part of this is tripping you up. Are you confused about loading a property list file? Retrieving values from a dictionary? Both?

cancelope
Sep 23, 2010

The cops want to search the train
What is the ideal Mac to get for developing iPad (& iPhone) applications, especially if I want to keep my options open for developing games? Does the Intel graphics device on the lowest model Mac Mini support the shader model on the iPad 2? Or would I be better served by a MacBook Air or the next-step Mac Mini? I already have a netbook and in my personal line of business I know I'm better served by a Windows portable, but I'm open to options.

nolen
Apr 4, 2004

butts.
Does anyone have experience with iAd?

My app went live today but is still showing the Test Ad banners. iTunes Connect says iAd is enabled and the iAd Network section says my app's Ad Status is "Live Ads".

Is there another step I need to fulfill to get this working properly or will it iron itself out on its own?

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

asaf posted:

What is the ideal Mac to get for developing iPad (& iPhone) applications, especially if I want to keep my options open for developing games? Does the Intel graphics device on the lowest model Mac Mini support the shader model on the iPad 2? Or would I be better served by a MacBook Air or the next-step Mac Mini? I already have a netbook and in my personal line of business I know I'm better served by a Windows portable, but I'm open to options.

I'm very happy with my late 2010 MacBook Air for development, though Xcode will occasionally beachball opening a big file. As far as I know, any Mac you can buy has no problem simulating OpenGL ES 2. And keep in mind you can run Windows in a VM or dual-boot.

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

nolen posted:

Does anyone have experience with iAd?

My app went live today but is still showing the Test Ad banners. iTunes Connect says iAd is enabled and the iAd Network section says my app's Ad Status is "Live Ads".

Is there another step I need to fulfill to get this working properly or will it iron itself out on its own?

I've no direct experience but I have heard of iAd taking a couple weeks to start doing something useful. Kind of makes for a poo poo user experience (more so than actual ads would be, anyway).

kitten smoothie
Dec 29, 2001

pokeyman posted:

I've no direct experience but I have heard of iAd taking a couple weeks to start doing something useful. Kind of makes for a poo poo user experience (more so than actual ads would be, anyway).

I wouldn't be surprised, I also recently read stuff about in-app purchase items taking some period of time to become buyable even after they show up as active in iTC.

nolen
Apr 4, 2004

butts.
Well poo poo. I'll double-check with Apple Developer Support tomorrow. I wouldn't be surprised if you guys were right though.

chiyosdad
May 5, 2004

"I wish I were a bird!"
Is it possible to do app development for iphone/ipad on something other than a mac computer?

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

chiyosdad posted:

Is it possible to do app development for iphone/ipad on something other than a mac computer?

You need Mac OS X. If you can get that on a non-Macintosh computer, you'll likely do fine. I have heard of hackintoshes losing their ability to e.g. run the iOS Simulator after an update, though, so don't rely on it. (i.e. if you're making money off of app development, spend a bit of it getting a proper Mac.)

Doc Block
Apr 15, 2003
Fun Shoe

chiyosdad posted:

Is it possible to do app development for iphone/ipad on something other than a mac computer?

Yes and no. Uploading your binary requires a Mac.

There are some engines/toolsets that will let you do development on Windows, such as UDK, but you still need a Mac to do the final upload.

Honestly, though, just get a Mac.

Any of the Macs in Apple's currently lineup are more than adequate for iOS development. So are most of the used Intel Macs, with the exception of the earliest ones that only had Core Solo or Core Duo procs, since those can't run Lion. (If you go the used Mac route, also be sure to avoid Macs with the Intel GMA 950 GPU, though the current Intel HD 3000 GPU is fine for iOS stuff)

My Mac (for both iOS dev and my main computer) is an early 2009 Mac Mini (with the old style case) with a 2.0GHZ Core 2 Duo and integrated nVidia 9400M graphics, and it runs circles around the iPhone 4 and iPad 2.

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

Doc Block posted:

Yes and no. Uploading your binary requires a Mac.

Where can I read more about this? (I believe you, I'm just curious.)

Small White Dragon
Nov 23, 2007

No relation.
I think uploading is only an issue for large apps. Small apps you can do via the Web interface.

double sulk
Jul 2, 2010

I've been working my way through Programming in Objective-C and it's been mostly understandable so far, but I've been trying to keep pushing through the book even if I don't completely understand something. I figure that over time I'll see enough uses of various things that it'll become ingrained in my head, much like actual languages. Does that make sense? Also, what is a good book to pick up for iOS development itself? There's one I saw by the same publisher which has a new edition coming out next month, but if anyone has any suggestions it'd be appreciated.

Doc Block
Apr 15, 2003
Fun Shoe
Beginning iPhone Development (something like that) is pretty good.

Also, unless whatever book you're reading says not to worry and that it'll explain later, make sure you understand the material.

Doc Block
Apr 15, 2003
Fun Shoe

pokeyman posted:

Where can I read more about this? (I believe you, I'm just curious.)

The UDK site specifically states that you'll need a Mac to upload your app.

I've always just used Apple's app uploader utility; I wasn't aware you could still upload small apps via the web interface.

Bob Morales
Aug 18, 2006


Just wear the fucking mask, Bob

I don't care how many people I probably infected with COVID-19 while refusing to wear a mask, my comfort is far more important than the health and safety of everyone around me!

Sulk posted:

Also, what is a good book to pick up for iOS development itself? There's one I saw by the same publisher which has a new edition coming out next month, but if anyone has any suggestions it'd be appreciated.

Most of the beginning books are basically "Here's how you make a button", "Here's how you make a browser window", "Here's how you tell if the device is being tilted". And nothing to tie it all together or actually create anything useful.

The Big Nerd Ranch book is a good one to start with, they at least ask you questions about what you just learned and prod you a little to investigate stuff in your own.

stray
Jun 28, 2005

"It's a jet pack, Michael. What could possibly go wrong?"
The Big Nerd Ranch book is indeed excellent. Here's a question on something I don't quite get in it, though. Here's what the BNR book says:

quote:

Up to this point, our examples of ownership have been ownership by creation. When you want to own an object that you didn’t create, you must retain it. For example, if an object has instance variables that point to other objects, that object should retain them. You can retain an object pointed to by an instance variable in the setter method for that variable.

Let’s look at the instance variables of the Possession. Every instance of Possession has three instance variables that are pointers to other objects (possessionName, serialNumber, and dateCreated). Right now, the setter methods in Possession simply assign the incoming value to the instance variable:
code:
- (void)setPossessionName:(NSString *)str
{
    possessionName = str;
}
Not good enough. If we give an NSString to a Possession for its possessionName, and the Possession doesn’t retain it, then when we release the string, it will be destroyed. This is premature deallocation because the Possession still needs that string as its possessionName. The Possession will eventually send messages to or give out its possessionName. It will be embarrassing (and application-crashing) if the object that the variable points to doesn’t exist.

My question is: Why do I necessarily care about retaining str if I'm simply passing it in as a parameter? If we use the setPosessionName: method, which sets posessionName equal to str, then why would posessionName lose its value if str was released after setPosessionName: was called?

wolffenstein
Aug 2, 2002
 
Pork Pro
Keep reading the book. You'll learn about AutoRelease soon enough. Not that this stuff is important for much longer.

OHIO
Aug 15, 2005

touchin' algebra

stray posted:

My question is: Why do I necessarily care about retaining str if I'm simply passing it in as a parameter? If we use the setPosessionName: method, which sets posessionName equal to str, then why would posessionName lose its value if str was released after setPosessionName: was called?

Because 'str' and 'possessionName' are pointers! (see the * in NSString *) They're not basic data types like 'int'.

possessionName won't lose its value, that is, the memory location of where it's pointing. But the memory at that location becomes worthless when 'str' releases it (if that is the final release that causes a dealloc on that NSString *)

Star Warrior X
Jul 14, 2004

stray posted:

My question is: Why do I necessarily care about retaining str if I'm simply passing it in as a parameter? If we use the setPosessionName: method, which sets posessionName equal to str, then why would posessionName lose its value if str was released after setPosessionName: was called?

Because you aren't passing a string. str is a pointer to a string, which means that all it is is a memory address. Retaining it tells the operating system that you care what is stored at that address, so when you use posessionName it still points to a string. In other words, posessionName won't lose its value - it'll still point to the same location in memory - but if str is released, that location will not contain the data anymore.

Edit: Bah, too slow.

stray
Jun 28, 2005

"It's a jet pack, Michael. What could possibly go wrong?"

OHIO posted:

Because 'str' and 'possessionName' are pointers! (see the * in NSString *) They're not basic data types like 'int'.

possessionName won't lose its value, that is, the memory location of where it's pointing. But the memory at that location becomes worthless when 'str' releases it (if that is the final release that causes a dealloc on that NSString *)
Ah, of course! Thanks.

CRIP EATIN BREAD
Jun 24, 2002

Hey stop worrying bout my acting bitch, and worry about your WACK ass music. In the mean time... Eat a hot bowl of Dicks! Ice T



Soiled Meat
Is there an appropriate way to load and unload a kernel extension via the Cocoa API? I mean I can run kextload and kextunload but I'd really prefer to not do that if I don't have to.

nolen
Apr 4, 2004

butts.
Looks like you guys were correct about the iAds thing. I loaded up my app (http://tinyurl.com/5vc6xt4) today and saw an ad for AT&T. Then later I saw another Test Ad.


It really does look like it has to roll itself out on its own. Dumb.

Funso Banjo
Dec 22, 2003

chiyosdad posted:

Is it possible to do app development for iphone/ipad on something other than a mac computer?

I develop exclusively on a vista machine. I run a vmware snow leopard, and manage very well. On a week pc you'll find the virtual machine is a little sluggish, but mine runs very well. Use a cloud server rather than shared folders, this is important.

Binaries upload fine.

Very excited, had my first 2,000 dollar month in September. I am almost thinking I could do this for a living.

Funso Banjo fucked around with this message at 18:26 on Oct 11, 2011

PT6A
Jan 5, 2006

Public school teachers are callous dictators who won't lift a finger to stop children from peeing in my plane
XCode is driving me nuts. I want to make a reduced-feature free version of my app, so this is what I've done:

1) Duplicated my original target.

2) In the new target, set the info.plist to use a different plist with a different logo and bundle ID.

3) Create two different versions of a header, one which #defines __FREE_VERSION__ and the other which doesn't, which are then put in different paths. The different paths are then added to the correct target as the user header search path.

What I expect will happen is that the second target will build with the new settings and behave the way I want. What is actually happening is that the second target produces the same thing as the first target, no matter which settings I attempt to change. I'm not a real expert at using XCode (which should be pretty clear), but I must be overlooking something incredibly simple. Why does my second target not want to use the settings from the Info.plist I've told it to use?

EDIT: Just tried it again after removing the duplicate target and all associated files... I still can't seem to get the two targets to behave differently. I can get them both to either build the free version, or the paid version, but I can separate them. Has anyone ever dealt with anything like this before?

EDIT 2: Unless someone has the magic bullet to solve this problem, I think I'm just going to switch the header files and plists manually. I've spent more time trying figure out how to do this the "right way" than it would take me to swap it out manually 20 times...

PT6A fucked around with this message at 23:40 on Oct 11, 2011

LP0 ON FIRE
Jan 25, 2006

beep boop
For some reason I cannot read new values written into a plist file. I'm just doing a simple NSLog. I deleted an int value from the plist that I could NSLog just fine, and even though I saved the plist I can still have it show up in the log. It seems to me the plist is simply not saving correctly, or I'm doing something wrong I'm not realizing. Can anyone help me out with this? Thanks.

edit: I simply renamed the plist file and put a "2" at the end and changed the filename in the code as well, and everything is working fine, but it sort of freaks me out. Some kind of compiler bug?

edit 2: Still having plist problems I guess. Even though I know I changed a value in this file, and that is reflected in the game, I take a look a look at the plist even after closing it and it shows nothing has changed. What gives? Actually I'm going nuts, doesn't work like this, and don't know why I thought it did.

LP0 ON FIRE fucked around with this message at 23:03 on Oct 11, 2011

Doc Block
Apr 15, 2003
Fun Shoe

PT6A posted:

XCode is driving me nuts. I want to make a reduced-feature free version of my app, so this is what I've done:

1) Duplicated my original target.

2) In the new target, set the info.plist to use a different plist with a different logo and bundle ID.

3) Create two different versions of a header, one which #defines __FREE_VERSION__ and the other which doesn't, which are then put in different paths. The different paths are then added to the correct target as the user header search path.

What I expect will happen is that the second target will build with the new settings and behave the way I want. What is actually happening is that the second target produces the same thing as the first target, no matter which settings I attempt to change. I'm not a real expert at using XCode (which should be pretty clear), but I must be overlooking something incredibly simple. Why does my second target not want to use the settings from the Info.plist I've told it to use?

EDIT: Just tried it again after removing the duplicate target and all associated files... I still can't seem to get the two targets to behave differently. I can get them both to either build the free version, or the paid version, but I can separate them. Has anyone ever dealt with anything like this before?

EDIT 2: Unless someone has the magic bullet to solve this problem, I think I'm just going to switch the header files and plists manually. I've spent more time trying figure out how to do this the "right way" than it would take me to swap it out manually 20 times...

Instead of creating two versions of a header (which I suspect is where your problem is, for whatever reason), go to the build settings for the free version target, and in the preprocessor section define __FREE_VERSION__ or whatever.

duck monster
Dec 15, 2004

PT6A posted:

XCode is driving me nuts. I want to make a reduced-feature free version of my app, so this is what I've done:

1) Duplicated my original target.

2) In the new target, set the info.plist to use a different plist with a different logo and bundle ID.

3) Create two different versions of a header, one which #defines __FREE_VERSION__ and the other which doesn't, which are then put in different paths. The different paths are then added to the correct target as the user header search path.

What I expect will happen is that the second target will build with the new settings and behave the way I want. What is actually happening is that the second target produces the same thing as the first target, no matter which settings I attempt to change. I'm not a real expert at using XCode (which should be pretty clear), but I must be overlooking something incredibly simple. Why does my second target not want to use the settings from the Info.plist I've told it to use?

EDIT: Just tried it again after removing the duplicate target and all associated files... I still can't seem to get the two targets to behave differently. I can get them both to either build the free version, or the paid version, but I can separate them. Has anyone ever dealt with anything like this before?

EDIT 2: Unless someone has the magic bullet to solve this problem, I think I'm just going to switch the header files and plists manually. I've spent more time trying figure out how to do this the "right way" than it would take me to swap it out manually 20 times...

header files dont seem to be part of target file collections for some reason, if my memory serves me right. Have BOTH sets of data in the same config.h file bracketed by #IFDEF sections and specify the token that activates these in the compiler settings for each target.

PT6A
Jan 5, 2006

Public school teachers are callous dictators who won't lift a finger to stop children from peeing in my plane
And that's the simple thing I was missing... I didn't realize you could specify preprocessor macros in the build settings. That's much easier than what I was doing!

Well, off to try again...

EDIT: And it works perfectly! Thanks.

PT6A fucked around with this message at 15:45 on Oct 12, 2011

Heisenberg1276
Apr 13, 2007
Does anyone have any tips for creating a control overlay on a QTMovieView or VLCMovieView (or any other media players if one exists?) - they draw over any views put on top of them. I think I could overlay a transparent window but is it possible to stick that window to the movie player window so it moves with it?

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

DBFT posted:

Does anyone have any tips for creating a control overlay on a QTMovieView or VLCMovieView (or any other media players if one exists?) - they draw over any views put on top of them. I think I could overlay a transparent window but is it possible to stick that window to the movie player window so it moves with it?

Perhaps you are looking for child windows?

Quebec Bagnet
Apr 28, 2009

mess with the honk
you get the bonk
Lipstick Apathy

CRIP EATIN BREAD posted:

Is there an appropriate way to load and unload a kernel extension via the Cocoa API? I mean I can run kextload and kextunload but I'd really prefer to not do that if I don't have to.

You can go through IOKit, see the kextload source. The specific function you're looking for is OSKextLoadWithOptions. I doubt there's anything higher-level. The kext loading functionality was IIRC rewritten in 10.6.

lord funk
Feb 16, 2004

Where do you begin when EXC_BAD_ACCESS just points to your main() instead of a specific variable or function? There are 10 million things that could be happening here, but there has to be a way to see what's really causing this. :(

OHIO
Aug 15, 2005

touchin' algebra

lord funk posted:

Where do you begin when EXC_BAD_ACCESS just points to your main() instead of a specific variable or function? There are 10 million things that could be happening here, but there has to be a way to see what's really causing this. :(

Have you tried Zombie mode with the profiler in the simulator? That might give you some helpful info.

Adbot
ADBOT LOVES YOU

lord funk
Feb 16, 2004

OHIO posted:

Have you tried Zombie mode with the profiler in the simulator? That might give you some helpful info.

Holy poo poo, thank you. I enabled NSZombieEnabled as an environment variable instead, and it points to exactly what was called.

Now excuse me while I go commit suicide for spending months debugging like a caveman.

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