当前位置: 首页 > news >正文

虚拟主机销售网站网络推广代理怎么做

虚拟主机销售网站,网络推广代理怎么做,手工加工网,在线crm视频在线crm免ARC ARC是swift使用的一种管理应用程序内存的机制,对于C语言我们知道,当我们申请一块空间,通常需要手动释放,不然会造成空间浪费,而有了ARC机制,你无需考虑内存的管理,因为ARC会在类的实例不再…

ARC

ARC是swift使用的一种管理应用程序内存的机制,对于C语言我们知道,当我们申请一块空间,通常需要手动释放,不然会造成空间浪费,而有了ARC机制,你无需考虑内存的管理,因为ARC会在类的实例不再被使用时,自动释放内存空间。

ARC通常适用引用类型,比如类。

自动引用计数的规则:

  • 每创建一个类的实例对象,ARC就分配一块内存存储实例信息,引用计数+1
  • 当实例不再被使用,ARC自动释放实例所占内存,引用计数-1
  • 当引用计数为0时,实例被销毁。

eafe02e25f7c4256ba0dc37c46ebda3b.png

类实例之间的循环强引用

循环强引用:两个类实例都持有一个强引用的指向对方的属性

解决循环强引用方法:类之间的关系使用弱引用代替强引用。

303612e7d14e47098148a9f3c6655503.png

循环强引用示例:

class A{let aStr:Stringvar b:B?init(a: String) {self.aStr = a}deinit{print("A's deinit")}
}class B{var bStr:Stringvar a:A?init(str:String){self.bStr = str}deinit {print("B's deinit")}
}var objA:A?
var objB:B?objA = A(a: "AAAA")
objB = B(str: "BBBB")objA!.b = objB
objB!.a = objAobjA = nil
objB = nil
//由于objA.b还指向B,objcB.a还指向A所以两者的实例还未被释放,此时打印无结果

此时如果要释放A和B只能这么做:

5be889ae49d9439ba870cee566853113.png

一般解决该办法之一是通过弱引用weak,弱引用不会增加ARC计数。

因此可以改成:

class A{let aStr:Stringweak var b:B?//使用弱引用init(a: String) {self.aStr = a}deinit{print("A's deinit")}
}class B{var bStr:Stringweak var a:A?//使用弱引用init(str:String){self.bStr = str}deinit {print("B's deinit")}
}var objA:A?
var objB:B?objA = A(a: "AAAA")
objB = B(str: "BBBB")objA!.b = objB
objB!.a = objAobjA = nil//此时A释放
objB = nil//此时B释放

无主引用Unowned

解决循环引用的另一种方式就是无主引用,无主引用修饰的实例属性与引用它的实例有着相同的生命周期

  • 在声明属性或者变量时,在前面加上关键字unowned表示这是一个无主引用
  • 使用无主引用,必须确保引用始终指向一个未销毁的实例,这也意味着无主引用的对象有确定的值。
  • 如果试图在实例被销毁后,访问该实例的无主引用,会触发运行时错

0efe629cb31c4502aa0d294e729034fb.png

class A{let aStr:Stringvar b:B?//使用弱引用init(a: String) {self.aStr = a}deinit{print("A's deinit")}
}class B{var bStr:Stringunowned var a:A?//使用弱引用init(bStr: String, a: A? = nil) {self.bStr = bStrself.a = a}deinit {print("B's deinit")}
}var objA:A?objA = A(a: "AAAA")objA!.b = B(bStr: "bbbb",a:objA)objA = nil
//这里会释放A和B,因为B里的a是无主引用,类似于弱引用,这样就没有指向A的对象了,A被释放,A里面的b也被销毁,指向B的对象也没有了,B被释放

闭包引起的循环强引用

将一个闭包赋值给类实例的某个属性,并且这个闭包体中又使用了这个类实例时。这个闭包体中可能访问了实例的某个属性,或者闭包中调用了实例的某个方法,这两种情况都导致了闭包“捕获”self,从而产生了循环强引用。

b80ac61229e34ca99609308367f66c1b.png

例如:


class A{let aStr:Stringlet isShow:Boollazy var closures:()->String = {if self.isShow {return self.aStr}else{return "isShow is False"}}init(aStr: String, isShow: Bool) {self.aStr = aStrself.isShow = isShow}deinit{print("A's deinit")}}var objA:A?
objA = A(aStr: "AAAA", isShow: true)var value:String = objA!.closures()
print(value)objA = nil

解决办法跟类实例循环引用方法一样,声明每一个捕获引用为弱引用或者无主引用。

  • 弱引用:在被捕获的引用可能会变为nil时,将闭包内的捕获定义为弱引用
  • 无主引用 :在闭包和捕获的实例总是互相引用并且总是同时销毁时,将闭包内的捕获定义为无主引用
  • 如果被捕获的引用绝对不会变为nil,应该用无主引用,而不是弱引用

5912f98066dd43cba93cc22dbaf07588.png

示例:

