我有一个double
在 a中返回 a 的函数void *
。但是,它似乎松开了指针,或者似乎无法获取该值,因为它一旦退出函数就会返回 0。
您将如何创建一个 double 并将其分配为 void * 的值,然后在不超出范围的情况下返回它。
这个函数的想法是它将一个对象从 Objective-C 转换为 C++ 中的某个对象,但并非 C++ 中的所有内容都是一个对象,例如在 Objective C 中的 double。
void * IDToSTD (id anObject){
void * stdObject = NULL;
if ([anObject class] == [PFObject class]) {
stdObject = BridgePFObject((void *)CFBridgingRetain(anObject));
return stdObject;
}
CFTypeRef inTypeRef = (__bridge CFTypeRef)anObject;
CFTypeID type = CFGetTypeID(inTypeRef);
if (type == CFArrayGetTypeID()) {
std::vector<void *> arr = NSArrayToSTDVector([(NSArray *)anObject copy]);
stdObject = &arr;
} else if (type == CFDictionaryGetTypeID()) {
std::map<std::string, void *> dict = NSDictionaryToSTDMap([(NSDictionary *)anObject copy]);
stdObject = &dict;
} else if (type == CFStringGetTypeID()) {
stdObject = (char *)[(NSString *) anObject cStringUsingEncoding:NSUTF8StringEncoding];
} else if (type == CFNumberGetTypeID()) {
double *value = (double *)malloc(sizeof(double *));
*value = [(NSNumber *)anObject doubleValue];
stdObject = value;
} else {
[NSException raise:@"Invalid object value" format:@"Object must be of basic Core Foundation or Parse Type, Object Type is: %@", NSStringFromClass([anObject class])];
}
return stdObject;
}