我正在观看文件系统事件的目录.一切似乎工作正常,但有一个例外.当我第一次创建文件时,它会吐出它已创建的文件.然后我可以删除它,它说它已被删除.当我再次创建同一个文件时,我同时获得了一个创建和删除的标志.我很明显误解了在调用回调时如何设置标志.这里发生了什么?
//
// 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) 我有一个函数,它获取一些位图数据并从中返回一个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回调来清理像素缓冲区,还有什么?
谢谢!
我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,我的系统重启/关闭/注销工作正常.有人可以解释一下这个原因吗?
我想创建一个包含所有字符的字符集,以及来自另一个字符集的字符集.换言之,附加.
我认为有一种显而易见的方法,但是在IDE中控制空间完成之后,然后在文档中查找,我无法做任何事情.
我可以看到如何追加字符串中的所有字符.但是我需要追加另一组中的角色.如果有一个to-string方法,我想我可以将第二组串起来.
我该怎么做呢?
整个的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"条目:
......没有一个man页面可用.如果这些类似文件的设备可以提供这方面的好处,我将有兴趣了解它们的用途,因为它可能属于它.
附录:我在这个问题上找不到多少内容; 2011年的Google Plus帖子声称:
[t]他的文件是一个特殊设备,由内核中的autofs文件系统实现监控.打开时,autofs文件系统不会在autofs文件系统上的任何I/O操作上阻止该进程.
我不太清楚这意味着什么(他们专门讨论了如何launchd工作,FWIW)但我自己很好奇,所以我编写了一个快速的上下文管理器-Y RAII结构来试用它 - 非目标性的分析显示了POSIX的测试调用完成速度更快但在一般哈希标记内; 在我获得更多关于它如何工作的背景之后,我将用更精细的梳子来研究这种策略.
iOS/Objective-C:我有一大堆布尔值.
这是存储这些值的低效方法 - 当只需要一个时,每个元素至少使用8位.
我该如何优化?
(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吗?
我已经通过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) 我已经建立了一个全球热键RegisterEventHotkey.当用户按下它时,它会获得当前聚焦的窗口CGWindowListCopyWindowInfo,然后我需要将它始终置于顶部.
如果当前窗口在我的进程中(我从中执行代码)我可以简单地将windowNumberfrom 转换CGWindowListCopyWindowInfo为a NSWindow并执行setLevel:
nswin = [NSApp windowWithWindowNumber:windowNumber]
[nswin setLevel: Int(CGWindowLevelForKey(kCGFloatingWindowLevelKey))]
Run Code Online (Sandbox Code Playgroud)
我的问题如果当前关注的窗口不在我的进程中,我无法做到这一点.你能告诉我怎么样吗?
我试过的东西:
我碰到过CGSSetWindowLevel的CGPrivate.h-无证的东西- https://gist.github.com/Noitidart/3664c5c2059c9aa6779f#file-cgsprivate-h-L63 -但是我记得我试过在过去这样的事情,但我想会得到一个错误连接到不在调用进程中的窗口.
只有窗口的所有者才能操纵它.因此,Apple拥有一个拥有所有窗口的通用所有者的概念,并且可以操纵它们.一次只能有一个通用所有者(Dock).
也许,无论如何,假装我的呼叫过程暂时成为码头?也许CGSGetConnectionIDForPSN对于码头然后使用该连接?
我的用法:我正在尝试复制我的开源,免费,浏览器插件的功能 - https://addons.mozilla.org/en-US/firefox/addon/topick/ - 所以我的调用过程如果Firefox.它现在适用于Windows和Linux,只需要弄清楚如何在Mac中为非Firefox窗口做这件事.
我需要从CFDictionary实例中读取和写入一些数据(以读取和更新照片中的EXIF数据).对于我的生活,我无法弄清楚如何在Swift 3中执行此操作.我想要的呼叫的签名是:
func CFDictionaryGetValue(CFDictionary!, UnsafeRawPointer!)
Run Code Online (Sandbox Code Playgroud)
我怎么把我的键(一个字符串)转换成一个UnsafeRawPointer所以我可以将它传递给这个调用?
core-foundation ×10
objective-c ×5
ios ×3
c ×2
cocoa ×2
macos ×2
macos-carbon ×2
applescript ×1
asynchronous ×1
bitarray ×1
bsd ×1
crash ×1
finder ×1
fsevents ×1
iphone ×1
quartz-2d ×1
swift ×1
swift3 ×1
uiimage ×1
vfs ×1
xnu ×1