1.__bridge 关键字来实现id类型与void*类型的相互转换,即OC与C指针的转换。
2.__block Blocks可以访问局部变量,但是不能修改。如果修改局部变量,需要加__block。
3.__weak 为什么不用__block 是因为通过引用来访问self的实例变量 ,self被retain,block也是一个强引用,引起循环引用,用__week是弱引用,当self释放时,weakSelf已经等于nil。
4.__strong 强引用,默认。
5.alloc 对象分配后引用计数为1。
6.retain 对象的引用计数+1。
7.copy copy 一个对象变成新的对象(新内存地址) 引用计数为1 原来对象计数不变。
8.release 对象引用计数-1 如果为0释放内存。
9.autorelease 对象引用计数-1 如果为0不马上释放,最近一个autoreleasePool时释放。
10.strong 用来修饰强引用的属性。
11.weak 用来修饰弱引用的属性。
12.unsafe_unretained 类似weak,但是不指向nil,会导致野指针。
copy和retain的区别
copy: 建立一个索引计数为1的对象,然后释放旧对象
retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1。
copy和strong的区别
copy是为了安全,防止NSMutableString赋值给NSString时,前者修改引起后者值变化而用的。
网友评论