小编inv*_*ent的帖子

Xcode在iOS 8的Main()中抛出一个异常,带有'all exceptions'断点

我正在使用Xcode 6(通用汽车,我没有下载测试版),我正在为iOS 7+开发应用程序.对于我的所有项目,我只是打开了我曾经在Xcode 5中工作的相同项目.

在Breakpoint导航器中,我有All Exceptions断点.它被设置为Break: On Throw.现在,每次我运行我的应用程序(无论是在设备上还是在模拟器中),它都会停止return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));main()函数中的行上执行.

如果我按Play继续执行程序两次,程序运行正常.所以这并不妨碍我工作,但每次手动播放执行并重置我的编辑器都很烦人.

我喜欢我在Xcode中设置的行为(将当前编辑器带到执行暂停的位置),并且让All Exceptions断点成为重要的IMO.(所以我不想改变那些)

通过使用相同的环境运行相同的代码,对于iOS 7目标(再次,设备或模拟器),不会抛出异常.

有什么可能导致这种奇怪行为的线索?

xcode objective-c xcode6 ios8

52
推荐指数
2
解决办法
9349
查看次数

UIWebView委托方法shouldStartLoadWithRequest:在WKWebView中等效?

我的iOS 7+应用程序中有一个模块,它是一个UIWebView.html页面加载了一个创建自定义形状按钮的JavaScript(使用Raphaeljs库).使用UIWebView,我将委托设置为self.webView: shouldStartLoadWithRequest: navigationType:每次按下我的一个自定义按钮时,都会调用委托方法.请求不应由html处理,而是由iOS代码处理.所以我使用了一个请求约定(在这里读取stackoverflow),使用"inapp"作为我的请求的方案.然后我检查主机并采取适当的措施.

这段代码在iOS 7上运行正常.但是iOS 8上的Web视图显示为空白(bug?),所以我决定使用WKWebView for iOS 8设备.Web视图现在渲染得很好(而且速度更快!),但我的按钮没有任何效果.

我尝试过使用- (WKNaviation *)loadRequest:(NSURLRequest *)request,但没有调用.

我找不到UIWebView委托方法的直接等价物webView: shouldStartLoadWithRequest: navigationType:.使用WKWebView处理这些请求的最佳方法是什么?

objective-c uiwebview ios wkwebview

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

UITableView标题视图重叠iOS 10中的单元格

UITableView在我的应用程序中有一个简单的,并且有一个自定义视图的tableView.tableHeaderView属性.设置此属性后,视图的大小正确(全宽,大约45px高).

[_resultHeaderView sizeToFit]; // the view as the correct frame
[_resultTableView setTableHeaderView:_resultHeaderView];
Run Code Online (Sandbox Code Playgroud)

在iOS 9及以前的版本中,标题显示正确,但在iOS 10中,单元格与标题视图的Y坐标相同,因此我的标题视图显示在第一个单元格上.

设置这些属性也没有效果:

self.edgesForExtendedLayout = UIRectEdgeNone;
self.automaticallyAdjustsScrollViewInsets = NO;
Run Code Online (Sandbox Code Playgroud)

在iOS 10中有什么变化可以解释这种不同的行为吗?什么是一个好的解决方案?

谢谢

uitableview ios

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

Xcode 5:单元测试未运行

我创建了一些测试用例,它们都通过了...那是因为它们没有被运行.

从Xcode,我得到:

Test Suite 'All tests' started at...
Test Suite 'All tests' finished at...
Executed 0 tests, with 0 failures (0 unexpected) in 0.00 seconds

项目(和单元测试类)构建成功.

我的所有测试类都选择了MyApp_appTests作为目标成员.生产类选择了MyApp_app和MyApp_appTests目标.

我验证了MyApp_appTests目标构建设置(捆绑加载器和测试主机).

Bundle Loader (Debug): $(BUILT_PRODUCTS_DIR)/MyApp.app/MyApp
Test Host (Debug): $(BUNDLE_LOADER)
Run Code Online (Sandbox Code Playgroud)

我已经导入了SenTestingKit.framework(通过Targets Build Phases"Link Binary with Libraries").

我的所有测试都以 -(void)testThat...

我还检查了一些stackoverflow.com问题:

stackoverflow.com/questions/8632254/xcode-4-2-cant-run-unit-test stackoverflow.com/questions/3608484/ocunit-tests-not-running-not-being-found stackoverflow.com/questions/16672616/的OCUnit试验的情况下,不运行的

