小编adi*_*dib的帖子

正确调整基于视图的NSTableView上的行的大小

NSTableView更改表视图大小时,基于视图的具有动态高度的行不会调整其行的大小.当行高从表视图的宽度派生时,这是一个问题(想想填充列并包装因此扩展行大小的文本块).

NSTableView每当它改变大小但我没有成功时,我一直试图调整行的大小:

  • 如果我通过查询仅调整可见行的大小enumerateAvailableRowViewsUsingBlock:,则一些不可见的行不会调整大小,因此当用户滚动并显示这些行时,会显示旧的高度.
  • 如果我调整所有行的大小,当有很多行时会变得非常慢(在我的1.8Ghz i7 MacBook Air中每个窗口调整1000行后大约1秒延迟).

有人可以帮忙吗?

这是我检测表视图大小更改的位置 - 在表视图的委托中:

- (void)tableViewColumnDidResize:(NSNotification *)aNotification
{
    NSTableView* aTableView = aNotification.object;
    if (aTableView == self.messagesView) {
        // coalesce all column resize notifications into one -- calls messagesViewDidResize: below

        NSNotification* repostNotification = [NSNotification notificationWithName:BSMessageViewDidResizeNotification object:self];
        [[NSNotificationQueue defaultQueue] enqueueNotification:repostNotification postingStyle:NSPostWhenIdle];
    }
}
Run Code Online (Sandbox Code Playgroud)

以下是上面发布的通知的处理程序,其中可见行的大小调整:

