小编mac*_*beb的帖子

NSMutableAttributedString initWithData:在旋转时导致EXC_BAD_ACCESS

我在a中显示不同类型的内容,tableview并使用不同的自定义方法计算每个单元格的高度heightForRowAtIndexPath.

其中一个自定义方法意味着转换一些html NSMutableAttributedString,然后计算它的高度NSMutableAttributedString.
对于html转换,我使用新initWithData:方法.

一切都很完美,除非我旋转屏幕=>我每次都有一个exc_bad_access.

使用Instruments/Zombies,我已经能够找到错误,事实上就是这样initWithData:.

(当我删除此方法并创建一个"简单" NSMutableAttributedStringinitWithString,我可以根据需要更改方向,crash不再有).

知道为什么吗?

(顺便说一句,我的项目使用ARC)


Instrument/Zombie截图: 在此输入图像描述


调用的自定义方法heightForRowAtIndexPath:

<UtilitiesForFrontEndUI heightForFacebookAttributedText:>

+(CGFloat)heightForFacebookAttributedText:(NSString *)attributedText withWidth:(CGFloat)width
{
    NSAttributedString *formatedText = [self formatRawFacebookContentForFrontEndRichTextContents:attributedText];
    CGRect rect= [formatedText boundingRectWithSize:CGSizeMake(width, 1000) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];
    return ceilf(rect.size.height);
}
Run Code Online (Sandbox Code Playgroud)

使用initWithData进行html NSMutableAttributedString转换的自定义方法:

<UtilitiesForFrontEndUI formatRawFacebookContentForFrontEndRichTextContents:>

+(NSAttributedString *)formatRawFacebookContentForFrontEndRichTextContents:(NSString *)stringToFormat
{
    // THIS GENERATE EXC_BAD_ACCESS ON DEVICE ROTATION (WORKS IF NO ROTATION)
    NSData *dataContent = [stringToFormat dataUsingEncoding:NSUTF8StringEncoding]; …
Run Code Online (Sandbox Code Playgroud)

exc-bad-access ios nsmutableattributedstring ios7

13
推荐指数
1
解决办法
7152
查看次数

iOS UIManagedDocument:无法打开预加载的持久存储

我正在尝试在基于UIManagedDocument的应用程序中预加载持久性存储来处理核心数据.

持久存储我尝试在应用程序B中使用,由于应用程序A"生成"并填充.在应用程序A和BI中都使用Justin Driscoll的UIManagedDocument处理程序(可在此处获得,感谢Mister Driscoll!).所有在app A中完美运行

基于此线程中解释的技术:使用UIManagedDocument在iOS 5中预加载核心数据数据库,我尝试将持久性存储放在B的应用程序包中,并在需要时将此存储复制到文档文件夹中(如果没有完成)在实例化之前的init中.

从捆绑到文档的复制都没问题(我尝试了不同的方法并通过finder和nslog检查了创建),但我无法打开"文档".应用程序不会崩溃,显示视图但表是空的(我使用与app A完全相同的代码,使用相同的fetchedResultsController).首先我认为复制持久存储是空的然后我意识到我只是无法正确打开文档/复制持久存储)=>文档状态= 5,意味着UIDocumentStateClosed和UIDocumentStateSavingError的错误(如果我正确解释它? )

(注意:我也尝试直接从bundle中实例化并打开文档,我遇到了同样的问题:doc state = 5)

所以...三天与这个文件状态= 5战斗,并没有关于修复什么的线索

我想我放入应用程序B包中的文件有问题(目前我从finder拖放到xcode,选中"为任何添加的文件夹创建文件夹引用")也许这是关于某些选项,元数据或文件权限或......

关于调查什么的任何想法?

(我不认为这是关于下面的代码但是......)这是我如何初始化(基于Justin Driscoll处理程序.只有custo是:我检查文档文件夹中是否有商店包,如果不是我创建它在捆绑中的文件)

- (id)init
{
self = [super init];
if (self) {
    self.document = nil;

    NSLog(@"--- INIT ---");

    // On vérifie si il y a un dossier "My-Default-Document-As-Database" (notre persitent store) dans le dossier "Documents"

    NSString *docDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *docFolderPath = [docDirectory stringByAppendingPathComponent:@"My-Default-Document-As-Database"];

    if (![[NSFileManager defaultManager] fileExistsAtPath:docFolderPath]) {
        NSError *error = nil;
        NSLog(@"Pas …
Run Code Online (Sandbox Code Playgroud)

core-data preload ios uimanageddocument nspersistentstore

5
推荐指数
1
解决办法
1332
查看次数