• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - Xcode 单元测试中出现奇怪的保留周期警告

[复制链接]
菜鸟教程小白 发表于 2022-12-13 12:51:09 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一项服务,目前正在为其编写单元测试。代码按预期工作,但我收到一个奇怪的保留周期警告。

[self.myService doSomethingCoolWithCompletionBlock:^(MyResponseObject *obj) {
    XCTAssertNil(obj, @"obj should be nil");
}];

XCTAssertNil(obj, @"obj should be nil"); 行在 Xcode 中显示警告 在此 block 中强烈捕获 'self' 可能会导致保留周期.

如果我将代码更改为以下内容,警告将被删除:

__weak MyService *weakService = self.myService;
[weakService doSomethingCoolWithCompletionBlock:^(MyResponseObject *obj) {
    XCTAssertNil(obj, @"obj should be nil");
}];

我在其他单元测试中使用了 self.someService,从来没有遇到过这个问题。以前有人遇到过这种情况吗?

编辑

我有另一个测试具有以下内容:

[self.myService doSomethingElseCoolWithCompletionBlockNSArray *results) {
    XCTestAssertNotNil(results, @"results should not be nil");
}];

这不会给我警告。我看到的唯一区别是,这是检查数组,而另一个检查特定类型的对象。



Best Answer-推荐答案


断言它是宏,并在内部使用了 self。 所以你需要创建名称为 self 的局部变量。

__weak id weakSelf = self;
self.fooBlock = ^{
    id self = weakSelf;
    XCTAssert(YES);
};

关于ios - Xcode 单元测试中出现奇怪的保留周期警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35019301/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap