无法在发布模式框架中回调块中的 NSError

问题描述

我只在发布模式下构建了一个名为 myTool.framework 的框架。

在这个框架中有一个带有块回调的函数

// myTools.h
- (void)initServiceWithKey:(Nsstring * _Nullable)accessKey
                  complete:(void(^)(NSError *error,NSInteger roomType))complete;


// myTools.m
@property (nonatomic,copy) void (^complete)(NSError * error,NSInteger roomType);
@property (nonatomic,strong) NSError *error;

- (void)initServiceWithKey:(Nsstring * _Nullable)accessKey
                  complete:(void(^)(NSError *error,NSInteger roomType))complete {


    balabala...

    if (somethingWrong) {
      self.error = [NSError errorWithDomain:@"Error Domain" code:-1 userInfo:nil];

      if (self.complete) {
          self.complete(self.error,-1);
          return;
      }
    }
}

然后我在这样的演示中使用它:

[myToos sharedInstance] initServiceWithKey:@"123key" complete:^(NSError * _Nonnull error,NSInteger roomType) {
    if (!error) {

      #error always is nil here when run demo in release mode,roomType is fine.

    }
}

在 Debug 中运行 demo 时,我可以正常得到错误,但在 Release 中错误始终为零,因为 NSInteger 很好。

我已经将错误和块保存为单例属性,但没有用。

为什么会这样,我该如何解决?谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)