[问题记录]IOS菜鸟问题-GUID获取释放时奔溃

来源:互联网 发布:fliqlo windows 怎么用 编辑:程序博客网 时间:2024/06/06 00:18

遇到一些问题就先记录下来吧,以后回过头来看看。

#import <Foundation/Foundation.h>#import "main.h"int main(int argc, const char * argv[]) {        //自动释放池开始    @autoreleasepool {        NSLog(@"这是自动释放池,在这里面的操作结束后会自动释放");//不知道我的理解有没有错    }        //生成GUID    NSString* guid;    for(int i = 0; i < 100; i++){        guid = stringWithUUID();//获取GUID        NSLog(@"%d,%@", i, guid);//输出    }    return 0;}NSString* stringWithUUID(){    //create a new UUID    CFUUIDRef    uuidObj = CFUUIDCreate(nil);//创建新的UUID对象        //get the string representation of the UUID    CFStringRef uuidstr = CFUUIDCreateString(nil, uuidObj);//UUID对象转字符        //NSString *restr =(NSString*)CFBridgingRelease(uuidstr);//CFBridgingRelease作用是啥    NSString *restr = (__bridge_transfer NSString *)uuidstr;//上面的现在改成这一句了        CFRelease(uuidObj);    //CFRelease(uuidstr);//关于是否释放这一块,目前我还没有理解,但是循环中如果加了这一句就奔溃,是啥问题呢?        return restr;}



摆渡了一下,现在大概了解了可能是因为CFStringRef 到 NSString ARC泄漏。

相关类似问题:



解决方法:

事实上根据"标准"可可的命名约定,函数,包含 Create 或 Copy 在其名称中返回的对象的引用计数为 1。您必须将成弧土地转移此引用计数,所以那弧可以照顾它。您使用 __bridge_transfer 关键字用于此目的。
NSString *string = (__bridge_transfer NSString *)cfString;




附CFStringRef和NSString相互转换方法

NSString *strNS = @""; CFStringRef strRef = (__bridge CFStringRef)strNS; strNS = (__bridge NSString *)strRef;




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 2岁宝宝头发稀少怎么办 掉头发很厉害怎么办吧 头发点的很厉害怎么办 为什么掉头发很厉害怎么办 产后2年脱发严重怎么办 产妇掉头发很厉害怎么办 头发掉了怎么办小妙招 头顶头发掉的厉害怎么办 20岁头发有些少怎么办 头痒头发掉厉害怎么办 头油头痒掉头发怎么办 头发痒掉发严重怎么办 宝宝的脸皴了怎么办 宝宝冬天脸皴了怎么办 白衬衣领子变黄怎么办 白衬衣领子烂了怎么办 玩手机眼睛红了怎么办 吃了发芽的土豆怎么办 散尾竹叶子发黄怎么办 吃了一朵长春花怎么办 3d模型打开缓慢怎么办 多肉叶片发芽后怎么办 多肉种子发芽后怎么办 玫瑰金手机掉漆怎么办 18k金掉色了怎么办 6s玫瑰金掉漆了怎么办 书被水泡了皱了怎么办 长头发掉的厉害怎么办 长头发容易掉发怎么办 家人被传销洗脑怎么办 衣服上有荧光剂怎么办 有荧光剂的衣服怎么办 3个月了恶露还有怎么办 京东倒闭欠的钱怎么办 便利通卡过期了怎么办 京东e卡被绑定了怎么办 天猫预售不发货怎么办 面签失败首付款怎么办 华为荣耀8卡顿怎么办 荣耀3c开不了机怎么办 华为3c开不了机怎么办