标签: nsdata

游戏状态singleton cocos2d,initWithEncoder总是返回null

我正在尝试在cocos2d中编写一个基本测试"游戏状态"单例,但由于某些原因加载应用程序时,从不调用initWithCoder.任何帮助将不胜感激,谢谢.

这是我的单身GameState.h:


#import "cocos2d.h"

@interface GameState : NSObject <NSCoding>
{
  NSInteger level, score;
  Boolean seenInstructions;
}

@property (readwrite) NSInteger level;
@property (readwrite) NSInteger score;
@property (readwrite) Boolean seenInstructions;

+(GameState *) sharedState;
+(void) loadState;
+(void) saveState;

@end
Run Code Online (Sandbox Code Playgroud)

...和GameState.m:


#import "GameState.h"
#import "Constants.h"

@implementation GameState

static GameState *sharedState = nil;

@synthesize level, score, seenInstructions;

-(void)dealloc {
  [super dealloc];
}

-(id)init {
  if(!(self = [super init]))
    return nil;  
  level = 1;
  score = 0;
  seenInstructions = NO;

  return self;
}

+(void)loadState {
  @synchronized([GameState …
Run Code Online (Sandbox Code Playgroud)

singleton nskeyedarchiver cocos2d-iphone nsdata iphone-sdk-3.0

0
推荐指数
1
解决办法
3539
查看次数

iPhone:发送到解除分配的实例错误的消息

我缩小了这个错误(崩溃我的应用程序):

-[NSConcreteMutableData release]: message sent to deallocated instance 0x6eaed40
Run Code Online (Sandbox Code Playgroud)

到以下代码:

emailData = [kmlDoc dataUsingEncoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚为什么会出现这个错误?该行只是将一个非常大的字符串设置为NSData对象.我在dealloc方法中发布了emailData.

这里出了什么问题?

iphone nsstring nsdata

0
推荐指数
1
解决办法
2173
查看次数

来自NSInputStream的NSData dataWithBytesNoCopy

我正在努力将图像数据从文件转码为base64编码的字符串,然后在使用NSStream读取文件时返回字节.我想我差不多了,但是在转换过程中我在各个点继续遇到EXC_BAD_ACCESS.

我对NSStream和缓冲区的世界相当新,所以如果我采取绝对错误的方法,请随时告诉我.

这是我到目前为止所得到的:

// Copy the bytes from our file input stream buffer
void *base64buffer = malloc(self.buffer[self.bufferOffset]);

// Convert the bytes to NSData for the base64 encode
NSData *dataToEncode = [NSData dataWithBytesNoCopy:base64buffer length:sizeof(base64buffer) freeWhenDone:YES];

// Convert our NSData into a base64 encoded string
NSString *base64EncodedData = [dataToEncode base64EncodedString];

// Convert our base64 encoded string back into NSData
NSData *encodedData = [base64EncodedData dataUsingEncoding:NSUTF8StringEncoding];

// Write the bytes to our output stream
bytesWritten = [self.producerStream write:[encodedData bytes] maxLength:[encodedData length]];

// Clean up …
Run Code Online (Sandbox Code Playgroud)

iphone sdk objective-c nsdata nsstream

0
推荐指数
1
解决办法
5433
查看次数

NSData无法正常工作

NSData *myRequest = [NSString stringWithFormat:(@"&site=%@&key=%@",tmpSite,tmpKey)];
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?

谢谢

iphone objective-c nsdata

0
推荐指数
1
解决办法
135
查看次数

NSData中的字节反向顺序

从来没有这样做(学校除外).所以我完全处于黑暗中.

我有数据(void*)和它的大小(UInt32)所以我可以简单地做类似的东西

[NSData dataWithBytesNoCopy:data length:dataSize freeWhenDone:YES]
Run Code Online (Sandbox Code Playgroud)

这是为了得到一个NSData实例(我需要),但我希望在1或2字节块中"切片"这个数据并反转它的顺序.

一个简短的例子会很棒.

谢谢.

cocoa objective-c nsdata

0
推荐指数
1
解决办法
1483
查看次数

NSDictionary序列化为NSString

我正在使用URLScheme,我需要将应用程序A中的序列化NSDictionary发送到我的应用程序B.

应用程序A中,我使用NSKeyedArchiver将我的NSDictionary序列化为NSData

    NSDictionary *myDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"This is value 1", @"key1", 
                                    @"value 2", @"key2",
                                    @"value3", @"key3", 
                                    @"", @"key4", 
                                    @"value5", @"key5", 
                                    @"value 6", @"key6", 
                                    nil];
NSMutableData *data = [[NSMutableData alloc] init];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    [archiver encodeObject:myDictionary];
    [archiver finishEncoding];
    [archiver release];

    NSString *bytes = [[[NSString alloc] initWithData:data
                                             encoding:NSASCIIStringEncoding] autorelease];
Run Code Online (Sandbox Code Playgroud)

应用程序B中,我使用的是NSKeyedUnarchiver

NSData *data = [[NSString stringWithFormat:@"%@", val] dataUsingEncoding:NSASCIIStringEncoding];        
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
NSDictionary *myDictionary = [[unarchiver decodeObject] retain];
[unarchiver finishDecoding];
[unarchiver release];
Run Code Online (Sandbox Code Playgroud)

我的序列化NSDictionary看起来像:

bplist00Ô01T$ …

serialization nsdictionary nsdata ios

0
推荐指数
1
解决办法
7617
查看次数

Objective-C类别"无法识别的选择器"错误

我制作了一个UIImage Objective C类别来容纳这个功能:

    #import "UIImage+fixOrientation.h"

@implementation UIImage (fixOrientation)

- (UIImage *)fixOrientation
{

    // No-op if the orientation is already correct
    if (self.imageOrientation == UIImageOrientationUp) return self;

    // We need to calculate the proper transformation to make the image upright.
    // We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored.
    CGAffineTransform transform = CGAffineTransformIdentity;

    switch (self.imageOrientation) {
        case UIImageOrientationDown:
        case UIImageOrientationDownMirrored:
            transform = CGAffineTransformTranslate(transform, self.size.width, self.size.height);
            transform = CGAffineTransformRotate(transform, M_PI);
            break;

        case UIImageOrientationLeft:
        case UIImageOrientationLeftMirrored:
            transform …
Run Code Online (Sandbox Code Playgroud)

iphone uiimage nsdata objective-c-category ios6

0
推荐指数
1
解决办法
1416
查看次数

如何检查NSData对象是否包含子NSData?

我有一个NSData对象,其中包含我需要的一些数据.我想要做的是找出数据"FF D8"的位置(JPEG数据的开始)

我怎样才能实现这样的工作?

cocoa nsdata

0
推荐指数
1
解决办法
4430
查看次数

如何将mp4转换为NSData?

在此输入图像描述我在XCode中有一个名为vvideo.mp4的文件.我试图将它转换为NSData,如下所示

    NSData *data = [NSData dataWithContentsOfFile:@"vvideo.mp4" options:nil error:nil];
Run Code Online (Sandbox Code Playgroud)

但是当我记录数据时,它返回null.

什么是将任何视频转换为NSData的正确方法?

在Xcode中添加文件并正确复制,你可以在这里看到.

编辑问题....

video nsdata ios

0
推荐指数
1
解决办法
5152
查看次数

在Swift中擦除NSData内容

我有一个NSData对象,将包含敏感数据.操作完成后,我想擦除内存以避免任何潜在的安全问题.在Objective-C中,这很容易.我可以打电话给...

memset([mySensitiveData bytes], 0, [mySensitiveData length]);
Run Code Online (Sandbox Code Playgroud)

然而,在Swift中,它并不那么简单.我尝试过相同的......

memset(mySensitiveData.bytes, 0, mySensitiveData.length)
Run Code Online (Sandbox Code Playgroud)

...但是,我收到编译错误说...

'UnsafePointer<Void>' is not convertible to 'UnsafeMutablePointer<Void>'
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题并在Swift中安全地擦除内存吗?谢谢!!

memory security objective-c nsdata swift

0
推荐指数
1
解决办法
1065
查看次数