我正在尝试使用AppleScript设置Messages.app聊天窗口的位置.
tell application "System Events"
set position of window 1 of application "Messages" to {100, 100}
end tell
Run Code Online (Sandbox Code Playgroud)
使用此代码我收到一个错误:
error "Messages got an error: Can’t set «class posn» of window 1 to {100, 100}."
number -10006 from «class posn» of window 1
Run Code Online (Sandbox Code Playgroud)
那是什么意思?
如果我使用Finder尝试相同的代码,它可以工作.但是大多数其他应用程序都不起作用.
我正在尝试异步加载表格单元格中的一些图像ASINetworkQueue.我只是想不出来,似乎无法找到一个很好的SIMPLE例子.
我能找到的最好的就是这个,但它对我来说完全矫枉过正,有点太复杂了:http: //kosmaczewski.net/2009/03/08/asynchronous-loading-of-images-in-a-uitableview/
有没有其他人有任何提示/解决方案/代码与ASIHTTPRequest库这样做?
我有一个既有iOS又有OS X目标的项目.在编译OS X时是否有预处理器宏?我试过这个:
#if TARGET_OS_MAC
@interface BFNode : NSObject <NSPasteboardReading, NSPasteboardWriting> {
#else
@interface BFNode : NSObject {
#endif
Run Code Online (Sandbox Code Playgroud)
但TARGET_OS_MAC似乎没有用.当我尝试在iOS上运行应用程序时,我遇到编译器错误,因为它尝试编译第一行,并且NSPasteboardReading在iOS上没有定义协议.
我知道也有TARGET_OS_IPHONE.如果我使用它并交换@interface它起作用的声明.
但是有很多地方我有代码,没有iOS版本,所以我也需要OS X的宏.
解:
我最终在.pch文件中定义了一个新的宏:
#define TARGET_OSX TARGET_OS_IPHONE == 0
Run Code Online (Sandbox Code Playgroud) 我有一个类似树的模型,我希望使用NSTreeController在NSOutlineView中显示.
我能够设置绑定,只要我使用NSTreeController的插入和删除函数来更改我的模型树,一切正常.如果我尝试直接从模型树插入或删除,在某些情况下NSOutlineView不会更新.
如果我将对象插入到扩展的对象组中,它的工作原理如下:


但是如果我尝试将第一个对象添加到节点中,之前没有子节点,则没有任何反应.显示三角形没有出现,所以我无法扩展它以查看新节点.


如果我将鼠标悬停在具有新对象的节点上,它将被展开,我可以添加第二个没有问题的子节点.但三角形仍然是隐形的:

最后,如果我关闭所有这些节点的父节点并再次打开它们(触发重新加载),则会突然出现三角形:

这就是为什么我想知道是否必须手动重新加载NSOutlineView的行以使三角形可见,或者我是否搞砸了什么?谢谢!!
更新:
在我的Node类中,我添加了一个像这样的新子节点:
- (void)addChild:(MyNode *)child {
[self willChangeValueForKey:@"childNodes"];
[children addObject:child];
[self didChangeValueForKey:@"childNodes"];
}
Run Code Online (Sandbox Code Playgroud)
我也实现了这些(我在IB中为我的NSTreeController设置):
- (NSArray *)childNodes {
return [NSArray arrayWithArray:children];
}
- (NSInteger)countOfChildNodes {
return [children count];
}
- (BOOL)nodeIsLeaf {
return [children count] < 1;
}
Run Code Online (Sandbox Code Playgroud)
我知道这(特别是childNodes)并没有得到很好的优化,但我现在只是在试验,因为在最终版本中我的孩子将被存储在C数组中.
更新2:
我也试过发送其他2个属性的KVO通知,但这也没有帮助.
- (void)addChild:(MyNode *)child {
NSLog(@"%@", NSStringFromSelector(_cmd));
[self willChangeValueForKey:@"nodeIsLeaf"];
[self willChangeValueForKey:@"countOfChildNodes"];
[self willChangeValueForKey:@"childNodes"];
[children addObject:child];
[self didChangeValueForKey:@"childNodes"];
[self didChangeValueForKey:@"countOfChildNodes"];
[self didChangeValueForKey:@"nodeIsLeaf"];
}
Run Code Online (Sandbox Code Playgroud) 我需要#define在大约300个.c文件的顶部包含一个.我宁愿不更改代码,因为它是开源代码,但如果我必须,我将只编写一个脚本来修改所有文件.有没有办法#define在编译期间使用gcc在每个源文件的顶部添加一个或头文件include?这#define是:
#define malloc MYmalloc
Run Code Online (Sandbox Code Playgroud) 我正在尝试进行I/O重定向以从文件中输入我的程序.我需要知道可执行文件的位置,以便将其输入终端.我在Mac上,在C中使用Xcode.另外,我只能使用终端来获取输入.
我放了一个精灵A(子类接收命中(userInteractionEnabled为YES)),然后是一个正常的精灵B,它不会在其上面点击(userInteractionEnabled默认为NO),完全覆盖精灵A.
点击精灵B,我认为精灵A会得到触摸,但没有任何反应.关于此事的文档部分如下.
我觉得这里有些东西不清楚,因为似乎精灵B仍然接受了触摸,但却抛弃了它.或者,spriteA从可能的触摸接收器中移除,因为它不可见.
来自文档:https: //developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Nodes/Nodes.html#//apple_ref/doc/uid/TP40013043-CH3-SW7
对于在命中测试期间要考虑的节点,其userInteractionEnabled属性必须设置为YES.除场景节点外,任何节点的默认值均为NO.想要接收事件的节点需要从其父类(iOS上的UIResponder和OS X上的NSResponder)实现适当的响应方法.这是您必须在Sprite Kit中实现特定于平台的代码的少数几个地方之一
有任何解决这个问题的方法吗?只要某个用户的userInteractionEnabled为NO,它就不会干扰其他触摸接收器.
更新:即使将精灵B的alpha设置为0.2,使精灵A非常可见,也不会使精灵A可触摸.Sprite B完全"吞下"了触摸,尽管没有启用交互.
我想要一个文本字段,如Numbers中的表达式编辑器文本字段:

它非常相似NSTokenField,但NSTokenField只支持分隔符分隔的标记列表,如Mail.app中的"To:"字段.

我必须将这些令牌嵌入到特定位置的文本中,否则它们的工作方式完全相同NSTokenField(退格会删除令牌,您可以将它们拖动等等).
有没有第一方或第三方控制做这样的事情?我没找到任何东西.
如果没有,你会如何推荐实施它?使用核心文本并重新发明轮子(实现NSTextField更好的令牌支持)?或者有更好的解决方案吗?
当我在iOS 5.1模拟器上运行我的项目时,它会显示出来
yld: lazy symbol binding failed: Symbol not found: _objc_setProperty_nonatomic_copy
Referenced from: /Users/apple/Library/Application Support/iPhone Simulator/5.1/Applications/3A003E5F-2C66-494F-BCC1-C3EE82F01464/dogTree.app/dogTree
Expected in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk/System/Library/Frameworks/Foundation.framework/Foundation
Run Code Online (Sandbox Code Playgroud)
我没有5.1 SDK.但为什么库搜索路径是5.1而不是6.0?
我的所有项目都在iOS 6.0设备上运行,但是当我在iOS 5.0或5.1设备上安装时,它崩溃并显示如下消息.
请给我一些帮助,iOS 5.1 SDK是否有必要运行iPhone 5.1模拟器?
我正在尝试使用NSTask运行一个简单的bash脚本并将输出定向到文本视图.执行任务后,我的应用程序的CPU使用率为100%,即使它很简单echo(暂时).
我创建了一个全新的项目来隔离问题:
@interface AppDelegate ()
@property (nonatomic) NSTask *task;
@property (nonatomic) NSPipe *pipe;
@end
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
self.pipe = [NSPipe pipe];
self.pipe.fileHandleForReading.readabilityHandler = ^(NSFileHandle *h) {
NSLog(@"Read: %@", [h readDataToEndOfFile]);
};
self.task = [[NSTask alloc] init];
self.task.launchPath = @"/bin/bash";
self.task.arguments = @[@"-c", @"echo test"];
self.task.standardOutput = self.pipe;
[self.task launch];
}
@end
Run Code Online (Sandbox Code Playgroud)
它被正确执行并输出(作为NSData)记录NSLog:
PipeTest[3933:2623] Read: <74657374 0a>
Run Code Online (Sandbox Code Playgroud)
但是,在我终止我的应用程序之前,CPU使用率保持在100%.
编辑:
Time Profiler测试返回下面的列表,但我不知道如何解释这个.

cocoa ×5
objective-c ×5
macos ×3
xcode ×3
appkit ×1
appleevents ×1
applescript ×1
asynchronous ×1
binding ×1
build ×1
c ×1
finder ×1
gcc ×1
ios ×1
ios6 ×1
nspipe ×1
nstask ×1
nstextfield ×1
nstokenfield ×1
sprite-kit ×1
uiimageview ×1
uitableview ×1