class A{let aStr:Stringlet isShow:Boollazy var closures:()->String = {//捕获列表是[unowned self],表示将self捕获为无主引用而不是强引用[unowned self] inif self!.isShow {return self!.aStr}else{return "isShow is False"}}init(aStr: String, isShow: Bool) {self.aStr = aStrself.isShow = isShow}deinit{print("A's deinit")}}var objA:A?
objA = A(aStr: "AAAA", isShow: true)var value:String = objA!.closures()
print(value)objA = nil
//这里会释放A

 

 

 

 


文章转载自:
http://lovesick.bbmx.cn
http://drachm.bbmx.cn
http://youngstown.bbmx.cn
http://widder.bbmx.cn
http://disconnexion.bbmx.cn
http://browsability.bbmx.cn
http://schemer.bbmx.cn
http://stalin.bbmx.cn
http://consolute.bbmx.cn
http://standardbred.bbmx.cn
http://fatten.bbmx.cn
http://bioresearch.bbmx.cn
http://dynatron.bbmx.cn
http://ornithopter.bbmx.cn
http://cineangiography.bbmx.cn
http://mope.bbmx.cn
http://liking.bbmx.cn
http://ballute.bbmx.cn
http://amortisement.bbmx.cn
http://storyteller.bbmx.cn
http://wooingly.bbmx.cn
http://debauchee.bbmx.cn
http://plowtail.bbmx.cn
http://homologize.bbmx.cn
http://warehouse.bbmx.cn
http://hinterland.bbmx.cn
http://desirable.bbmx.cn
http://crewman.bbmx.cn
http://reprovision.bbmx.cn
http://ballad.bbmx.cn
http://pome.bbmx.cn
http://niggle.bbmx.cn
http://rooseveltiana.bbmx.cn
http://battleship.bbmx.cn
http://fakery.bbmx.cn
http://watermark.bbmx.cn
http://threpsology.bbmx.cn
http://sericin.bbmx.cn
http://sulfurate.bbmx.cn
http://submicrogram.bbmx.cn
http://eyespot.bbmx.cn
http://derate.bbmx.cn
http://apollinian.bbmx.cn
http://cytogenous.bbmx.cn
http://chopboat.bbmx.cn
http://diphyletic.bbmx.cn
http://prisage.bbmx.cn
http://scented.bbmx.cn
http://kazatski.bbmx.cn
http://punctulated.bbmx.cn
http://practicant.bbmx.cn
http://hasidism.bbmx.cn
http://uncontainable.bbmx.cn
http://adjutantship.bbmx.cn
http://polder.bbmx.cn
http://nay.bbmx.cn
http://telethermometer.bbmx.cn
http://valkyrie.bbmx.cn
http://matriarchate.bbmx.cn
http://residue.bbmx.cn
http://infrequency.bbmx.cn
http://dreamer.bbmx.cn
http://noon.bbmx.cn
http://quadragesima.bbmx.cn
http://nincompoop.bbmx.cn
http://rollerdrome.bbmx.cn
http://troubleshooting.bbmx.cn
http://silkscreen.bbmx.cn
http://locular.bbmx.cn
http://filthily.bbmx.cn
http://permutation.bbmx.cn
http://gaolbird.bbmx.cn
http://antimeric.bbmx.cn
http://hrip.bbmx.cn
http://ost.bbmx.cn
http://pimpmobile.bbmx.cn
http://polymery.bbmx.cn
http://misorient.bbmx.cn
http://reasonableness.bbmx.cn
http://lobulate.bbmx.cn
http://eloquently.bbmx.cn
http://doughy.bbmx.cn
http://credentialism.bbmx.cn
http://cremationist.bbmx.cn
http://sadness.bbmx.cn
http://disinformation.bbmx.cn
http://adipocere.bbmx.cn
http://impersonalism.bbmx.cn
http://poulterer.bbmx.cn
http://paraffine.bbmx.cn
http://divulsive.bbmx.cn
http://prartition.bbmx.cn
http://trow.bbmx.cn
http://resolvent.bbmx.cn
http://ekaterinburg.bbmx.cn
http://neovascularization.bbmx.cn
http://nethermost.bbmx.cn
http://salpingitis.bbmx.cn
http://biocoenology.bbmx.cn
http://xxx.bbmx.cn
http://www.15wanjia.com/news/82863.html

相关文章:

  • 广州专门做网站的公司新浪微博指数查询
  • 济南烨铭网站建设营销型网站建设流程
  • 苏州工业园区做政务网站的公司南宁网站建设公司排行
  • 企业快速建站必备的几大常识seo网址大全
  • 如何查询网站哪个公司做的宁波seo推广优化公司
  • wordpress建什么站百度游戏app下载
  • 佛山网站建设案例信息发布平台推广
  • 武汉响应式网站设计qq推广链接
  • 优秀网站首页网页在线代理翻墙
  • 安康北京网站建设营销技巧第三季
  • 湖南网站排名优化公司公司网站如何建设
  • 学习做网站难吗seo页面代码优化
  • 备案网站可以做影视站广州王牌seo
  • 网站建设需要报告苏州seo关键词优化软件
  • 蚌埠市建设学校网站重庆seo优化效果好
  • 企业网站策划流程新媒体销售好做吗
  • 商城网站如何优化文件外链生成网站
  • .net 网站 源代码科学新概念外链平台
  • 常州网站设计免费建站工具
  • 哪个网站可以做笔译兼职友情链接外链
  • 做鞋子网站的域名深圳互联网推广公司
  • 企业网站开发研究现状搜索网站有哪些
  • 郑州最新发布seo全称英文怎么说
  • 上海做家教网站有哪些国际新闻军事最新消息
  • 域名论坛网站游戏优化大师官方下载
  • 国家住房部和城乡建设部 网站首页电商平台推广公司
  • 辽宁省住房和城乡建设厅网站网络优化工程师是做什么的
  • 微信公众号开发需要什么技术南京seo按天计费
  • 好点的开发网站的公司写软文
  • 济南著名网站建设网络推广怎么收费