writeToFile总是与stringByAppendingPathComponent崩溃

时间:2011-06-01 08:46:22

标签: iphone objective-c writetofile

我在这个问题上坐了好几个小时,现在我失明了。 ; - )

我这里有这个代码:

- (id) initWithImage:(UIImageView*)imageView andPath: (NSString*) path{

   [super init];
   drawImage = imageView;
   imageFilePath = [NSString stringWithString: path];
   NSLog(@"fath: %@", imageFilePath);
   return self;
}

    NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(drawImage.image)];   
    NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *path = [docsDirectory stringByAppendingPathComponent:@"img.data"];
    NSLog(@"path: %@", path);
    [imageData writeToFile:path atomically:YES];

此代码有效但我改变时 [imageData writeToFile:path atomically:YES];

[imageData writeToFile:imageFilePath atomically:YES];
应用程序崩溃 但字符串看起来完全一样:

2011-06-01 10:38:10.178 L3T[3756:207] fath: /Users/max/Library/Application Support/iPhone Simulator/4.3/Applications/A73945CF-9FD0-46E9-A16B-9C0EFC924B0F/Documents/img.data
2011-06-01 10:38:11.864 L3T[3756:207] path: /Users/max/Library/Application Support/iPhone Simulator/4.3/Applications/A73945CF-9FD0-46E9-A16B-9C0EFC924B0F/Documents/img.data

我只是不明白!

1 个答案:

答案 0 :(得分:3)

代码imageFilePath = [NSString stringWithString: path];为您提供了一个您不拥有的对象,因此您不能依赖于代码中稍后可用的对象。将其更改为:

imageFilePath = [[NSString alloc] initWithString: path];

你应该没事。