Xcode – Could not launch app – No such file or directory Error.

Tags: ,
Posted on November 20th, 2012 by lucy – 2 Comments

I’ve been expanding the amount of devices I have and returning to old code to try and sort out and update code that doesn’t run on newer IOS’s. While trying to compile Loopy Tunes, I came across the error  from Xcode, “could  not launch app, no such file or directory exists..” So here I found the solution due to one helpful blogger,

http://dhilipsiva.blogspot.com.au/2012/07/xcode-could-not-launch-app-no-such-file.html

Orientation always in Portrait iOS6

Tags: , , , ,
Posted on October 1st, 2012 by admin – Be the first to comment

Right had to do a bit of research for this one, here is the fix I found that works from Natalie London

In your APP DELEGATE.m

NSString *reqSysVer = @"6.0";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];

if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending){
    [window setRootViewController:viewController]; // This is for IOS6.....
}else{
    [window addSubview: viewController.view]; //This is for < IOS6....... (the old way)
}

In your ROOTVIEWCONTROLLER.m //will only be compiled for IOS6

FOR LANDSCAPE USE THIS

- (NSUInteger) supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
    return UIInterfaceOrientationLandscapeRight;
}

- (BOOL) shouldAutorotate {
    return YES;
}

FOR PORTRAIT USE THIS

- (NSUInteger) supportedInterfaceOrientations {
    return  UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
    return UIInterfaceOrientationPortrait;
}

- (BOOL) shouldAutorotate {
    return YES;
}

The page I got this from is

https://devforums.apple.com/message/734618#734618

Creating an Ad Hoc version of your app

Tags: , , ,
Posted on July 25th, 2012 by admin – Be the first to comment

I could write out how to do this, but I couldn’t do better than this post here.

http://www.musicalgeometry.com/?p=1237

And in case you need to know how to create your Ad Hoc Distribution Provisioning Profile, look at the Apple notes here

http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Conceptual/DevPortalGuide/CreatingandDownloadingaDistributionProvisioningProfile/CreatingandDownloadingaDistributionProvisioningProfile.html

And if you want to know how to add devices for testing. Get the UDID from the iphone or ipad, and in the the IOS Provisioning Portal go to “devices”. Select “add devices” in the top right corner. Enter the device name and device ID and hit “submit”.

EXC_BAD_ACCESS

Tags: , ,
Posted on May 11th, 2012 by admin – Be the first to comment

Right so I get this one a lot, especially when I’m coding late at night and tired…which is most of the time. So, my main culprits are objects that I haven’t released in my dealloc method.

Especially look for anything that you created with ALLOC INIT, for example an array

[[NSMutableArray alloc] init]

You must, must, must release it.

Second most common is not removing the class from observing a Notification. So if you have something like

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(classMethod:) name:@"notificationName" object:nil];

Then again in your dealloc method, you must put this

[[NSNotificationCenter defaultCenter] removeObserver:self];

I’m sure there are more things, and I’ll add notes as I discover them.

xcode persistent data

Tags: , , ,
Posted on May 8th, 2012 by admin – Be the first to comment

So you want to save some data to the users device for use in your app. The way to do it is thusly,

// declare your app data with whatever name you like
NSUserDefaults *yourAppData = [NSUserDefaults standardUserDefaults];

// retrieve your data with
NSString *myString = [yourAppData objectForKey:@"StringVariableName"];
int myInt = [yourAppData integerForKey:@"IntVariableName"];

// now if this is the first time the app has been run, these won't have any value,
// so it's probably best just to check they aren't null before you try to use them
if(!myString){
    // then this is the first time it's been accessed
}else{
    // otherwise it has been created and has got a value so do whatever you need to with it here
}

// now to set data use the following

[yourAppData setObject:@"someStringData" forKey:@"StringVariableName"];
[yourAppData setInteger:2 forKey:@"IntVariableName"];

Load a class from String

Tags: , , , , ,
Posted on May 3rd, 2012 by admin – Be the first to comment

