Ios UIImageController 委托未声明错误

Ios UIImageController delegate undeclared error

我知道这个问题被问过好几次了。 但是我按照这两种方法来解决未声明的标识符 self.

我在 .m 中声明了@interface class

我相信您遇到这些错误是因为您是在 C++/C 方法中编写的。如果您将它写在 objective-c 方法中,您的问题应该得到解决。

- (void)cameraCapture {
    UIImagePickerController *picker = [UIImagePickerController new];
    picker.delegate = self;
}

可以按照下面的方式写在C/C++方法中

void cameraCapture(void* object) {

    YourCurrentViewController *vc = (__bridge YourCurrentViewController *)object;

    UIImagePickerController *picker = [UIImagePickerController new];
    picker.delegate = vc;
}

按以下方式从 Objective-C 方法中调用它。

CameraCapture(1, "imgName", (__bridge void *)self);

从 C/C++ 方法调用 Objective-C 方法。

void CameraCapture(long cCameraClient, const char *imgName, void* object) {

    SATController *vc = (__bridge SATController *)object;
    UIImagePickerController *picker = [UIImagePickerController new];
    picker.delegate = self;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    picker.allowsEditing = YES;

    [self presentModalViewController:picker animated:YES];
}

此外,您不能直接从 C++ 方法访问 self。您需要将其传递给函数。这就是输入 void *object 的原因。 void* 是一个没有关联数据类型的指针。它可以保存任何类型的地址,并且可以转换为任何类型。