小编jma*_*mac的帖子

iOS静态库调试符号未包含在dSYM中

我正在研究一系列将共享公共代码库的iOS应用程序.我已经将公共代码库开发为静态库,并希望它的调试符号包含在主应用程序的.dSYM文件中.我的理解是这是可能的,但我还没有完成它的工作.

它自己的项目中的公共代码库,它有一个静态库作为目标.该项目被拖入主应用程序的项目中.在主要应用程序的目标构建阶段中,我已将静态库添加为目标依赖项,并在"链接二进制文件库"下添加.该项目根据需要构建和运行.

现在,如果我从主项目生成存档,我可以在Finder中查看该存档,它包含一个可用于表示崩溃日志的.dSYM文件.但是,.dSYM仅包含主应用程序的符号,而不包含静态库的符号.为了过度确认这一点,我运行了以下内容:

dwarfdump /path/to/app.dSYM

输出(大多数)不包含静态库中的任何符号.我发现的唯一例外是我的主项目的AppDelegate是静态库中对象的子类,并且.dSYM中有超类的条目.但是,没有其他类存在.

在静态库的项目目标的Build Settings中,我设置了以下内容:

  • 复制期间剥离调试符号:NO
  • 剥离链接产品:没有
  • 生成调试符号:是
  • 默认隐藏的符号:否

如果有人能提供一些指导,我将不胜感激.

debugging linker static-libraries ios

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

从横向旋转到纵向时,在UITableView周围可见不需要的白色背景

我正在使用的iPad应用程序中有一个UITableView.当我以纵向视图开始并旋转到横向时,视图旋转并且旋转看起来很好.

但是,当我从横向旋转到纵向时,旋转期间会显示一条白色边缘.看起来好像UITableView被调整大小以适应旋转开始时的纵向显示.(当旋转TO横向时,首先调整大小意味着不会看到白色.)

通过我能够抓取的一些截图,看起来动画顺序如下:

  1. 调整UITableView的大小
  2. 执行旋转动画
  3. 调整UIToolbar的大小

在研究这个时,我发现有些人建议改变UIWindow的背景颜色以匹配你的视图(在这种情况下为蓝色),但我真正的UITableView没有纯色背景,所以这种方法还不够.

我希望能够控制各个视图的旋转何时发生,这样我就可以防止在旋转过程中看到这个白色边框.或者如果有更好的方法,请分享一下!

[编辑]这是一个粗略的屏幕截图,显示旋转过程中的白色边框:

在此输入图像描述

iphone animation rotation uiview ipad

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

无法为Xcode 4创建跨项目参考

我正在尝试采用一些更好的代码组织实践.随着时间的推移,我开发了一系列实用程序类型的文件,我将其导入到我的所有iOS项目中.我不想继续复制它们,而是设置一个单独的"库"项目,将这些文件构建到静态库中.然后,我在我的应用程序项目中引用静态库.

在Xcode 4.2中,我创建了一个新项目"JTLibrary",以静态库作为目标,添加了一些文件,并按预期构建.

现在,我创建了一个新项目"LibraryTest",它应该像我可能正在处理的任何其他应用程序项目一样.我的理解是我应该能够将JTLibrary项目拖到这个项目中来创建一个跨项目引用.完成后,我会将LibraryTest的二进制文件与JTLibrary中的静态库链接起来.

但是,当我将JTLibary项目拖到LibraryTest项目中时,它似乎不可扩展.我希望我能够看到它中的文件等.见下面的截图:

在此输入图像描述

任何人都可以提供一些见解,为什么项目看起来像这样而不是可扩展?一旦它可扩展,我应该能够在应用程序的项目中看到静态库.

谢谢!

编辑11/7

值得一提的是,我现在正在处理一个非常基本的项目.从新项目窗口中,选择Framework&Library >> Cocoa Touch Static Library.将一个函数添加到默认类和构建.

我可以将标题和.a文件复制到另一个项目并成功使用它们,但如果我尝试拖动项目本身,它就像上面的图片.

xcode static-libraries ios xcode4

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

使用KVO在UITableView中重新加载数据

我最近一直在扩大我的视野,并且正在尝试在我的编程中更多地使用KVO.

我的iPhone应用程序中有一个视图控制器,它充当UITableView的数据源和委托.我还有一个单例模型控制器,用于协调使用从Web获取的数据填充我的模型.

在我的视图控制器中,我请求模型的控制器从Web加载新数据.然后,我可以观察单例的"数据集"属性,并在项目添加到集合或从集合中删除时接收KVO通知.

现在,我的表视图中的每个单元格都有一个指示符,指示是否已读取该单元格中的内容(如邮件中的蓝色"未读"点).与邮件一样,当选择一行时,我将显示有关该行的详细信息.在详细视图的viewDidLoad中,我将对象的"read"属性设置为YES.我希望原始视图控制器能够观察数据集中每个对象的这个"读取"属性,以便可以根据需要自动调用[tableView reloadData]并重新绘制没有蓝点的单元格.

在研究这个时,我发现了以下链接:http://homepage.mac.com/mmalc/CocoaExamples/controllers.html#observingACollection

