小编ale*_*ail的帖子

NSTextField的文本更改通知

我想使用这个问题答案中的代码: 如何在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中是否有可用于此情况的通知?

cocoa nsnotifications nstextfield observer-pattern

51
推荐指数
3
解决办法
4万
查看次数

选择在NSCollectionView中突出显示

我有NSCollectionView一个小问题但很关键的例外.获取并突出显示集合中的所选项目.

在Snow Leopard之前我已经完成了所有这些工作,但是有些东西似乎发生了变化,我无法完全按照它进行操作,所以我把我的NSCollectionView右手放回基本测试并按照Apple的文档创建了一个NSCollectionView:

http://developer.apple.com/mac/library/DOCUMENTATION/Cocoa/Conceptual/CollectionViews/Introduction/Introduction.html

根据快速入门指南,集合视图可以正常工作.但是,本指南不讨论除了以外的选择"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视图不同,似乎没有默认的选定突出显示.

所以我的问题实际上归结为一个相关的问题,但有两个截然不同的问题.

  1. 如何捕获项目的选择?
  2. 如何显示项目的突出显示?

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

32
推荐指数
4
解决办法
2万
查看次数

如何将存储在sqlite数据库中的文件转储为blob?

我有一个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文件中的二进制数据提取到文件中?

sqlite blob

32
推荐指数
3
解决办法
2万
查看次数

如何在UIImageView中异步加载图像?

我有一个带有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.

事件的年表

第0步 步骤1

UI的阻止从这里开始..

第2步

..并在此结束.

第3步

AFNetworking解决方案

    NSURL * url = …
Run Code Online (Sandbox Code Playgroud)

objective-c uiimageview grand-central-dispatch ios

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

链接内联函数的错误

我试图在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?

xcode linker objective-c clang osx-mountain-lion

22
推荐指数
1
解决办法
6546
查看次数

如何按NSString长度对NSMutableArray进行排序?

我有一个NSMutableArray包含各种长度的NSStrings.我如何按字符串长度排序数组?

sorting iphone cocoa objective-c ios

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

用于递归下降解析的C++ n-ary树实现

我对C++还是个新手,所以请耐心等待.我正在为一种名为Core的假设语言实现一个解释器,这种语言由BNF语法描述.到目前为止,我已经实现了一个tokenizer,它为我提供了一个代表Core程序的令牌.我现在正在编写Parser/Executer,它从标记生成器获取输出并使用它来使用递归下降解析来填充ParseTree类的对象(我必须设计).我理解如何执行此操作的基本原理,但是在实现ParseTree类时遇到了问题.Core BNF描述的产品通常具有2-5个终端/非终端符号,但是一些可能具有多达20个,因此我需要一个n-ary树,其中每个节点可以具有不同数量的子节点.

我想ParseTree类不一定需要使用树来实现它,但这似乎最有意义(是否存在可能更好/更容易的不同数据结构?).我不知道STL中的任何容器符合我的需要.我已经查看了Boost属性树,但是我可以告诉它也无法工作.如果可能的话,我宁愿不重新发明轮子并从头开始实施一棵树.另外,除了Boost之外,我无法使用任何外部库.实现ParseTree的最佳方法是什么?我可以使用任何好的预制树实现吗?

c++ tree parsing data-structures

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

如何让CATextLayer平滑其文本?

根据文档,可以在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)

这不起作用.不使用子像素消除锯齿绘制文本.

macos core-animation objective-c antialiasing subpixel

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

如何为iOS构建OpenCV 2.4.9?

我遵循属于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)

opencv compiler-errors ios

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

我应该学习什么:Quartz或OpenGL ES?

我正在学习为iPhone编程.我正在试图弄清楚如何做一些非常酷的自定义视图动画.我应该学习什么,Quartz或OpenGL ES?

对于谁说OpenGL ES,我可以使用它来为我的视图制作动画,还是仅适用于Quartz的任务?谢谢.

还有任何资源/书籍或任何以最无痛的方式教你这些东西的东西?

iphone sdk opengl-es quartz-graphics

6
推荐指数
1
解决办法
3637
查看次数