![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
oc
文章平均质量分 96
objc
洋洋dev
别在机场等一艘船
展开
-
类中的 @property @synthesize @dynamic
@interface Person : NSObject@property(nonatomic, strong) NSString *age;- (void)test;@end@implementation Person- (void)test { // 调用setter方法 self.age = @"5"; // 调用getter方法 NSLog(@"%@",self.age);}@end调用- (void)viewDidLoad { [super原创 2021-12-19 13:33:14 · 456 阅读 · 0 评论 -
block的循环引用
前言block的循环引用Q: 为什么 block 会产生循环引用?相互循环引用:如果当前block对当前对象的某一成员变量进行捕获的话,可能会对它产生强引用。根据block的变量捕获机制,如果block被拷贝到堆上,且捕获的是对象类型的auto变量,则会连同其所有权修饰符一起捕获,所以如果对象是__strong修饰,则block会对它产生强引用(如果block在栈上就不会强引用)。而当前block可能又由于当前对象对其有一个强引用,就产生了相互循环引用的问题;总结必须同时满足2个条件1、 b原创 2021-12-11 11:50:42 · 3324 阅读 · 0 评论 -
block对copy的实现
对block进行copy经常会用到,block的copy底层是什么实现的?之前的文章介绍了block的数据结构和内存管理,本篇说一下block的copy实现。copy的范围case 1 // struct __main_block_impl_0 需要copy 示例代码int age = 6;void(^block)(void) = ^{ NSLog(@"a==%d",age);};case 2 // struct __main_block_impl_0 需要copy NSObje原创 2021-12-09 00:32:02 · 765 阅读 · 0 评论