美文网首页
strong weak assign copy

strong weak assign copy

作者: fordG | 来源:发表于2018-09-29 09:41 被阅读0次

    • strong 表示指向并拥有该对象,对象引用计数加1,该对象只要引用计数不为0,就不会销毁, 可以通过nil来强行销毁.

    • weak 表示指向但不拥有该对象,对象引用计数不会加1,该对象会自动在内存中被销毁.

    • assign 主要用于修饰基本数据类型, 这些数值都存在于栈种, 系统会帮你销毁

    • copy 主要用于对对象的拷贝,分为指针拷贝和值拷贝,如果自定义对象要想使用copy来修饰,须实现nscopy协议


    注意事项:

    • weak一般用来修饰对象,assign一般用来修饰基本数据类型,注意assign修饰的对象被释放后,指针的地址依然存在, 造成"野指针", 自定义的对象在堆上, 容易造成崩溃。栈上的内存系统会自动处理, 不会造成"野指针"。

    • copy和strong类型, 不同之处是, strong复制的是多个指针指向同一个地址,而copy的复制每次都会在内存中复制一份对象, 指针指向不同的地址。copy一般用在修饰有对应可变类型的不可变对象上, 如NSString NSArray等。

    相关文章

      网友评论

          本文标题:strong weak assign copy

          本文链接:https://www.haomeiwen.com/subject/blqvoftx.html