I often need to dynamically load a class from a concatinated combination of strings and integers. So here is how you do it. In a game for example, you may have a LevelID stored in your appdelegate that changes at the game progresses, so I’ve made the example grabbing such a levelID from the delegate class.

YourAppDelegate *theDelegate = (YourAppDelegate*)[[UIApplication sharedApplication] delegate];
int LevelID = [theDelegate getLevelID];
NSString *levelToLoad = [NSString stringWithFormat:@"Level%i",LevelID];
Class newLevel = NSClassFromString(levelToLoad);

BAM, and it’s done.

Cocos2d scene transitions

Tags: , , ,
Posted on May 1st, 2012 by admin – Be the first to comment

Easy Peasy, check out this link for how to and al available types.

Change Cocos2D template to portrait

Tags: , , , ,
Posted on April 17th, 2012 by admin – Be the first to comment

The template that comes with Cocos2D 0.99.5 is set in landscape mode. Sometimes you want portrait though, so I did the following and it seems to work, and reorient without fail.

In GameConfig.m

// REPLACE THIS LINE #define GAME_AUTOROTATION kGameAutorotationNone
// WITH THE FOLLOWING
#define GAME_AUTOROTATION kGameAutorotationUIViewController

In RootviewController.m in the section of

#elif GAME_AUTOROTATION == kGameAutorotationUIViewController

    // EAGLView will be rotated by the UIViewController
    //
    // Sample: Autorotate only in landscpe mode
    //
    // return YES for the supported orientations
   
    // REPLACE THIS LINE return ( UIInterfaceOrientationIsLandscape( interfaceOrientation ) );
    // WITH THE FOLLOWING
        return ( UIInterfaceOrientationIsPortrait( interfaceOrientation ) );

In your appdelegate.m class file

        [director setAnimationInterval:1.0/60];
    [director setDisplayFPS:YES];
        // ADD THE FOLLOWING LINE HERE
    [director setDeviceOrientation:kCCDeviceOrientationPortrait];

Resource Creation & Positioning for Universal App

Posted on March 30th, 2012 by admin – Be the first to comment

So I have created my iPad app and want now to make the assets for the iphone version. What do I do? Here are the steps.

STEP 1

To Set Up Default Images create the following

IPAD – Default_iPad.png – 1024×768
IPHONE – Default.png – 480×320

And in the info.plist, copy the following

<key>UILaunchImageFile</key>
<string>Default</string>
<key>UILaunchImageFile~ipad</key>
<string>Default_iPad</string>

STEP 2 RESIZE

As a quick check, resize all your images to 42%. The long side of background images will be too short, but you can get an idea of how everything looks, and then go recreate full screen images later if they need it. When resizing though, be sure to keep the centre point the same, or the positioning done in step 3 won’t be correct. Those with text on it almost definitely will need a recreation.

STEP 3 POSITION

When positioning your assets you place them thusly,
shortSide*.42
longside*.42 + 27

Project Code for Universal App Creation

Tags: , , ,
Posted on March 29th, 2012 by admin – Be the first to comment

Step 1

In your Target Info set the Targeted Device Family to “iPhone/iPad”

Step 2

In your appDelegate.m put this bit of code

 - (BOOL) isIpad {
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 30200
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        return YES;
       
    } else {
        return NO;
    }
#else
    return NO;
#endif
}

To reference it in your other classes do this

in class.h

@interface YourLayerClass : CCLayer {
   
    YourAppDelegate *theDelegate;
    Boolean *isIpad;
}

in class.m in your init method

-(id) init
{
    if( (self=[super init] )) {

                //DEFINE iPad or iPhone
        theDelegate = (YourAppDelegate*)[[UIApplication sharedApplication] delegate];
        isIpad = [theDelegate isIpad];

    }
}

And you can use it in your class thusly

    if(isIpad == NO){
    bg = [CCSprite spriteWithFile:@"xx_iphone.png"];
    }else {
    bg = [CCSprite spriteWithFile:@"xx_ipad.png"];
    }