很难NSString
进入NSURL
NSURL *url = [NSURL URLWithString:@"http://.../social.php"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
for(id entry in JSON)
{
strTwitter= [entry valueForKeyPath:@"str1"];
strFacebook =[entry valueForKeyPath:@"str2"];
CCLOG(@"twitter: %@", strTwitter);
}
} failure:nil];
[operation start];
别处...
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: strTwitter]];
然后我崩溃NSURL
了EXC_BAD_ACCESS
在mainMenu.h
:
@interface mainMenuLayer : CCLayer
{
NSString *strTwitter;
}
CCLOG 打印 URL 很好 - 没有空格;有 https 等...?
。H
#import "cocos2d.h"
#import "menuHome.h"
#import "menuMenu.h"
#import "AFJSONRequestOperation.h"
@interface mainMenuLayer : CCLayer
{
CCSprite *Background;
CCSprite *logoBackground;
CCSprite *logoName;
menuHome *theMenuHome1;
menuMenu *theMenuMenu1;
CGSize size;
CCMenu *bottomMenu;
CCMenu *bottomMenu2;
CCMenuItemImage *menuHouse;
CCMenuItemImage *menuMenu2;
CCMenuItemImage *menuPictures;
CCMenuItemImage *menuContact;
CCMenuItemImage *menuMore;
CCMenuItemImage *menuTemp;
CCMenuItemImage *menuTwitter;
CCMenuItemImage *menuFacebook;
CCMenuItemImage *menuWebsite;
CCMenuItemImage *menuAbout;
CCMenuItemImage *menuBlank;
NSString *strTwitter;
NSString *strFacebook;
NSInteger moreVisible;
}
// returns a CCScene that contains the HelloWorldLayer as the only child
+(CCScene *) scene;
-(void) funcHome;
-(void) funcMore;
-(void) funcMenu2;
+(mainMenuLayer*) sharedMenuScene;
@end
.m
#import "mainMenu.h"
#import "constants.h"
@interface mainMenuLayer ()
@property(nonatomic, strong) NSString *strTwitter;
@end
// HelloWorldLayer implementation
@implementation mainMenuLayer
@synthesize strTwitter;
static mainMenuLayer *sharedMenuScene;
+(mainMenuLayer*) sharedMenuScene {
NSAssert(sharedMenuScene != nil, @"not yet initilized");
return sharedMenuScene;
}
+(CCScene *) scene
{
// 'scene' is an autorelease object.
CCScene *scene = [CCScene node];
// 'layer' is an autorelease object.
mainMenuLayer *layer = [mainMenuLayer node];
// add layer as a child to scene
[scene addChild: layer];
// return the scene
return scene;
}
// on "init" you need to initialize your instance
-(id) init
{
// always call "super" init
// Apple recommends to re-assign "self" with the "super" return value
if( (self=[super init])) {
sharedMenuScene = self;
// create and initialize a Label
self.isTouchEnabled = YES;
[[CCDirector sharedDirector]enableRetinaDisplay:YES];
// ask director the the window size
size = [[CCDirector sharedDirector] winSize];
moreVisible = 0;
//theMenuHome1.position = ccp(0.0f, 0.0f);
logoBackground = [CCSprite spriteWithFile:@"logo_bg_640x120.png"];
[self addChild:logoBackground z: depthLevelMenu];
logoBackground.position = ccp( size.width / 2, size.height - 30);
logoName = [CCSprite spriteWithFile:@"res_name.png"];
[self addChild:logoName z: depthLevelMenuLogo];
logoName.position = ccp( size.width / 2, size.height - 30);
Background = [CCSprite spriteWithFile:@"background.png"];
[self addChild:Background z: depthLevelBackground];
Background.position = ccp( size.width / 2, size.height / 2);
menuHouse = [[CCMenuItemImage itemFromNormalImage:@"home_128x100_unselect.png" selectedImage:@"home_128x100_select.png" target:self selector:@selector(funcHome:)]retain];
menuHouse.position = ccp( 32, 25 );
menuContact = [[CCMenuItemImage itemFromNormalImage:@"contact_128x100_unselect.png" selectedImage:@"contact_128x100_select.png" target:self selector:@selector(funcHome:)]retain];
menuContact.position = ccp( 96, 25 );
menuMenu2 = [[CCMenuItemImage itemFromNormalImage:@"menu_128x100_unselect.png" selectedImage:@"menu_128x100_select.png" target:self selector:@selector(funcHome:)]retain];
menuMenu2.position = ccp( 160, 25 );
menuPictures = [[CCMenuItemImage itemFromNormalImage:@"photos_128x100_unselect.png" selectedImage:@"photos_128x100_select.png" target:self selector:@selector(funcHome:)]retain];
menuPictures.position = ccp( 224, 25 );
menuMore = [[CCMenuItemImage itemFromNormalImage:@"more_128x100_unselect.png" selectedImage:@"more_128x100_select.png" target:self selector:@selector(funcMore:)]retain];
menuMore.position = ccp( 288, 25 );
bottomMenu = [CCMenu menuWithItems: menuHouse, menuContact, menuMenu2, menuPictures, menuMore, nil];
bottomMenu.position = CGPointZero;
[self addChild: bottomMenu z:depthLevelMenu];
[menuHouse selected];
[self getSettings];
}
return self;
}
-(void) getSettings
{
NSURL *url = [NSURL URLWithString:@"http://.../social.php"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
for(id entry in JSON)
{
strTwitter= [entry valueForKeyPath:@"str1"];
strFacebook =[entry valueForKeyPath:@"str2"];
CCLOG(@"twitter: %@", strTwitter);
}
} failure:nil];
[operation start];
}
-(void) funcMenu2: (id) sender
{
CCLOG(@"funcMenu2 Called");
[menuTwitter unselected];
[menuFacebook unselected];
[menuWebsite unselected];
[menuAbout unselected];
[menuBlank unselected];
[menuMore unselected];
if(sender == menuTwitter)
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: strTwitter]];
CCLOG(@"url: %@", strTwitter);
CCLOG(@"Twitter Selected");
[sender selected];
}
}