-(void)messagesViewDidResize:(NSNotification *)notification
{
    NSTableView* messagesView = self.messagesView;

    NSMutableIndexSet* visibleIndexes = [NSMutableIndexSet new];
    [messagesView enumerateAvailableRowViewsUsingBlock:^(NSTableRowView *rowView, NSInteger row) {
        if (row >= 0) {
            [visibleIndexes addIndex:row];
        } …
Run Code Online (Sandbox Code Playgroud)

macos cocoa objective-c nstableview appkit

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

为什么NSFastEnumeration快?

有没有人知道是否NSFastEnumeration真的更快(如在运行时性能)比使用NSEnumerator或(对于数组)使用整数计数器并循环元素?

如果它确实更快,它如何达到这个速度?

或许"快速"实际上指的是编写迭代代码的速度更快?

提前致谢.

performance cocoa iterator objective-c fast-enumeration

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

为Lion的用户界面恢复功能编码NSViewController

知道NSViewController在窗口内部存档用于恢复(用户界面保存)目的的最佳实践是什么?我试过在窗口控制器的encodeRestorableStateWithCoder:方法中存档它 只是为了发现视图控制器在restoreStateWithCoder:被调用时没有被取消存档 .

// NSWindowController subclass

-(void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
    [super encodeRestorableStateWithCoder:coder];
    NSViewController* contentViewController = self.contentViewController;
    if (contentViewController) {
        [coder encodeObject:contentViewController forKey:BSContentViewControllerResumeKey];
    }
}

-(void)restoreStateWithCoder:(NSCoder *)coder
{
    [super restoreStateWithCoder:coder];
    NSViewController* contentViewController = [coder decodeObjectForKey:BSContentViewControllerResumeKey];
    if (contentViewController) {
        // somehow this never get executed since contentViewController always comes out nil
        self.contentViewController = contentViewController;
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,此视图控制器包含管理其自己的子视图的其他视图控制器,因此在NSCoder实例中需要一些范围- 只需coder向下传递提供的对象将导致存档中的名称冲突.

提前致谢!

resume cocoa appkit osx-lion nsarchiving

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

通过Objective-C中的类别有条件地覆盖系统方法?

有没有办法在系统中尚未定义方法时提供方法实现(与框架定义的方法具有完全相同的名称)?例如,方法[NSSomeClass someMethod:]仅存在于Mac OS X 10.6中,如果我的应用程序在10.5中运行,我将在类别中提供该方法的定义.但是当应用程序在10.6中运行时,我希望运行OS提供的方法.

背景:我正在创建一个针对10.5和10.6的应用程序.问题是我最近意识到该方法+[NSSortDescriptor sortDescriptorWithKey:ascending:]仅存在于10.6中,并且我的代码已经被该方法调用所困扰.我可以为它提供一个默认实现(因为这次我自己实现起来并不太困难),但是我希望每当我的应用程序在10.6上运行时都会调用"本机"实现.此外,如果我将来遇到类似的问题(更难以实现自己的方法),我可能无法摆脱提供单线代替.

这个问题模糊地类似于通过ObjC类覆盖一个方法并调用默认实现?但不同之处在于我只想在系统还没有实现时才提供实现.

谢谢.

macos cocoa objective-c

7
推荐指数
2
解决办法
730
查看次数

哪些iOS类不支持归零弱引用?

__weak在使用自动引用计数(ARC)时,是否有iOS中的类列表无法使用指针引用?

Apple 过渡到ARC发行说明目前仅列出了Mac类:

哪些类不支持归零弱引用?

您当前无法创建对以下类的实例的归零弱引用:

NSATSTypesetter,NSColorSpace,NSFont,NSFontManager,NSFontPanel,NSImage,NSMenuView,NSParagraphStyle,NSSimpleHorizontalTypesetter,NSTableCellView,NSTextView,NSViewController,NSWindow,和NSWindowController.此外,在OS X中,AV Foundation框架中的任何类都不支持弱引用.

是否有类似的UIKit类列表,甚至是特定于iOS的类?

谢谢.

cocoa-touch objective-c uikit ios automatic-ref-counting

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

Xcode 4.4无法重命名类/变量

在Xcode 4.4和4.4.1上我遇到了与我正在处理的特定项目相同的问题,我似乎无法从Refactor菜单选项重命名任何类或变量.

每次我尝试重命名时,我都会输入类/变量的新名称,然后单击Preview左下角开始一个微调器的位置Finding files....但是,我接到一条消息说:

选择不是可以重命名的类型.

进行不同的选择,然后重试.

我很确定这不是我特定的Xcode安装的问题,因为我可以很好地重构其他项目,只是我似乎无法重构这个特定的项目.

有想法的人吗?对于这个项目,我没有任何特别奇特的配置,它似乎是一个随机的痛苦.我删除了所有的派生数据并重新编制索引,但这似乎没有帮助.

由于它在其他项目中运行正常,我想我可以尝试做的一件事就是重新生成实际的项目文件本身.我不知道是否有办法自动执行此操作?

xcode refactoring objective-c xcode4.4 xcode4.5

7
推荐指数
2
解决办法
2887
查看次数

Flask-Restplus:如何对字符串或对象建模?

在 Flask-Restplus 中,我需要建模一个属性值,它可能一个字符串列表或一个对象列表。

也就是说它看起来像这样:

{
    'my_attribute': [
         'value1',
          'value2'
     ]
}
Run Code Online (Sandbox Code Playgroud)

或者它可以如下所示:

{
    'my_attribute': [
        {
             'name': 'value1',
              'foo': 'something'
         },
         {
              'name': 'value2',
               'foo': 'something else'
          }
     ]
}
Run Code Online (Sandbox Code Playgroud)

我应该如何在 Flask-Restplus' 中建模api.model

python flask flask-restplus

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

ACAccount线程安全吗?

我可以ACAccount在线程之间共享一个实例吗?具体来说,我想创建TWRequest不同NSOperationQueue实例使用的多个对象.这些TWRequest对象将共享一个ACAccount实例.这样安全吗?

谢谢.

twitter cocoa-touch objective-c ios ios5

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

无法在iOS上使用非QWERTY键盘键入

我的iPhone应用程序似乎无法使用不使用类似美国QWERTY布局的软键盘.那时我将键盘设置为法语或德语,甚至文本字段也不能接收文本,并且No input manager class for input mode控制台中显示错误消息错误(在Xcode下调试时).切换到表情符号键盘也会出现同样的问题.但问题不会发生在QWERTY键盘布局上,如荷兰语和印尼语键盘.

所有情况都是一致的,可重复的设备(iPhone 4)和iPhone模拟器.这些是Xcode调试器控制台中的错误消息

当键盘设置为法语时:

No input manager class for input mode: fr_FR

当键盘设置为德国时:

No input manager class for input mode: de_DE

当键盘设置为表情符号时:

No input manager class for input mode: emoji

我的应用程序的部署目标是iOS 3.1.3(我仍然支持第一代设备),但开发环境是Xcode 4.3.1和iOS 5.1 Simulator.(我不知道这是否相关,但以防万一).

任何人都可以帮忙解决这个问题?

提前致谢.

iphone cocoa-touch internationalization ios ios5

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

NSTextField有像Safari的地址栏这样的自动建议吗?

NSTextField当用户输入时,在其下方动态显示"推荐列表" 的最简单方法是什么?就像Safari的地址栏有一些菜单(我很自信Safari的地址栏建议是菜单,因为它有圆角,蓝色渐变选择和背景模糊).

我尝试过使用NSTextView自动完成工具,但发现它不合适:

  • 它试图完成单词而不是整个文本字段 - 换句话说,选择自动完成建议只会替换当前单词.
  • 它向前轻推自动完成列表并将其与插入点对齐,而不是使其与文本字段保持对齐.

自动填充示例

在上面的示例屏幕截图中,每当我选择自动填充建议时,文本字段仅替换K列表中的建议项目,从而导致Abadi Abadi Kurniawan.

这些是我想要实现的:

  • 每当选择建议时,整个文本字段将替换为建议.
  • 保持建议列表与文本字段的左侧对齐.

注意:这不是关于在文本字段后面添加进度指示器的问题.

safari macos cocoa autocomplete nstextfield

6
推荐指数
2
解决办法
1428
查看次数