我正在尝试获取使用float初始化的NSNumber的整数值,我期望intValue处理转换(正如文档所说).
#import <Foundation/Foundation.h>
#import "Fraction.h"
#import "Complex.h"
#import "ComplexMathOps.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSNumber *myNum, *floatNum, *intNum;
intNum = [NSNumber numberWithInt:100];
floatNum = [NSNumber numberWithFloat:99];
myNum = [floatNum intValue];
NSLog(@"%@",myNum);
[pool drain];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?在不同数字类型之间进行转换的正确方法是什么?
如何将struct __CFString*转换为CFStringRef?谢谢.
我试图在NSValue/ NSConcreteValueinstance中提取一个int .我试着以这种方式施放它们,但它不起作用:
NSValue *toValue = (NSValue *)someValue;
NSNumber *toNumber = (NSNumber*)toValue;
int final = [toNumber intValue];
Run Code Online (Sandbox Code Playgroud)
我也试过用,getValue但这对我也没用.
我可以通过以下代码检索OS X磁盘分区UUID:
void PrintUUID()
{
DADiskRef disk;
CFDictionaryRef descDict;
DASessionRef session = DASessionCreate(NULL);
if (session) {
disk = DADiskCreateFromBSDName(NULL, session, "/dev/disk0s2");
if (disk) {
descDict = DADiskCopyDescription(disk);
if (descDict) {
CFTypeRef value = (CFTypeRef)CFDictionaryGetValue(descDict,
CFSTR("DAVolumeUUID"));
CFStringRef strValue = CFStringCreateWithFormat(NULL, NULL,
CFSTR("%@"), value);
print(strVal); <------------- here is the output
CFRelease(strValue);
CFRelease(descDict);
}
CFRelease(disk);
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码检索disk0的UUID,我想检索根磁盘的UUID(挂载点= /),如果我使用"/"代替"/ dev/disk0s2",那么DADiskCopyDescription返回NULL.此外,我知道我可以通过此命令在终端中执行此操作:
diskutil info /
Run Code Online (Sandbox Code Playgroud)
简单地说,如何检索根磁盘的BSD名称?(在DADiskCreateFromBSDName中使用它)
有人有想法吗?谢谢.
下面是我的代码,它在 iOS 9 之前一直可以正常工作。
- (NSData *)encryptWithDataPublicKey:(NSString*)data keyTag:(NSString*)tag
{
SecKeyRef publicKey = NULL;
NSData *publicTag = [NSData dataWithBytes:[tag UTF8String] length:[tag length]];
NSMutableDictionary *queryPublicKey =
[[NSMutableDictionary alloc] init];
[queryPublicKey setObject:(__bridge id)kSecClassKey forKey:(__bridge id)kSecClass];
[queryPublicKey setObject:publicTag forKey:(__bridge id)kSecAttrApplicationTag];
[queryPublicKey setObject:(__bridge id)kSecAttrKeyTypeRSA forKey:(__bridge id)kSecAttrKeyType];
[queryPublicKey setObject:[NSNumber numberWithBool:YES] forKey:(__bridge id)kSecReturnRef];
OSStatus status = SecItemCopyMatching
((__bridge CFDictionaryRef)queryPublicKey, (CFTypeRef *)&publicKey);
NSData *encodedData = nil;
if (status == noErr && publicKey) {
NSData *dataToEncrypt = [data dataUsingEncoding:NSUTF8StringEncoding];
encodedData = [self encryptData:dataToEncrypt withKeyRef:publicKey];
CFRelease(publicKey);
}
return encodedData;
} …Run Code Online (Sandbox Code Playgroud) 在xcode中运行分析工具后,我得到以下记忆泄漏
//Getting memeory leak warning here "Potential leak of an object allocated and stored into 'phones'
ABMultiValueRef phones = ABRecordCopyValue(ref, kABPersonPhoneProperty);
//Getting potential leak error for line below
if (ABMultiValueGetCount(ABRecordCopyValue(ref, kABPersonPhoneProperty))!=0)
{
//Getting potential leak error for line below
CFStringRef pNumber = ABMultiValueCopyValueAtIndex(phones,0);
phoneNumber = [NSString stringWithFormat:@"%@", (NSString *)pNumber];
NSString *contactFirstLast = [NSString stringWithFormat: @"%@ %@", firstName, lastName];
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决这些泄漏?