我想使用这个问题答案中的代码: 如何在NSTextField上观察NSTextField的值,以便观察存储在NSTextField中的字符串的变化.
[[NSNotificationCenter defaultCenter]
addObserverForName:NSTextViewDidChangeSelectionNotification
object:self.textView
queue:[NSOperationQueue mainQueue]
usingBlock:^(NSNotification *note){
NSLog(@"Text: %@", self.textView.textStorage.string);
}];
Run Code Online (Sandbox Code Playgroud)
这里使用的类是NSTextView.我在NSTextField中找不到通知而不是使用NSTextViewDidChangeSelectionNotification.
NSTextField中是否有可用于此情况的通知?
我有NSCollectionView一个小问题但很关键的例外.获取并突出显示集合中的所选项目.
在Snow Leopard之前我已经完成了所有这些工作,但是有些东西似乎发生了变化,我无法完全按照它进行操作,所以我把我的NSCollectionView右手放回基本测试并按照Apple的文档创建了一个NSCollectionView:
根据快速入门指南,集合视图可以正常工作.但是,本指南不讨论除了以外的选择"There are such features as incorporating image views, setting objects as selectable or not selectable and changing colors if they are selected".
以此为例,我进入了将Array Controller NSCollectionView与控制器键绑定的下一步selectionIndexes,认为这将绑定我NSCollectionView在阵列控制器之间做出的任何选择,从而触发KVO通知.我还设置了NSCollectionView在IB中可选择.
似乎没有选择委托,NSCollectionView并且与大多数Cocoa UI视图不同,似乎没有默认的选定突出显示.
所以我的问题实际上归结为一个相关的问题,但有两个截然不同的问题.
NSCollectionView编程指南似乎很少,而且大多数通过Google搜索似乎都会提升Snow Leopard之前的实现,或者在单独的XIB文件中使用该视图.
对于后者(视图的单独XIB文件),我不明白为什么这应该是先决条件,否则我会怀疑Apple不会将视图包含在与集合视图项相同的包中.
我知道这将是一个"无法看到木头为树"的问题 - 所以我已经为"doh!"做好了准备.时刻.
像往常一样,任何和所有帮助非常感谢.
更新1
好的,所以我想找到所选的项目,但尚未确定突出显示.有兴趣计算所选项目(假设您正在关注Apple指南):
在控制器中(在我的测试用例中,App Delegate)我添加了以下内容:
在awakeFromNib中
[personArrayController addObserver:self
forKeyPath:@"selectionIndexes"
options:NSKeyValueObservingOptionNew
context:nil];
Run Code Online (Sandbox Code Playgroud)
新方法
-(void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
if([keyPath isEqualTo:@"selectionIndexes"])
{
if([[personArrayController …Run Code Online (Sandbox Code Playgroud) cocoa objective-c nsview nscollectionview nscollectionviewitem
我有一个sqlite3数据库.一列有TEXT类型,并包含我想保存为文件的blob.这些是gzip压缩文件.
该命令的输出sqlite3 db.sqlite3 ".dump" 是:
INSERT INTO "data" VALUES(1,'objects','object0.gz',X'1F8B080000000000000 [.. a few thousands of hexadecimal characters ..] F3F5EF')
如何使用命令行将sqlite文件中的二进制数据提取到文件中?
我有一个带有UIImageView子视图的UIView.我需要在UIImageView中加载图像而不阻止UI.阻塞呼叫似乎是:UIImage imageNamed:.以下是我认为解决这个问题的方法:
-(void)updateImageViewContent {
dispatch_async(
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
UIImage * img = [UIImage imageNamed:@"background.jpg"];
dispatch_sync(dispatch_get_main_queue(), ^{
[[self imageView] setImage:img];
});
});
}
Run Code Online (Sandbox Code Playgroud)
图像很小(150x100).
但是,加载图像时仍然会阻止UI.我错过了什么?
这是一个展示此行为的小代码示例:
基于UIImageView创建一个新类,将其用户交互设置为YES,在UIView中添加两个实例,并实现其touchesBegan方法,如下所示:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
if (self.tag == 1) {
self.backgroundColor= [UIColor redColor];
}
else {
dispatch_async(dispatch_get_main_queue(), ^{
[self setImage:[UIImage imageNamed:@"woodenTile.jpg"]];
});
[UIView animateWithDuration:0.25 animations:
^(){[self setFrame:CGRectInset(self.frame, 50, 50)];}];
}
}
Run Code Online (Sandbox Code Playgroud)
将标记1分配给其中一个imageView.
从加载图像的视图开始几乎同时点击两个视图时会发生什么?UI是否因为等待[self setImage:[UIImage imageNamed:@"woodenTile.jpg"]];返回而被阻止?如果是这样,我该如何异步执行此操作?
这是一个 带有ipmcc代码的github项目
使用长按然后拖动在黑色方块周围绘制一个矩形.据我理解他的答案,理论上白色选择矩形不应该在第一次加载图像时被阻挡,但实际上是.
项目中包含两个图像(一个小图片:woodenTile.jpg和一个较大图片:bois.jpg).结果与两者相同.
我真的不明白这与第一次加载图像时UI被阻止的问题有什么关系,但是PNG图像在不阻挡UI的情况下进行解码,而JPG图像会阻止UI.

UI的阻止从这里开始..

..并在此结束.

NSURL * url = …Run Code Online (Sandbox Code Playgroud) 我试图在OS X 10.8上使用XCode 4.5.1编译示例代码"SonofGrab".
一个函数在controller.m中定义如下
inline uint32_t ChangeBits(uint32_t currentBits, uint32_t flagsToChange, BOOL setFlags);
Run Code Online (Sandbox Code Playgroud)
这会导致出现此错误消息:
Undefined symbols for architecture x86_64:
"_ChangeBits", referenced from:
-[Controller awakeFromNib] in Controller.o
[...]
ld: symbol(s) not found for architecture x86_64
Run Code Online (Sandbox Code Playgroud)
删除函数ChangeBits的内联解决了问题,但为什么链接器找不到具有原始定义的Changebits?
我有一个NSMutableArray包含各种长度的NSStrings.我如何按字符串长度排序数组?
我对C++还是个新手,所以请耐心等待.我正在为一种名为Core的假设语言实现一个解释器,这种语言由BNF语法描述.到目前为止,我已经实现了一个tokenizer,它为我提供了一个代表Core程序的令牌.我现在正在编写Parser/Executer,它从标记生成器获取输出并使用它来使用递归下降解析来填充ParseTree类的对象(我必须设计).我理解如何执行此操作的基本原理,但是在实现ParseTree类时遇到了问题.Core BNF描述的产品通常具有2-5个终端/非终端符号,但是一些可能具有多达20个,因此我需要一个n-ary树,其中每个节点可以具有不同数量的子节点.
我想ParseTree类不一定需要使用树来实现它,但这似乎最有意义(是否存在可能更好/更容易的不同数据结构?).我不知道STL中的任何容器符合我的需要.我已经查看了Boost属性树,但是我可以告诉它也无法工作.如果可能的话,我宁愿不重新发明轮子并从头开始实施一棵树.另外,除了Boost之外,我无法使用任何外部库.实现ParseTree的最佳方法是什么?我可以使用任何好的预制树实现吗?
根据文档,可以在CATextLayer中启用字体平滑:
Text can only be drawn using sub-pixel antialiasing when it is composited into an existing opaque background at the same time that it's rasterized.
这是我理解这句话的方式:
@implementation CATextLayerWithFontSmoothing
-(id)init {
self=[super init];
if (self) {
CALayer * whiteBackground = [CALayer layer];
CATextLayer * blackText = [CATextLayer layer];
[whiteBackground setBounds:NSMakeRect(0, 0, 300, 300)];
[blackText setBounds:NSMakeRect(0, 0, 300, 300)];
[whiteBackground setBackgroundColor:[NSColor whiteColor].CGColor];
[blackText setForegroundColor:[NSColor blackColor].CGColor];
[blackText setString:@"CATextLayer"];
[blackText setShouldRasterize:YES];
[self addSublayer:whiteBackground];
[self addSublayer: blackText];
}
return self;
Run Code Online (Sandbox Code Playgroud)
这不起作用.不使用子像素消除锯齿绘制文本.
我遵循属于openCV doc的这些说明,但它们确实过时了:提到了iOS4或iOS5,在/ Developer中安装了XCode 4.2等.
它没有构建,我有各种错误:
所有初始测试都失败了: - Performing Test HAVE_CXX_W - Failed
另外:
-- Looking for fseeko
-- Looking for fseeko - not found
-- Looking for unistd.h
-- Looking for unistd.h - not found
-- Looking for sys/types.h
-- Looking for sys/types.h - not found
-- Looking for stdint.h
-- Looking for stdint.h - not found
-- Looking for stddef.h
-- Looking for stddef.h - not found
Run Code Online (Sandbox Code Playgroud)
配置看起来正确:
-- General configuration for OpenCV 2.4.9 =====================================
-- Version …Run Code Online (Sandbox Code Playgroud) 我正在学习为iPhone编程.我正在试图弄清楚如何做一些非常酷的自定义视图动画.我应该学习什么,Quartz或OpenGL ES?
对于谁说OpenGL ES,我可以使用它来为我的视图制作动画,还是仅适用于Quartz的任务?谢谢.
还有任何资源/书籍或任何以最无痛的方式教你这些东西的东西?