小编Jay*_*Jay的帖子

Xcode 4快捷方式,用于在编辑器和助理编辑器之间交换焦点

在Xcode中,我是助手编辑器的忠实粉丝,它向我显示了我正在编辑的文件的相应.h或.m.

有没有一个快捷方式允许我在这两个窗口之间交换焦点?我经常在两者之间切换,每次使用鼠标都很烦人.

xcode xcode4

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

具有子项目和项目依赖性的Xcode工作空间触发构建

我希望有更好的文档为Xcode 5,但我找不到任何体面的描述使用工作区的最佳实践,所以..

在具有多个项目(几个框架,1个应用程序)的工作空间中,是否可以让Xcode 在需要时(即发现更改)构建所有依赖项目,而不必包括所有依赖项目中的所有项目

我宁愿只想在项目中使用框架,而不是在其中有5-6个子项目,因为这只是导航视图中的一个混乱-
子项目中的文件始终显示在搜索结果中,NavView中的子项目因项目内的任何原因而扩展.

但是,w/o包含特定项目的项目取决于我找不到让Xcode 5自动重新构建框架的方法,如果其中一个依赖项发生了变化.

xcode cocoa frameworks xcode5

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

添加Subview到NSWindow Titlebar

我想创建一个自定义的窗口工具栏,但不使用实际的NSToolbar(因为它在某些情况下不能满足我的需要而且我不能按照我想要的方式设置它),因此我需要添加子视图到窗口标题栏.它应该如下所示:自定义工具栏的屏幕截图

一种可行的方式是:

[[[_window contentView] superview] addSubview:_titlebarView];
Run Code Online (Sandbox Code Playgroud)

但这有问题,它会在Yosemite(NSWindow warning: adding an unknown subview: <NSView: 0x608000122b20>)上引发警告,所以这似乎不是正确的方法.

目前我将工具栏视图添加到标题栏视图:

[[[_window standardWindowButton:NSWindowCloseButton]
    superview] addSubview:_titlebarView];
Run Code Online (Sandbox Code Playgroud)

但这也错了.

由于我的应用程序仅针对OS X 10.10(Yosemite),因此我可以使用仅限Yosemite的API,所以我看了一下,NSTitlebarAccessoryViewController并设法成功地将其子类化并使用它NSWindowaddTitlebarAccessoryViewController:方法.使用这种方法仍然存在一个问题,可能的值layoutAttribute是:

  • NSLayoutAttributeBottom
    将视图添加到窗口标题栏的底部,同时保留视图的高度.
  • NSLayoutAttributeRight
    将视图添加到窗口标题栏的右侧,将视图剪切到标题栏的高度.

NSLayoutAttributeBottom不适合我,因为我需要在窗口标题栏的顶部放置一些东西(见上面的截图)并将红绿灯居中. NSLayoutAttributeRight将是我所需要的,但我找不到增加标题栏高度的方法,因此视图被剪切到标题栏高度,这对我来说毫无用处.(注意:使用带纹理的窗口并更改内容边框不起作用,因为它不会更改实际的标题栏高度)

建议的方法是什么?我更愿意使用官方API并使用AccessoryViewController方法,如果可能有一个大于默认标题栏的视图.

cocoa objective-c appkit osx-yosemite nstitlebaraccessoryviewcontroller

27
推荐指数
2
解决办法
5468
查看次数

OS X图标大小

OS X的应用程序图标和菜单栏图标应该是多大?

我可以处理小分辨率显示器但是Retina怎么样?菜单栏上显示的图标(例如20 x 20)在带有Retina显示屏的新MacBook Pro上会变小还是模糊?我估计应用程序图标将被缩放,所以如果我准备比常规大两倍,那么Retina应该没问题.

我找到了一个优秀的iOS开发指南,有尺寸规格,但我找不到OS X的类似尺寸规格.

macos xcode cocoa objective-c retina-display

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

在objective-c中定义和使用协议

我正在尝试扩展NSImageView,以便将拖放责任委派给控制器.一切正常,编译器现在显示有关向类型为id的对象发送消息的警告.为了解决这个问题,我假设我只需要使用协议名称后缀ivar的类型.但是,由于无法找到协议的定义,因此失败了.

#import <Cocoa/Cocoa.h>


@interface DragDropImageView : NSImageView {
    id <DragDropImageViewDelegate> _delegate;
}

@property (readwrite, retain) id <DragDropImageViewDelegate> delegate;

@end

@protocol DragDropImageViewDelegate

@optional

- (NSDragOperation)dragDropImageView:(DragDropImageView *)ddiv validateDrop:(id     <NSDraggingInfo>)info;
- (BOOL)dragDropImageView:(DragDropImageView *)ddiv acceptDrop:(id <NSDraggingInfo>)info;
- (void)concludeDragOperation:(id <NSDraggingInfo>)sender;  

