小编Dru*_*erB的帖子

使用AppleScript设置窗口的位置

我正在尝试使用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尝试相同的代码,它可以工作.但是大多数其他应用程序都不起作用.

macos cocoa applescript finder appleevents

10
推荐指数
3
解决办法
1万
查看次数

怎么样?带有UIImageView的UITableViewCell通过ASINetworkQueue异步加载

我正在尝试异步加载表格单元格中的一些图像ASINetworkQueue.我只是想不出来,似乎无法找到一个很好的SIMPLE例子.

我能找到的最好的就是这个,但它对我来说完全矫枉过正,有点太复杂了:http: //kosmaczewski.net/2009/03/08/asynchronous-loading-of-images-in-a-uitableview/

有没有其他人有任何提示/解决方案/代码与ASIHTTPRequest库这样做?

asynchronous uitableview uiimageview asihttprequest

9
推荐指数
1
解决办法
4906
查看次数

OS X目标的预处理器宏?

我有一个既有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)

macos xcode cocoa objective-c ios

9
推荐指数
3
解决办法
1万
查看次数

使用NSTreeController,在更改模型数组时是否必须手动重新加载NSOutlineView?

我有一个类似树的模型,我希望使用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)

cocoa binding objective-c nsoutlineview nstreecontroller

8
推荐指数
1
解决办法
1702
查看次数

在编译时在所有.c源文件中包含#define

我需要#define在大约300个.c文件的顶部包含一个.我宁愿不更改代码,因为它是开源代码,但如果我必须,我将只编写一个脚本来修改所有文件.有没有办法#define在编译期间使用gcc在每个源文件的顶部添加一个或头文件include?这#define是:

#define malloc MYmalloc
Run Code Online (Sandbox Code Playgroud)

c gcc

8
推荐指数
2
解决办法
8428
查看次数

Xcode在哪里保存程序的可执行文件或等效文件?

我正在尝试进行I/O重定向以从文件中输入我的程序.我需要知道可执行文件的位置,以便将其输入终端.我在Mac上,在C中使用Xcode.另外,我只能使用终端来获取输入.

xcode

8
推荐指数
1
解决办法
1万
查看次数

将userInteractionEnabled设置为YES的sprite在正常精灵覆盖时不会接收到触摸

我放了一个精灵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完全"吞下"了触摸,尽管没有启用交互.

objective-c sprite-kit

8
推荐指数
2
解决办法
5606
查看次数

令牌文本字段,如Numbers

我想要一个文本字段,如Numbers中的表达式编辑器文本字段:

在此输入图像描述

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

在此输入图像描述

我必须将这些令牌嵌入到特定位置的文本中,否则它们的工作方式完全相同NSTokenField(退格会删除令牌,您可以将它们拖动等等).

有没有第一方或第三方控制做这样的事情?我没找到任何东西.

如果没有,你会如何推荐实施它?使用核心文本并重新发明轮子(实现NSTextField更好的令牌支持)?或者有更好的解决方案吗?

cocoa objective-c nstextfield appkit nstokenfield

7
推荐指数
1
解决办法
1122
查看次数

在iOS 5.1设备上运行的程序找不到带有Xcode 4.5的SDK

当我在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模拟器?

xcode build ios6

7
推荐指数
1
解决办法
4643
查看次数

使用NSTask和NSPipe会导致100%的CPU使用率

我正在尝试使用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测试返回下面的列表,但我不知道如何解释这个.

在此输入图像描述

macos cocoa objective-c nstask nspipe

7
推荐指数
1
解决办法
1230
查看次数