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*
是一个没有关联数据类型的指针。它可以保存任何类型的地址,并且可以转换为任何类型。
我知道这个问题被问过好几次了。 但是我按照这两种方法来解决未声明的标识符 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*
是一个没有关联数据类型的指针。它可以保存任何类型的地址,并且可以转换为任何类型。