【问题标题】:NSInvalidArgumentException in objective-c callObjective-C 调用中的 NSInvalidArgumentException
【发布时间】:2020-10-18 16:03:36
【问题描述】:

抱歉,我只是在 Flutter 下处理继承的 Objective-C 项目的第二天。

我只是 obj-c 代码的一个新方法,它会引发异常。

我猜我的方法签名有问题。

当我检查 path 和 callbackUuid 变量时,它们在调用之前具有预期值。

代码是从颤振/飞镖调用的,但我认为这与问题无关。

NSInvalidArgumentException  
unrecognized selector sent to instance xxxx
[NSObject(NSObject) doesNotRecognizeSelector]
_CF_forwarding_prep_0
SoundPlayerManger handlerMethodCall:result

调用代码:

NSString* path = (NSString*)call.arguments[@"path"];
                NSString* callbackUuid = (NSString*)call.arguments[@"callbackUuid"];
                [aSoundPlayer getDuration:path callbackUuid: callbackUuid result:result];

声明

- (void)getDuration: (NSString*_Nonnull)path callbackUuid:(NSString*_Nonnull)callbackUuid  result:(FlutterResult _Nonnull )result;

我正在调用的方法:


- (void)getDuration: (NSString*)path callbackUuid:(NSString*)callbackUuid  result:(FlutterResult)result
{
        /// let the dart code resume whilst we calculate the duratin.
        result(@"queued");
        NSLog(@"getDuration queued");

        NSURL *afUrl = [NSURL fileURLWithPath:path];
        AudioFileID fileID;
        NSLog(@"Call AudioFileOpenUrl");
        OSStatus status = AudioFileOpenURL((__bridge CFURLRef)afUrl, kAudioFileReadPermission, 0, &fileID);
        Float64 outDataSize = 0;
        UInt32 thePropSize = sizeof(Float64);
        status = AudioFileGetProperty(fileID, kAudioFilePropertyEstimatedDuration, &thePropSize, &outDataSize);
        AudioFileClose(fileID);

        NSLog(@"%@", [NSString stringWithFormat:@"getDuration status%d", (int)status]);

        if (status == kAudioServicesNoError)
        {
                int milliseconds = outDataSize * 1000;

                NSString* args = [NSString stringWithFormat:@"{\"callbackUuid\": \"%@\", \"milliseconds\": %d}"
                                ,callbackUuid
                                , milliseconds ];
                [self invokeCallback:@"durationResults" stringArg:args];
        }
        else
        {
                /// danger will robison, danger
            NSString* args = [NSString stringWithFormat:@"{\"callbackUuid\": \"%@\", \"description\": \"%d\"}"
                              , callbackUuid
                              , (int)status ];
                [self invokeCallback:@"onError" stringArg:args];

        }
        
}

【问题讨论】:

    标签: ios objective-c flutter exception


    【解决方案1】:

    结果证明我的方法签名是正确的,只是没有创建实例。

    伟大的消息团队!

    【讨论】:

      猜你喜欢
      • 2012-01-31
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多