c 串转string_c字符串转换到NSString

我还在继续svn客户端的项目。我在objective-c对象体外,有个静态的c语言的回调方法。其中,我将char*转化成了NSString,调试时一切正常。但运行到后面的时候,字符串变量会丢掉,并且只要一取出这个属性,就报错。

char* 转换到NSString的代码:

static svn_error_t *

my_list_repo_func (void *baton,

const char *path,

const svn_dirent_t *dirent,

const svn_lock_t *lock,

const char *abs_path,

apr_pool_t *pool)

{

printf ("%s\n",path);

SrcEntry *srcEntry = [[SrcEntry alloc]init];

// 注:后面取这个name属性时会报错

srcEntry.name = [NSString stringWithUTF8String:path];

srcEntry.path = [NSString stringWithUTF8String:abs_path];

srcEntry.lastAuthor = [NSString stringWithUTF8String:dirent -> last_author];

srcEntry.time = [NSNumber numberWithLong:dirent -> time];

[srcEntries addObject:srcEntry];

return SVN_NO_ERROR;

}

后面调用报错的地方(此处为一个tableview刷新时候的方法):

- (id) tableView: (NSTableView *)table

objectValueForTableColumn: (NSTableColumn *)column

row: (NSInteger)row {

SrcEntry *srcEntry = [self.srcEntries objectAtIndex:row];

return srcEntry.name;

}

最奇怪的是,我在刚开始转换完,调试看到的值和类型,和后面报错前看到的完全不一样。下面是两张调试变量时候的截图:

e6cd78750eaf732d11899a1f71a0dbcb.png

这张是报错前,调试变量截图:

1e1d70fe8c2d6d1cb2432f85ac6621d4.png

注:就是在读取第二个元素的name属性的时候出错。这中间我并没有对数组里面的元素做任何改动,只是把数组拷贝到了另外一个地方。为什么类型和值都会发生变化呢?

追加:并且,从截图中可以看出属性path的值都丢掉了。变成了一串内存地址。难道我是需要用*符号,再取出实际的值吗?

追加2:第二张截图中,显示为(NSString *) xxxxx像是内存地址的name的属性。我试验了,调用任何方法都报错,并且像是死循环一样,断点一直反复进入那个地方出不来。请问有没有什么办法,绕过这个错?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值