标签: core-foundation

将intValue消息发送到NSNumber会导致"错误访问"错误

我正在尝试获取使用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)

我究竟做错了什么?在不同数字类型之间进行转换的正确方法是什么?

macos cocoa objective-c core-foundation

0
推荐指数
2
解决办法
6464
查看次数

将struct __CFString*转换为CFStringRef

如何将struct __CFString*转换为CFStringRef?谢谢.

core-foundation

0
推荐指数
1
解决办法
376
查看次数

从NSConcreteValue/NSValue中获取一个int

我试图在NSValue/ NSConcreteValueinstance中提取一个int .我试着以这种方式施放它们,但它不起作用:

    NSValue *toValue = (NSValue *)someValue;
    NSNumber *toNumber = (NSNumber*)toValue;
    int final = [toNumber intValue];
Run Code Online (Sandbox Code Playgroud)

我也试过用,getValue但这对我也没用.

core-foundation ios ios5 nsvalue

0
推荐指数
1
解决办法
4291
查看次数

如何以编程方式检索OS X中的根磁盘分区的UUID?

我可以通过以下代码检索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中使用它)

有人有想法吗?谢谢.

macos xcode cocoa objective-c core-foundation

0
推荐指数
1
解决办法
1865
查看次数

iOS10 中的 CFRelease 崩溃

下面是我的代码,它在 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)

objective-c core-foundation seckeyref ios10 xcode8

0
推荐指数
1
解决办法
1861
查看次数

解决潜在的内存泄漏问题

在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)

我该如何解决这些泄漏?

memory-leaks objective-c core-foundation abaddressbook ios

-1
推荐指数
1
解决办法
1785
查看次数