这篇文章:

twobitlabs.com/2011/06/adding-ocunit-to-an-existing-ios-project-with-xcode-4/

我不知道在哪里寻找...非常感谢任何帮助!

testing xcode unit-testing objective-c ios

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

在uiwebview中渲染svg会导致内存压力(和应用程序崩溃)

我正在制作一个"交互式地图",类似于这个例子.我需要能够放大地图并仍然得到一个干净的插图,因此地图的绘制是在svg中完成的(它实际上是在Illustrator中创建的,然后保存为svg文件).

在应用程序中,我创建一个UIWebView并加载包含svg的html.HTML文件是应用程序中的捆绑包资源,因此没有网络延迟.有点击形状,当你点击它们时,它会带你到另一个地图(另一个带有svg绘图的html页面).

其中一个svg相当大(~5.8MB).加载时,我收到"内存压力"警告,然后崩溃.仪器显示虚拟内存为298.71MB,真实内存为149.10MB.

我已经简化了绘图(我拿出了一些细节),我还使用了@Peter Collingridge svg优化器.

如何优化内存使用,以免崩溃?

svg instruments uiwebview memory-pressure ios

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

NSFetchedResultsController:删除1行使应用程序崩溃

从NSFetchedResultsController提供的UITableView中删除行会导致我的应用程序崩溃.

错误是:

*断言失败 - [UITableView _endCellAnimationsWithContext:],/ SourceCache/UIKit/UIKit-2903.23/UITableView.m:1330
*
由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效更新:第0部分中的行数无效.更新(1)后现有部分中包含的行数必须等于更新(1)之前该部分中包含的行数,加上或减去从该部分插入或删除的行数(插入0) ,1删除)并加上或减去移入或移出该部分的行数(0移入,0移出).

我只想滑动删除.我的删除代码如下:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{  
    [self.tableView beginUpdates];  
    SequenceData *sd = [self.fetchedResultsController objectAtIndexPath:indexPath];  
    [self.managedObjectContext deleteObject:sd];  
    [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                          withRowAnimation:UITableViewRowAnimationFade];  
    [self.tableView endUpdates];  
}
Run Code Online (Sandbox Code Playgroud)

我的NSFetchedResultsController的设置就像Ray Wanderlich的教程(http://www.raywenderlich.com/999/core-data-tutorial-for-ios-how-to-use-nsfetchedresultscontroller)

行数由以下因素确定:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {    
    id sectionObjects = [[self.fetchedResultsController sections] objectAtIndex:section];  
    NSInteger nbObjects = [sectionObjects numberOfObjects];  
    return nbObjects;  
}
Run Code Online (Sandbox Code Playgroud)

看起来fetch没有更新(行数不变).我是否需要取自己(这不是由fetch控制器处理)?

显然我在这里缺少一些基本的东西.不要犹豫,建议基本答案.

我首先用控制器实现了这个:didChangeObject:...方法.错误是一样的,但有些细节不同.

编辑 我相信我的问题已修复.这两个答案(来自CX和Martin)帮助我找到了答案.马丁得到了答案,因为解释有助于我更好地理解......

core-data uitableview nsfetchedresultscontroller ios

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

==44088==错误:AddressSanitizer:堆栈缓冲区溢出

我的项目是 swift-only(至少对于我写的代码)。在应用程序开始时,我下载了一些 json 来显示内容。我用swift 4 Coder protocol. 这已经工作了一段时间,但刚才我遇到了一个意外的堆栈缓冲区溢出错误:

==44088==ERROR: AddressSanitizer: stack-buffer-overflow

在后台线程之一中反序列化其中一个对象时。

基于此,我有两个问题

我怎样才能确保这种情况不再发生?

有没有办法重现它?

更多信息:

我有这个摘要,但我不知道该怎么做:

SUMMARY: AddressSanitizer: stack-buffer-overflow JsonClass.swift in _T06MyApp11JsonClassVACs7Decoder_p4from_tKcfC Shadow bytes around the buggy address: 0x100026a904d0: 00 02 f2 f2 f2 f2 f2 f2 f2 f2 00 00 00 00 00 00 0x100026a904e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100026a904f0: 00 00 00 00 00 00 00 00 00 00 00 00 …

ios address-sanitizer swift

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