我想合并两个.nib文件.FileMerge显示两个文件的比较没有问题.我试图将所有设置保存在一个文件中(即右侧),除了我要从另一个文件(即左侧)复制的两个设置.差异只是一行代码,每行代码都会更改autoresizingMask键的整数值.所以合并起来应该不难.我会使用TextEdit,如果它允许我打开.nib文件.
但是我收到错误"此文件类型无法合并".我尝试使用.nib扩展名的FileMerge>首选项>过滤器设置,如本网站上发布的类似问题的答案所述,但没有运气.据我所知,显示设置应保留为.dib的"已过滤",因为未经过滤,它不可读,我尝试切换应用选择.我假设使用的实际过滤器本身不应该被更改或修改?
是否有任何常见的原因导致FileMerge在比较窗口中显示没有问题的两个.nib文件无法合并?
谢谢
我有一个警告,我无法找到原因.
我正在关于Cocoa编程的文本中遵循教学代码,该编程实现了基于文档的图像幻灯片放映.此警告导致执行while循环的次数超过导致程序崩溃的正确次数.从作者的网站下载的代码没有这个问题.
我认为这是一个简单的问题,在我的版本中,但仔细阅读两个版本的代码,我无法遇到任何差异.然后我系统地替换了我的版本中的每个.h,.m,.xib和其他资源文件,作者的版本清除所有目标并在每次替换后重建.
但是,在我最终用作者的版本替换.xcodeproj文件之前,警告不会消失.此时警告清除,代码运行而不会崩溃.然后,我通过一次性替换作者版本中的.h和.m文件以及.h和.m文件,清除所有目标,构建并再次没有警告或崩溃来实验另一种方式.我认为它可能是.plist文件中的一些设置,但交换该文件的两个版本似乎没有任何效果.我似乎能够将其缩小到.xcodeproj包中的project.pbxproj文件,但我看不到那里列出的任何构建设置如何导致问题.
如果有人能提供任何洞察力或者可以推荐一种方法来调试它,我将不胜感激.带有while循环的警告和相关代码段如下:
建立警告:
SlideShowDocument.m: In function '-[SlideShowDocument removeSlidesAtIndexes:]':
SlideShowDocument.m:191: warning: comparison is always true due to limited range of data type
Run Code Online (Sandbox Code Playgroud)
调试器控制台输出:
Slide Master[665:a0f] HIToolbox: ignoring exception '*** -[NSCFArray objectAtIndex:]: index (4294967295) beyond bounds (3)' that raised inside
Run Code Online (Sandbox Code Playgroud)
码:
- (void)removeSlidesAtIndexes:(NSIndexSet*)indexes;
{
NSMutableArray *slideList = [NSMutableArray array];
unsigned int index = [indexes firstIndex];
while (index != NSNotFound) {
Slide *slide = [mSlides objectAtIndex:index];
[slideList addObject:slide];
index = [indexes indexGreaterThanIndex:index];
}
if ([slideList count]) {
//remove the slides …Run Code Online (Sandbox Code Playgroud)