根据这一点,看起来我会做以下事情:
1)成为数组的观察者
2)每当我收到数组更改的通知时,我添加(或删除)自己作为单个属性的观察者我我很感兴趣
.3)当我收到我感兴趣的属性更改通知时,我可以调用[tableView reloadData]

我目前正在尝试实施这种方法.任何有这方面经验的人都可以就这种方法提出一些建议吗?如果这是处理这类情况的最佳方法?

如果这是正确的方法,那么当集合发生变化时,是否有人愿意分享他们在集合中添加/删除对象的观察者的实现?

谢谢!

iphone key-value-observing uitableview ios

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

NSManagedObjectModel initWithContentsOfURL偶尔返回nil

我正在使用核心数据,并在实时应用程序中遇到一些情况,我收到一些崩溃报告,并出现以下错误:

Cannot create an NSPersistentStoreCoordinator with a nil model 
Run Code Online (Sandbox Code Playgroud)

我发现这偶尔发生在模拟器(以及设备)中,但它不会一直发生,我还没有找到导致它有时发生的原因的相关性,而不是其他时间.

在做了一些调试之后,我发现根本原因(从代码的角度来看)有时候,managedObjectModel创建方法返回nil.这是我在AppDelegate中的实现:

- (NSManagedObjectModel *)managedObjectModel {
    if (__managedObjectModel != nil) {
        return __managedObjectModel;
    }
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"AppName" withExtension:@"momd"];
    __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
    return __managedObjectModel;
}
Run Code Online (Sandbox Code Playgroud)

偶尔我很幸运能在崩溃发生时运行调试器,并且我已经确认正在调用上述方法,并且该initWithContentsOfURL:方法已执行,但返回nil.

任何人都可以想到为什么[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]偶尔会回来nil

core-data ios

5
推荐指数
0
解决办法
4241
查看次数

具有共享依赖关系的多个静态库 - iOS

我正在研究几个iOS项目,这些项目将有很多共享代码,所以我在静态库中收集这些代码.

现在让我们说我有3个静态库我正在使用:

  1. Lib A包含通用实用程序功能
  2. Lib B包含一组类
  3. Lib C包含第二组类

(和A是B和C的依赖关系)

现在,我的最终项目需要利用所有三个库的功能.我知道A可以与B,C和我的最终项目静态链接,但是在那时我会得到一个链接器错误,因为有多个相同类的实现.

应如何处理这种情况?

xcode linker static-libraries ios

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

UIViewController -dealloc在解除模态视图控制器后被调用

我的应用程序中有一个显示UITableView的视图.此视图在nib文件中创建,并具有自定义视图控制器.此视图的UIViewController子类充当UITableView的数据源和委托.

我的UITableView根据我的数据显示几行.然后,最后一行显示不同的文本:"添加另一个...".如果选择了最后一行,我会提供一个模态视图控制器(允许用户添加更多数据).当我关闭模态视图控制器时,我再次看到原始视图(如预期的那样)并且看起来都很好.但是,当我尝试与此视图进行交互时,应用程序崩溃了.

从通过UIViewController(对于UITableView)放置几个NSLog()语句,我已经确定在模式视图被解除后正在调用-dealloc方法.这解释了当我尝试使用该视图执行某些操作时的崩溃.但是,我不知道为什么在这个视图控制器上调用-dealloc.

要解雇模态视图控制器,我有:

[self dismissModalViewController:YES];
Run Code Online (Sandbox Code Playgroud)

作为模态视图控制器的UIViewController中的IBAction方法中的代码.此操作与相应nib文件中的取消按钮相关联.

另外,我对View Controller Programming Guide的理解是,可以从内部解除模态控制器,但使用委托更加健壮.我最初使用的是委托,但是委托代理来简化调试.我只是让代理重新进行仔细检查,使用委托时会出现相同的行为.模态控制器的动作方法调用实现为:

[[self delegate] myModalViewController:self didAddObject:obj];  
Run Code Online (Sandbox Code Playgroud)

父视图控制器中的委托实现是:

[self dismissModalViewController:YES]
Run Code Online (Sandbox Code Playgroud)

如果有人之前已经看过这个,或者对可能发生的事情有什么建议或如何调试这个,我将不胜感激.

iphone uiviewcontroller

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

如何使用ZipKit在iOS中压缩目录?

我需要在iOS应用程序中压缩我的Documents文件夹的子目录.在咨询谷歌和其他SO帖子后,我发现ZipKit和ZipArchive是两个提供此功能的开源项目.在这一点上,我选择实现ZipKit,因为它似乎比ZipArchive更加保持.

我找到了如何解压缩档案的示例,但未能找到如何将目录存档到.zip文件中的示例.我尝试了以下代码,它返回了一个成功的结果状态,但实际上没有生成任何zip文件.

// projectPath is /Documents/projects/myproject
ZKDataArchive *archive = [[ZKDataArchive alloc] init];
NSInteger result = [archive deflateDirectory:projectPath relativeToPath:nil usingResourceFork:NO];
Run Code Online (Sandbox Code Playgroud)

我确信有一些基本的东西,我做得不对,但却无法弄清楚它是什么.特别是,我还没有弄清楚deflateDirectory的每个参数的含义:

如果有人能指出我正确的方向(或有其他建议在iOS上压缩目录)我会非常感激.

谢谢!

zip ios

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