@end
Run Code Online (Sandbox Code Playgroud)

我可能会出错的任何指针?我敢肯定它一定很简单,但我对obj-c很新.

macos cocoa cocoa-touch objective-c nsdragginginfo

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

关闭"'寄存器'存储类说明符已被弃用"警告

随着最近我们得到了一堆在我们的代码库的新警告的Xcode 5.1更新-
这显然是与那铿锵的更新版本现在警告有关的用法register在C++ 11个源的存储类说明因为它一直不推荐使用C++ 11:

/Users/me/Documents/Sources/boost/boost/log/attributes/attribute_set.hpp:288:9: 'register' storage class specifier is deprecated
Run Code Online (Sandbox Code Playgroud)

现在我们要禁止对我们无法更改的代码发出警告 - 就像上面示例中的BOOST源代码一样.

我可以找到编译器标志来打开(-Wdeprecated-register)的警告,但有相反的禁用Xcode设置警告..?

c++ xcode boost c++11 xcode5

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

在NSPopover中使用NSNumberFormatter

有没有办法让NSNumberFormatter(或者可能是任何其他NSFormatter)在NSPopover中工作?

弹出窗口中的NSTextField值绑定到NSViewController的representObject.当在字段中输入无效数字(例如,"asdf")时,在NSWindow中会显示一个表示该值无效的表格,其中包含呈现弹出窗口的NSView.

单击"确定"后,您将获得以下回溯:

* thread #1: tid = 0x4e666a, 0x00007fff931f9097 libobjc.A.dylib`objc_msgSend + 23, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
frame #0: 0x00007fff931f9097 libobjc.A.dylib`objc_msgSend + 23
frame #1: 0x00007fff8a1fa6c8 AppKit`-[NSTextView(NSSharing) becomeKeyWindow] + 106
frame #2: 0x00007fff8a080941 AppKit`-[NSWindow(NSWindow_Theme) acquireKeyAppearance] + 207
frame #3: 0x00007fff8a0800df AppKit`-[NSWindow becomeKeyWindow] + 1420
frame #4: 0x00007fff8a07f5c6 AppKit`-[NSWindow _changeKeyAndMainLimitedOK:] + 803
frame #5: 0x00007fff8a1a205d AppKit`-[NSWindow _orderOutAndCalcKeyWithCounter:stillVisible:docWindow:] + 1156
frame #6: 0x00007fff8a0876c5 AppKit`-[NSWindow _reallyDoOrderWindow:relativeTo:findKey:forCounter:force:isModal:] + 3123
frame #7: 0x00007fff8a0867f0 AppKit`-[NSWindow _doOrderWindow:relativeTo:findKey:forCounter:force:isModal:] + 786
frame #8: 0x00007fff8a086470 AppKit`-[NSWindow …
Run Code Online (Sandbox Code Playgroud)

cocoa nsformatter nspopover paintcode

13
推荐指数
1
解决办法
2544
查看次数

NSView上的唯一ID

是否可以通过Xcode在.nib/.xib中使用和设置任何类型的ID,可以在运行时查询以从代码中识别特定的视图实例?

特别是在我们的界面中拥有相同NSView子类的多个副本时,我们如何知道我们当前正在查看哪个?

cocoa objective-c

12
推荐指数
2
解决办法
7007
查看次数

NSRuleEditor的指南或样本?

NSRuleEditor看起来像一个非常强大的类,它看起来像iTunes智能播放列表或Finder智能文件夹正在使用它.
(我估计它应该被称为NSSmartRuleEditor ...)

但除了参考文献之外还有哪种文件?

某种示例代码或指南会很好但是它看起来并不像ADC有什么可提供的......现在NSRuleEditor似乎是Cocoa中记录最少的控件!

任何人都知道使用控件,博客文章等的任何开源项目?

macos cocoa objective-c nscontrol

11
推荐指数
1
解决办法
2589
查看次数

基于范围跳过基于'指数'?

有没有办法在C++ 11基于范围的for循环中访问迭代器(假设没有循环索引 ..?)?

通常我们需要对容器的第一个元素执行一些特殊操作,并迭代其余元素.
我正在寻找像c++11_get_index_of这个伪代码中的语句:

for (auto& elem: container) 
{
  if (c++11_get_index_of(elem) == 0)
     continue;

  // do something with remaining elements
}
Run Code Online (Sandbox Code Playgroud)

我真的想避免回到那个场景中的旧式手动迭代器处理代码.

c++ for-loop c++11

11
推荐指数
2
解决办法
5652
查看次数