Ios UIImageController委托未声明错误

Ios UIImageController委托未声明错误,ios,objective-c,camera,delegates,uiimagepickercontroller,Ios,Objective C,Camera,Delegates,Uiimagepickercontroller,我知道这个问题被问了好几次。 但我遵循这两种方法来解决未声明的标识符self 我在.m类中声明了@interface 我相信您正面临这些错误,因为您是在C++/C方法中编写的。如果在objective-c方法中编写,您的问题应该得到解决 - (void)cameraCapture { UIImagePickerController *picker = [UIImagePickerController new]; picker.delegate = self; } 您可以按照以下

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

我在.m类中声明了@interface


我相信您正面临这些错误,因为您是在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;
}
CameraCapture(1, "imgName", (__bridge void *)self);
按以下方式从Objective-C方法调用它

void cameraCapture(void* object) {

    YourCurrentViewController *vc = (__bridge YourCurrentViewController *)object;

    UIImagePickerController *picker = [UIImagePickerController new];
    picker.delegate = vc;
}
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++方法访问<代码>自我>代码>。您需要将其传递给函数。这就是输入
void*对象的原因。
void*
是一个没有关联数据类型的指针。它可以保存任何类型的地址,并且可以被类型转换为任何类型。

我相信您面临这些错误,因为您是在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;
}
CameraCapture(1, "imgName", (__bridge void *)self);
按以下方式从Objective-C方法调用它

void cameraCapture(void* object) {

    YourCurrentViewController *vc = (__bridge YourCurrentViewController *)object;

    UIImagePickerController *picker = [UIImagePickerController new];
    picker.delegate = vc;
}
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++方法访问<代码>自我>代码>。您需要将其传递给函数。这就是输入
void*对象的原因。
void*
是一个没有关联数据类型的指针。它可以保存任何类型的地址,并且可以类型转换为任何类型。

您必须在imagepicker上声明委托方法,然后它将被解决。您为什么要用C/C++方法编写此文件?那是一个.mm文件吗?用objective-c方法编写。您的问题将得到解决您必须在imagepicker上声明委托方法,然后它将得到解决您为什么要用C/C++方法编写此文件?那是一个.mm文件吗?用objective-c方法编写。你的问题会得到正确的解决。我没有意识到这一点。但是你能解释一下如何从c/c++方法调用这个方法吗?谢谢你的回答。但我在这方面是新手,所以,我想学习这个。你对此有任何参考链接吗?我建议你阅读苹果公司关于
免费桥接的文档
void*
表示它指向任何对象,类似于objective-c中的
id
。我建议你通过一个很棒的C++书籍和苹果的核心基础文档文档。另外,请向上投票:您需要更新您的答案,我想从c/c++方法调用objective c(ios)方法。你提到了反诗流我没有任何实物之类的东西。参考我的问题。我试过你的方法。它不起作用。(无效*对象)??正确。我没有意识到这一点。但是你能解释一下如何从c/c++方法调用这个方法吗?谢谢你的回答。但我在这方面是新手,所以,我想学习这个。你对此有任何参考链接吗?我建议你阅读苹果公司关于
免费桥接的文档
void*
表示它指向任何对象,类似于objective-c中的
id
。我建议你通过一个很棒的C++书籍和苹果的核心基础文档文档。另外,请向上投票:您需要更新您的答案,我想从c/c++方法调用objective c(ios)方法。你提到了反诗流我没有任何实物之类的东西。参考我的问题。我试过你的方法。它不起作用。(无效*对象)??