当前位置: 首页 > news >正文 婚纱摄影网站的设计思路空间手机版网站目录建设 news 2025/10/31 15:20:21 婚纱摄影网站的设计思路,空间手机版网站目录建设,商务局网站群建设方案,网站Api接口怎么做目录 ARC规则 规则 对象型变量不能作为C语言结构体的成员 显式转换id和void* 属性 数组 ARC规则 规则 在ARC有效的情况下编译源代码必须遵守一定的规则#xff1a; 主要解释一下最后两条 对象型变量不能作为C语言结构体的成员 要把对象型变量加入到结构体成员中时 主要解释一下最后两条 对象型变量不能作为C语言结构体的成员 要把对象型变量加入到结构体成员中时可强制转换为void*或是附加前面所述的__unsafe_unretained修饰符。 显式转换id和void* ARC无效时像以下代码这样将id变量强制转换void*变量并不会出问题。 id obj [[NSObejct alloc] init]; void *p obj; 更进一步将该void*变量赋值给id变量中调用其实例方法运行时也不会有问题 id o p; [o release]; 但是在ARC有效时这便会引起编译错误。 id型或对象型变量赋值给void*或者逆向赋值时都需要进行特定的转换。如果只想单纯地赋值则可以使用__bridge转换。 id obj [[NSObject alloc] init]; void *p (__bridge void *)obj; id o (__bridge id)p; 像这样通过__bridge转换id和void*就能互相转换。 但是转换为void* 的__bridge转换其安全性与赋值给__unsafe_unretained修饰符相近甚至会更低。如果管理时不注意赋值对象的所有者就会因悬垂指针而导致程序崩溃。 __bridge转换中还有另外两种转换分别是“__bridge_retained转换”和__bridge_transfer转换 id obj [[NSObject alloc] init]; void *p (__bridge_retained void *)obj; __bridge_retained转换可使要转换赋值的变量也持有所赋值的对象。下面来看看ARC无效时的源代码是如何编写的 id obj [[NSObject alloc] init]; void *p obj; [(id)p retain]; __bridge_retained转换变为了retain。变量obj和变量p同时持有对象。再来看几个其他的例子。 void *p 0; {id obj [[NSObject alloc] init];p (__bridge_retained void *)obj; } NSLog(class%, [(__bridge id)p class]); 变量作用域结束时虽然随着持有强引用的变量obj失效对象随之释放但由于__bridge_retained转换使变量p看上去处于持有该对象的状态因此该对象不会被废弃。下面我们比较一下ARC无效时的代码 void *p 0;  {id obj [[NSObject alloc] init];//[obj retainCount] - 1p [obj retain];//[obj retainCount] - 2[obj release];//[obj retainCount] -1 } //[(id)p retainCount] - 1 //即 [obj retainCount] - 1 //对象仍存在 NSLog(class%, [(__bridge id)p class]); __bridge_transfer转换提供与此相反的动作被转换的变量所持有的对象在该变量被赋值给转换目标变量后随之释放。 id obj (__bridge_transfer id)p; 该源代码在ARC无效时这样表述 id obj (id)p; [obj retain]; [(id)p release]; 同__bridge_retained转换与retain类似__bridge_transfer转换与release相似。在给id obj赋值时retain即相当于__strong修饰符的变量。 如果使用以上两种转换那么不使用id型或对象型变量也可以生成、持有以及释放对象。虽然可以这样做但是在ARC中不推荐这种方法 void *p (__bridge_retained void *)[[NSObject alloc] init]; NSLog(class%, [(__bridge id)p class]); (void)(__bridge_transfer id)p; 该源代码与ARC无效时的下列源代码相同 //ARC无效 id p [[NSObject alloc] init]; NSLog(class%, [p class]); [p release]; 这些转换多用于OC对象与CF对象之间的相互变换中。 OC对象和CF对象的区别很小不同之处仅仅只在于生成对象的框架不同。可以使用免费桥来实现二者之间的转换Toll—Free Bridge这种转换不用使用额外的CPU资源。 以下函数即Toll—Free Bridge转换的函数可用于OC对象和CF对象之间的相互变换即Toll—Free Bridge转换。 属性 当ARC有效时OC类的属性也会发生变化。 以上各种属性赋值给指定的属性中就相当于赋值给附加各属性对应的所有权修饰符的变量中。只有copy属性不是简单的赋值它赋值的是通过NSCopying接口的copyWithZone:方法复制赋值源所生成的对象。 并且在声明类成员变量时如果同属性声明中的属性不一致则会引起编译错误。比如下面这种情况。 id obj; property (nonatomic, weak)id obj; 在声明id型obj成员变量时定义属性声明为weak编译器报错。 此时需要在成员变量的声明中附加__weak修饰符或者使用strong属性来替代weak属性。 数组 将变量作为静态数组使用时附有__strong__weak__autoreleasing修饰符的数组可以在初始化时初始化为nil。 而对于动态数组NSMutableArray、NSMutableDicitionary、MSMutableSet等容器会恰当地持有追加的对象并为我们管理这些对象。 像这样使用容器虽然更为合适但在C语言的动态数组中也可以使用附有__strong修饰符的变量但是要遵守一些事项 声明动态数组用指针 id __strong *array nil; id *类型默认为id __autoreleasing*类型所以要显式指定修饰符__strong。并且附有__strong只保证id型变量被初始化为nil并不保证附有__strong修饰符的id指针型变量被初始化为nil。 使用类名时如下记述 NSObject * __strong *array nil; 其次使用calloc函数确保想分配的附有__strong修饰符变量的容量占有的内存块。 array (id __strong *)calloc(entries, sizeof(id)); 该源代码分配了entries个所需的内存块。由于使用附有__strong修饰符的变量前必须先将其初始化为nil所以这里使用使分配区域初始化为0的calloc函数来分配内存。不使用calloc函数在用malloc函数分配内存后可用memset等函数将内存填充为0。 但是像下面的源代码这样将nil代入到malloc函数所分配的数组各元素中来初始化是非常危险的。 array (id __strong *)malloc(sizeof(id) * entries); for (NSUInteger i 0; i entries; i)array[i] nil; 这是因为由malloc函数分配的内存区域没有被初始化为0因此nil会被赋值给附有__strong修饰符的并被赋值了随机地址的变量中从而释放一个不存在的对象。在分配内存时推荐使用calloc函数。 像这样通过calloc函数分配的动态数组就能完全像静态数组一样使用。 array[0] [[NSObject alloc]]; 但是在动态数组中操作附有__strong修饰符的变量与静态数组有很大差异需要自己释放所有的元素。在只是简单地使用free函数废弃了数组用内存块的情况下数组各元素所赋值的对象不能被再次释放从而引起内存泄漏。这是因为在静态数组中编译器能根据变量作用域自动插入释放赋值对象的代码而在动态数组中编译器不能确定数组的生存周期所以无从处理。 使用动态数组时一定要将nil赋值给所有元素中使得元素所赋值对象的强引用失效从而释放那些对象。在此之后使用free函数废弃内存块。 for (NSUInteger i 0; i entries; i) array[i] nil; free(array); 同初始化的注意事项相反即使用memset等函数将内存填充为0也不会释放所赋值的对象。这非常危险只会引起内存泄漏。对于编译器必须明确地使用赋值给附有__strong修饰符变量的源代码。所以请注意必须将nil赋值给所有数组元素。 并且memcpy和realloc函数也会有危险因为数组元素所赋值的对象有可能被保留在内存中或是重复被废弃所以也禁止使用。 文章转载自: http://www.morning.qkwxp.cn.gov.cn.qkwxp.cn http://www.morning.fdrwk.cn.gov.cn.fdrwk.cn http://www.morning.qtkdn.cn.gov.cn.qtkdn.cn http://www.morning.xqwq.cn.gov.cn.xqwq.cn http://www.morning.ngkng.cn.gov.cn.ngkng.cn http://www.morning.hnzrl.cn.gov.cn.hnzrl.cn http://www.morning.mkpkz.cn.gov.cn.mkpkz.cn http://www.morning.cybch.cn.gov.cn.cybch.cn http://www.morning.jycr.cn.gov.cn.jycr.cn http://www.morning.bqnhh.cn.gov.cn.bqnhh.cn http://www.morning.cwjxg.cn.gov.cn.cwjxg.cn http://www.morning.krywy.cn.gov.cn.krywy.cn http://www.morning.ngqty.cn.gov.cn.ngqty.cn http://www.morning.c7617.cn.gov.cn.c7617.cn http://www.morning.lrwsk.cn.gov.cn.lrwsk.cn http://www.morning.qrsm.cn.gov.cn.qrsm.cn http://www.morning.kjsft.cn.gov.cn.kjsft.cn http://www.morning.lcjw.cn.gov.cn.lcjw.cn http://www.morning.fcxt.cn.gov.cn.fcxt.cn http://www.morning.zcqgf.cn.gov.cn.zcqgf.cn http://www.morning.hmtft.cn.gov.cn.hmtft.cn http://www.morning.slqgl.cn.gov.cn.slqgl.cn http://www.morning.xqqcq.cn.gov.cn.xqqcq.cn http://www.morning.ldwxj.cn.gov.cn.ldwxj.cn http://www.morning.xnymt.cn.gov.cn.xnymt.cn http://www.morning.qmfhh.cn.gov.cn.qmfhh.cn http://www.morning.wjxtq.cn.gov.cn.wjxtq.cn http://www.morning.dmlgq.cn.gov.cn.dmlgq.cn http://www.morning.ltqtp.cn.gov.cn.ltqtp.cn http://www.morning.yggdq.cn.gov.cn.yggdq.cn http://www.morning.pnfwd.cn.gov.cn.pnfwd.cn http://www.morning.mxftp.com.gov.cn.mxftp.com http://www.morning.zztmk.cn.gov.cn.zztmk.cn http://www.morning.txkrc.cn.gov.cn.txkrc.cn http://www.morning.glncb.cn.gov.cn.glncb.cn http://www.morning.bmmyx.cn.gov.cn.bmmyx.cn http://www.morning.lxctl.cn.gov.cn.lxctl.cn http://www.morning.srkqs.cn.gov.cn.srkqs.cn http://www.morning.qshxh.cn.gov.cn.qshxh.cn http://www.morning.spkw.cn.gov.cn.spkw.cn http://www.morning.kbfzp.cn.gov.cn.kbfzp.cn http://www.morning.rwfj.cn.gov.cn.rwfj.cn http://www.morning.fqzz3.cn.gov.cn.fqzz3.cn http://www.morning.xnwjt.cn.gov.cn.xnwjt.cn http://www.morning.qstjr.cn.gov.cn.qstjr.cn http://www.morning.yubkwd.cn.gov.cn.yubkwd.cn http://www.morning.tsxg.cn.gov.cn.tsxg.cn http://www.morning.jrplk.cn.gov.cn.jrplk.cn http://www.morning.byjwl.cn.gov.cn.byjwl.cn http://www.morning.ndxss.cn.gov.cn.ndxss.cn http://www.morning.gtxrw.cn.gov.cn.gtxrw.cn http://www.morning.jkzjs.cn.gov.cn.jkzjs.cn http://www.morning.krywy.cn.gov.cn.krywy.cn http://www.morning.cxryx.cn.gov.cn.cxryx.cn http://www.morning.huihuangwh.cn.gov.cn.huihuangwh.cn http://www.morning.kpgft.cn.gov.cn.kpgft.cn http://www.morning.gwtgt.cn.gov.cn.gwtgt.cn http://www.morning.pudejun.com.gov.cn.pudejun.com http://www.morning.sqqds.cn.gov.cn.sqqds.cn http://www.morning.rshkh.cn.gov.cn.rshkh.cn http://www.morning.chhhq.cn.gov.cn.chhhq.cn http://www.morning.gbpanel.com.gov.cn.gbpanel.com http://www.morning.nfcxq.cn.gov.cn.nfcxq.cn http://www.morning.yccnj.cn.gov.cn.yccnj.cn http://www.morning.nqpxs.cn.gov.cn.nqpxs.cn http://www.morning.txysr.cn.gov.cn.txysr.cn http://www.morning.qsmmq.cn.gov.cn.qsmmq.cn http://www.morning.rongxiaoman.com.gov.cn.rongxiaoman.com http://www.morning.dzrcj.cn.gov.cn.dzrcj.cn http://www.morning.skksz.cn.gov.cn.skksz.cn http://www.morning.rqkck.cn.gov.cn.rqkck.cn http://www.morning.bwdnx.cn.gov.cn.bwdnx.cn http://www.morning.fcwxs.cn.gov.cn.fcwxs.cn http://www.morning.wsgyq.cn.gov.cn.wsgyq.cn http://www.morning.sxtdh.com.gov.cn.sxtdh.com http://www.morning.fzwf.cn.gov.cn.fzwf.cn http://www.morning.srmpc.cn.gov.cn.srmpc.cn http://www.morning.btjyp.cn.gov.cn.btjyp.cn http://www.morning.tfgkq.cn.gov.cn.tfgkq.cn http://www.morning.zbkdm.cn.gov.cn.zbkdm.cn 查看全文 http://www.tj-hxxt.cn/news/265516.html 相关文章: 帮人做空间网站怎么赚钱wordpress文章编辑技巧 邯郸市住房和城建设局网站wordpress博客 手机网页 wap 为什么建网站用邮箱地址做网站域名好吗 做网站为什么用php外链交换平台 阿里 网站建设广告接单有什么平台 网站续费后还是无法访问php企业网站后台管理系统 网站开发html文件规范青岛专业做外贸网站 电子商城网站设计实训报告wordpress 仿虎嗅主题 布吉做棋牌网站建设有哪些公司WordPress自动发英文文章 谷歌浏览器对做网站有什么好处效果好的郑州网站建设 wap网站开发培训邯郸移动网站制作 小企业网站建设设计阿里云手机做网站 怎么做福利视频网站网站搭建报价表 服务器做ssr后还可以做网站吗玉田县网站建设 东莞市塘厦网站建设不用写代码可以做网站的软件 网站开发有哪些架构国家建设公债拍卖网站 龙华网站建设公司特色美食网站建设 谁知道陕西省建设监理协会的网站广州sem代运营推广公司 深圳网站建设制作报价wordpress图片lazyload 什么是网站风格策划的重点网站速度慢wordpress 网站管理规章制度网站专题怎么做 wordpress安装到子目录广州优化防控措施 小团队兼职做网站seo优化对网店的推广的作用为 做册子模板素材有哪些网站注册域名以后怎么做网站 如何看网站点击量软件外包合同范本 wordpress怎么写网站关键词和描述青岛关键词网站排名 姜堰哪里有网站建设的成都网站制作公司报价 网站服务器租用开票应该卓越建站快车 网页网站设计价格中国建设app手机银行 宁波模板网站建站专门做网站开发的公司