标签: core-foundation

OSX FSEventStreamEventFlags无法正常工作

我正在观看文件系统事件的目录.一切似乎工作正常,但有一个例外.当我第一次创建文件时,它会吐出它已创建的文件.然后我可以删除它,它说它已被删除.当我再次创建同一个文件时,我同时获得了一个创建和删除的标志.我很明显误解了在调用回调时如何设置标志.这里发生了什么?

//
//  main.c
//  GoFSEvents
//
//  Created by Kyle Cook on 8/22/13.
//  Copyright (c) 2013 Kyle Cook. All rights reserved.
//

#include <CoreServices/CoreServices.h>
#include <stdio.h>
#include <string.h>

void eventCallback(FSEventStreamRef stream, void* callbackInfo, size_t numEvents, void* paths, const FSEventStreamEventFlags eventFlags[], const FSEventStreamEventId eventIds[]) {
    char **pathsList = paths;

    for(int i = 0; i<numEvents; i++) {
        uint32 flag = eventFlags[i];

        uint32 created = kFSEventStreamEventFlagItemCreated;
        uint32 removed = kFSEventStreamEventFlagItemRemoved;

        if(flag & removed) {
            printf("Item Removed: %s\n", pathsList[i]);
        }
        else if(flag …
Run Code Online (Sandbox Code Playgroud)

c macos core-foundation fsevents

15
推荐指数
1
解决办法
2041
查看次数

缓冲区 - > CGImageRef-> UIImage的内存管理模式是什么?

我有一个函数,它获取一些位图数据并从中返回一个UIImage*.它看起来像这样:

UIImage * makeAnImage() 
{
    unsigned char * pixels = malloc(...);
    // ...
    CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, pixels, pixelBufferSize, NULL);
    CGImageRef imageRef = CGImageCreate(..., provider, ...);
    UIImage * image =  [[UIImage alloc] initWithCGImage:imageRef];
    return [image autorelease];
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以确切地解释谁在这里拥有什么记忆?我想要正确清理,但我不确定如何安全地进行清理.文档在这些上是模糊的.如果free在创建UIImage之后我在此函数末尾的像素,然后使用UIImage,我崩溃了.如果我在创建UIImage之后释放提供者或imageRef,我没有看到崩溃,但他们显然已经完全传递了像素,所以我对释放这些中间状态感到不安.

(我知道每个CF文档我都需要在后者上调用release,因为它们来自Create函数,但是我可以在使用UIImage之前这样做吗?)大概我可以使用提供者的dealloc回调来清理像素缓冲区,还有什么?

谢谢!

iphone core-graphics core-foundation uiimage quartz-2d

14
推荐指数
2
解决办法
8221
查看次数

我的系统拒绝使用NSAppleScript类关闭/重启

CFPlugin用于10.5上的上下文菜单和图标覆盖(相同scplugin).对于我的应用程序和查找程序之间的通信,我正在使用distributed object.在Contextual menu items文件夹中安装我的插件后,我的系统拒绝重启/关闭/注销.在活动监视器中,我无法退出查找程序,只有强制退出正在查找查找程序.在控制台上我得到10.5.8

ERROR | -[ApplicationManager(AppleEventHandling) _tryQuitAllForRequestor:replyEvent:] | _tryQuitAllForRequestor - _vproc_set_global_on_demand returned error -1805620379  
Run Code Online (Sandbox Code Playgroud)

如果没有Finder和我的应用程序之间的通信,系统重启/关闭/注销工作正常.
在10.5.4

loginwindow[41]: ERROR | WSActivateApp | SetFrontProcess({0, 7980956}) returned error -600. Unable to activate process.

loginwindow[41]: ERROR | -[ApplicationManager(AppleEventHandling) _tryQuitAllForRequestor:replyEvent:] | _tryQuitAllForRequestor - _vproc_set_global_on_demand returned error -1780878507
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

编辑

我的问题解决了.我NSAppleScript用来执行苹果脚本.现在我正在使用NSTask,我的系统重启/关闭/注销工作正常.有人可以解释一下这个原因吗?

applescript finder macos-carbon objective-c core-foundation

14
推荐指数
1
解决办法
898
查看次数

NSCharacterSet - 附加另一个字符集

我想创建一个包含所有字符的字符集,以及来自另一个字符集的字符集.换言之,附加.

我认为有一种显而易见的方法,但是在IDE中控制空间完成之后,然后在文档中查找,我无法做任何事情.

我可以看到如何追加字符串中的所有字符.但是我需要追加另一组中的角色.如果有一个to-string方法,我想我可以将第二组串起来.

我该怎么做呢?

cocoa objective-c core-foundation

14
推荐指数
2
解决办法
5018
查看次数

在OS X上使用/ dev/autofs_nowait的风险和回报

整个的CoreFoundation框架源,POSIX文件系统API调用(例如open(),stat(),等人...)被包裹在一个成语其中在描述符/dev/autofs_nowait获取-与open(…, 0)- POSIX的呼叫才制成; 之后描述符是close()在范围退出之前的'd'.

  • 这样做有什么好处?有什么风险?

  • 获取/dev/autofs_nowait描述符是否会对任何如此包装的open()调用(例如O_NONBLOCK)的标记产生影响,或者是否受其影响?

  • /dev 在我的机器上,运行OS X 10.10.5还有其他"autofs"条目:

    dev目录列表

    ......没有一个man页面可用.如果这些类似文件的设备可以提供这方面的好处,我将有兴趣了解它们的用途,因为它可能属于它.



附录:我在这个问题上找不到多少内容; 2011年Google Plus帖子声称:

[t]他的文件是一个特殊设备,由内核中的autofs文件系统实现监控.打开时,autofs文件系统不会在autofs文件系统上的任何I/O操作上阻止该进程.

我不太清楚这意味着什么(他们专门讨论了如何launchd工作,FWIW)但我自己很好奇,所以我编写了一个快速的上下文管理器-Y RAII结构试用它 - 非目标性的分析显示了POSIX的测试调用完成速度更快但在一般哈希标记内; 在我获得更多关于它如何工作的背景之后,我将用更精细的梳子来研究这种策略.

bsd asynchronous vfs core-foundation xnu

13
推荐指数
1
解决办法
309
查看次数

如何在C/Objective C中实现位数组

iOS/Objective-C:我有一大堆布尔值.

这是存储这些值的低效方法 - 当只需要一个时,每个元素至少使用8位.

我该如何优化?

c objective-c core-foundation bitarray ios

12
推荐指数
3
解决办法
9212
查看次数

保留核心基金会财产

(Xcode 4.2,iOS 5,ARC)

我有一些Core Foundation(/ Graphics)对象的属性应该取得对象的所有权.现在在这些Apple文档中我发现了这个:

在OS X v10.6及更高版本中,您可以使用__attribute__关键字指定应将Core Foundation属性视为用于内存管理的Objective-C对象: @property(retain) __attribute__((NSObject)) CFDictionaryRef myDictionary;

不幸的是我找不到任何详细说明.我正在使用这个:

@property (nonatomic, strong) __attribute__((NSObject)) CGImageRef loupeImage;

它看起来像我期望的那样工作.它保留了设置属性的对象,并在将属性设置为nil时将其释放.

现在我的问题是,我还需要在dealloc中将这些属性显式设置为nil吗?

objective-c core-foundation ios automatic-ref-counting

12
推荐指数
1
解决办法
2607
查看次数

iOS崩溃核心位置CFBasicHashCreateCopy?

我已经通过Crashlytics报告了这个问题,虽然我一直无法在本地复制它,所以除了下面的堆栈跟踪之外我没什么可去的.不确定堆栈跟踪中是否有对CoreLocation的引用与它有任何关系,但我不确定可能是什么原因.我的项目正在使用ARC.任何线索?

Thread : Crashed: com.apple.CoreLocation.ConnectionClient.0x14eb3510.events
0  CoreFoundation                 0x307769a8 CFBasicHashCreateCopy + 712
1  libobjc.A.dylib                0x3afd1a19 object_setClass + 24
2  CoreFoundation                 0x30782d0f CFDictionaryCreateMutableCopy + 154
3  CoreLocation                   0x30d0a8f3 CLLocationCoordinate2DGetDistanceFrom + 47590
4  CoreLocation                   0x30d2d607 CLClientCreateIso6709Notation + 49626
5  CoreFoundation                 0x30786d45 __CFDictionaryApplyFunction_block_invoke + 16
6  CoreFoundation                 0x30772cd4 CFBasicHashApply + 128
7  CoreFoundation                 0x3077be27 CFDictionaryApplyFunction + 154
8  CoreLocation                   0x30d2cc25 CLClientCreateIso6709Notation + 47096
9  CoreLocation                   0x30d2b625 CLClientCreateIso6709Notation + 41464
10 libxpc.dylib                   0x3b5fc3a9 _xpc_connection_call_event_handler + 40
11 libxpc.dylib                   0x3b5fee67 do_mach_notify_port_destroyed + 122
12 libxpc.dylib                   0x3b5fedd1 …
Run Code Online (Sandbox Code Playgroud)

crash core-foundation core-location ios

12
推荐指数
1
解决办法
2206
查看次数

设置非自有窗口始终位于顶部 - 就像应用程序"Afloat"

我已经建立了一个全球热键RegisterEventHotkey.当用户按下它时,它会获得当前聚焦的窗口CGWindowListCopyWindowInfo,然后我需要将它始终置于顶部.

如果当前窗口在我的进程中(我从中执行代码)我可以简单地将windowNumberfrom 转换CGWindowListCopyWindowInfo为a NSWindow并执行setLevel:

nswin = [NSApp windowWithWindowNumber:windowNumber]
[nswin setLevel: Int(CGWindowLevelForKey(kCGFloatingWindowLevelKey))]
Run Code Online (Sandbox Code Playgroud)

我的问题如果当前关注的窗口不在我的进程中,我无法做到这一点.你能告诉我怎么样吗?

我试过的东西:

我的用法:我正在尝试复制我的开源,免费,浏览器插件的功能 - https://addons.mozilla.org/en-US/firefox/addon/topick/ - 所以我的调用过程如果Firefox.它现在适用于Windows和Linux,只需要弄清楚如何在Mac中为非Firefox窗口做这件事.

macos cocoa macos-carbon objective-c core-foundation

12
推荐指数
1
解决办法
750
查看次数

如何在Swift 3中访问CFDictionary?

我需要从CFDictionary实例中读取和写入一些数据(以读取和更新照片中的EXIF数据).对于我的生活,我无法弄清楚如何在Swift 3中执行此操作.我想要的呼叫的签名是:

func CFDictionaryGetValue(CFDictionary!, UnsafeRawPointer!)
Run Code Online (Sandbox Code Playgroud)

我怎么把我的键(一个字符串)转换成一个UnsafeRawPointer所以我可以将它传递给这个调用?

core-foundation swift swift3

11
推荐指数
2
解决办法
6241
查看次数