我正在使用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目标(再次,设备或模拟器),不会抛出异常.
有什么可能导致这种奇怪行为的线索?
我的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处理这些请求的最佳方法是什么?
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中有什么变化可以解释这种不同的行为吗?什么是一个好的解决方案?
谢谢
我创建了一些测试用例,它们都通过了...那是因为它们没有被运行.
从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/
我不知道在哪里寻找...非常感谢任何帮助!
我正在制作一个"交互式地图",类似于这个例子.我需要能够放大地图并仍然得到一个干净的插图,因此地图的绘制是在svg中完成的(它实际上是在Illustrator中创建的,然后保存为svg文件).
在应用程序中,我创建一个UIWebView并加载包含svg的html.HTML文件是应用程序中的捆绑包资源,因此没有网络延迟.有点击形状,当你点击它们时,它会带你到另一个地图(另一个带有svg绘图的html页面).
其中一个svg相当大(~5.8MB).加载时,我收到"内存压力"警告,然后崩溃.仪器显示虚拟内存为298.71MB,真实内存为149.10MB.
我已经简化了绘图(我拿出了一些细节),我还使用了@Peter Collingridge svg优化器.
如何优化内存使用,以免崩溃?
从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)帮助我找到了答案.马丁得到了答案,因为解释有助于我更好地理解......
我的项目是 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 ×6
objective-c ×3
uitableview ×2
uiwebview ×2
xcode ×2
core-data ×1
instruments ×1
ios8 ×1
svg ×1
swift ×1
testing ×1
unit-testing ×1
wkwebview ×1
xcode6 ×1