小编Eig*_*ght的帖子

NSView的自动调整行为

我需要了解NSView如何自动化它的视图.我已经在IB中设置了所有内容,并且我的子视图调整得很好(当我用鼠标调整窗口大小时).但是,如果我[myMainView setFrame:]使用我的新帧rect,则没有任何反应.我的所有子视图仍然是原始大小(即使主视图具有正确的尺寸).孩子resizeWithOldSuperviewSize:被召唤,但它的大小仍然不合适.

屏幕上有一个屏幕充满了可可元素(屏幕#1),标签,图像,视频.这些元素有一个明确定义的布局.我通过Interface Builder设置了自动调整行为,效果非常好.调整主窗口大小可以令人满意的方式调整元素的大小.

现在,用户点击"下一步"按钮,然后绘制第二个屏幕元素(屏幕#2).我的布局是基于规范的屏幕尺寸(例如,800x600)构建的.但是现在窗口更大(或更小),因为它在屏幕#1中调整了大小.因此,元素现在只占用窗口中的一小块区域,而不是适当地调整大小以填充可用空间.我想扩展这些元素.

我误解了自动调整的工作方式吗?如何手动触发NSView下的自动调整机制?

我可以做两件事:

  1. 根据当前屏幕大小相对于原始大小手动调整元素大小.这个选项不是我最喜欢的,因为看起来,我不得不重写已经在NSView中工作的代码(自动调整行为)
  2. 我的第二个选择是调用前面提到的NSView的自动化魔法.文档暗示[NSView setFrame:]会为我做这件事.我试过的是,将我的内容视图调整为原始屏幕大小(800x600),渲染我的元素,然后将其调整为当前窗口大小.从概念上讲,它与手动调整窗口大小不同吗?似乎不是.同样,这个选项更可取,因为它最大限度地减少了可以编写和维护的代码量.

macos cocoa nsview autoresize

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

在Xcode 4中同步两个目标

有没有一种快速的方法来同步Xcode中的两个(或更多)目标?当我忘记将新文件添加到单元测试和集成目标时,这就成了一个问题.然后我必须去打猎,看看我忘了添加什么.我可以复制我的"开发"目标,然后重新添加"单元测试"配置,但这很痛苦.有没有更简单的方法?

编辑:

我喜欢John的答案,但最终我使用了这里的答案,包括手动编辑项目文件.多个丢失的文件是最快捷的方式.

xcode ios

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

为什么UIKit代表"分配"ed而不是"弱"?

正如标题所述,为什么UIKit代表(assign)代替(weak)

参见UIPopovercontroller.h例如:

@property (nonatomic, assign) id <UIPopoverControllerDelegate> delegate;

据我所知,这对于弱保留的属性没有任何好处,但是代理需要管理它作为代表的生命周期的许多问题.这是一个向后兼容问题吗?

谢谢

xcode cocoa uikit ios

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

在Mac OS X上调试和查杀应用程序?

嘿所有,我正在调试mac os 10.5上的C++应用程序.偶尔,我会做一些不好的事情并导致段错或非法操作.这导致应用程序挂了一段时间,最终系统对话框通知我崩溃."挂起"和对话之间的等待时间很长; 几分钟.如果我尝试强制退出应用程序或kill -9从命令行退出没有任何反应.如果我从调试器(gdb)启动应用程序,在崩溃时我返回到gdb提示符并可以干净地退出该进程.虽然gdb的加载速度很慢,但这并不理想.

无论如何,你们可以推荐一些东西吗?有没有办法在OS X中禁用崩溃报告机制?

谢谢.

更新1:这是从XCode执行中遗留下来的僵尸.显然xcode也无法正常停止.

  1 eightieight@eightieights-MacBook-Pro:~$ ps auxw|grep -i Reader
  2 eightieight   28639   0.0  0.0   599828    504 s004  R+    2:54pm   0:00.00 grep -i reader
  3 eightieight   28288   0.0  1.1  1049324  45032   ??  UEs   2:46pm   0:00.89 /Users/eightieight/workspace/spark/spark/reader/browser/build/Debug/Reader.app/Contents/MacOS/Reader
  4 eightieight   28271   0.0  1.1  1049324  45036   ??  UEs   2:45pm   0:00.89 /Users/eightieight/workspace/spark/spark/reader/browser/build/Debug/Reader.app/Contents/MacOS/Reader
  5 eightieight   28146   0.0  1.1  1049324  44996   ??  UEs   2:39pm   0:00.90 /Users/eightieight/workspace/spark/spark/reader/browser/build/Debug/Reader.app/Contents/MacOS/Reader
  6 eightieight   27421   0.0  1.1  1049328  45024   ??  UEs   2:29pm   0:00.88 /Users/eightieight/workspace/spark/spark/reader/browser/build/Debug/Reader.app/Contents/MacOS/Reader …

c++ crash debugging macos

5
推荐指数
1
解决办法
1162
查看次数

如何更好地理解和导航大型XML文件的结构

我正在浏览一个有点大的XML文件.假设我在树中寻找特定值.我手动找到它,但然后以编程方式找到它我需要知道路径.现在,我正在使用tidyvim漂亮打印文件,以便我可以手动检查它.它虽然变得很快,但是因为文件超过30,000行.因此,当我找到上述值时,确定完整路径是一个相当大的挑战.理想情况下,我想要一个工具,让我对xml文件的内容进行全面搜索,然后显示到根的完整树路径.这个问题有一些很棒的建议,但它们都只是Windows.Mac上有什么东西吗?

xml macos

5
推荐指数
1
解决办法
340
查看次数

我对简单视频格式有哪些选择?

我正在玩一个简单的光线跟踪器,我想最终得到一个简短的动画片段.现在我正在将场景渲染为位图.我想最简单的电影格式是可能的,因为我可能必须从头开始实现它(在erlang中).想到GIF动画.还有什么可以提供相同的降压吗?我对保真度或高压缩感兴趣.

PS:我想避免将帧渲染成单个文件,并使用ImageMagick等外部工具将它们组合成GIF或AVI.

video erlang raytracing

5
推荐指数
1
解决办法
1988
查看次数

使用Cocoa(OS X)进行内存中的mime类型检测?

我的应用程序是一个自定义格式的查看器,一个带有明确定义的XML清单和资源(如图像和电影)的zip文件.我使用zlib打开内存中的zip文件,然后继续显示所述资源.

我遇到的一个问题是我无法正确显示视频,显然是因为QTMovie无法确定mime类型.从文件加载的电影([QTMovie movieWithFile])完美无缺.从内存中加载([QTMovie movieWithData])拒绝工作.

这是有道理的,因为缺少文件扩展名,QTMovie无法确定mime类型信息.经过一番搜索后,我在下面的mannner中使用了QTDataReference:

NSData *movieData = ...read from memory...;
QTDataReference *movieDataReference = [[QTDataReference alloc] initWithReferenceToData:movieData name:fileName MIMEType:@"video/x-m4v"];
QTMovie *mov = [QTMovie movieWithDataReference:movieDataReference error:&err];
Run Code Online (Sandbox Code Playgroud)

这很好用,但硬编码MIMEType远非理想.我可以访问文件名和扩展名,所以我试图使用UTI找到mime-type(感谢#macdev上的好朋友):

- (NSString*)mimeTypeForExtension:(NSString*)ext {

    CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,(CFStringRef)ext,NULL);
    return NSMakeCollectable(UTTypeCopyPreferredTagWithClass((CFStringRef)UTI,kUTTagClassMIMEType));
}
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用.显然,在某个地方有一个扩展的内部OS X数据库和相应的mime类型.否则,磁盘电影将无法正常工作.我如何获得它?

谢谢!

macos cocoa quicktime mime-types

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

将ActiveRecord验证错误转换为API耗材错误

我正在Rails 4中编写一个非常标准的CRUD RESTful API.但是我的错误处理却很简单.

想象一下,我有以下型号:

class Book < ActiveRecord::Base
  validates :title, presence: true
end
Run Code Online (Sandbox Code Playgroud)

如果我尝试创建没有标题的图书对象,我将收到以下错误:

{
  "title": [
    "can't be blank"
  ]
}
Run Code Online (Sandbox Code Playgroud)

ActiveRecord验证旨在与Forms一起使用.理想情况下,我希望将每个人类可读验证错误与API使用者可以使用的常量相匹配.所以类似于:

{
  "title": [
    "can't be blank"
  ],
  "error_code": "TITLE_ERROR"
}
Run Code Online (Sandbox Code Playgroud)

这可以用于显示面向用户的错误("标题不能为空"),也可以在其他代码中使用(if response.error_code === TITLE_ERROR...).在Rails中是否有任何工具?

编辑:这是Rails 2天非常相似的问题.

api rest activerecord ruby-on-rails

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

有效地访问对象模型中的父元素

我有一个以下对象模型:

- Book 
-- Chapter 1
--- Page 1
---- Image 1 
---- Image 2
---- Text 1
--- Page 2 
...

资源在页面级别下降.但是,从资源的角度来看,我需要知道资源的完整路径.

一种方法是让资源了解他们的父母.

所以我的Image对象可以有一个"parentPage"属性,而该属性又可以有一个"parentChapter"属性.这样,我可以通过currentImage.parentPage.parentChapter访问完整路径.有没有更好的办法?

关于为什么我需要从资源的角度了解完整路径的几句话.我有一个在屏幕上行走和渲染的对象模型.渲染器从章级别一直下降到元素/资源级别(这是渲染发生的位置).但是,要显示资源,我需要知道它们的存在位置(即磁盘上的实际路径),并且通常在章级别指定此信息.

谢谢!

- 编辑 - 只是为了澄清,这个parent.parent方法是最好的吗?它迫使儿童对象了解父母,这让我感到不舒服.耦合?

xml language-agnostic dom design-patterns

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

为什么在两个略有不同的机器上编译的库表现略有不同?

这是设置:

我的同事有一台带有gcc 4.3.3交叉编译器的Fedora x64_86机器(来自buildroot).我有一个Ubuntu 9.04 x64_86机器与相同的交叉编译器.

我的同事建立了一个在测试机器上运行的库+测试应用程序,我编译了相同的库和testapp,它在同一台测试机器上崩溃了.

据我所知,gcc是针对buildroot编译的ucLibc构建的,所以,相同的代码,相同的编译器.哪种主机差异会影响交叉编译?

有任何见解赞赏.

更新:为了澄清,编译器是相同的.库和testapp的源代码是相同的.唯一的区别是testapp + lib已在不同的机器上编译.

c++ gcc cross-compiling buildroot libraries

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

在gdb中设置文件范围的断点

我试图理解一段代码是如何工作的.我为一个函数启用了一个断点,但看起来它永远不会被击中.所以,每当调用此类中的任何函数时,我都想要中断.这可能吗?

谢谢!

c++ debugging gdb

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