我不能添加它,并没有debugging优化,但我得到了日志: ProjectName是编译与优化 – 步进可能会performance怪异; variables可能不可用。 更多信息:我去编辑构build计划,它被设置为debugging模式。
我正在编写Xcode 7 / Swift 2中的一个项目,它针对iPhone 6 / 6s进行了优化(例如,该项目有一个启动屏幕文件和用于iPhone 6 / 6s的启动屏幕图像)。 幸运的是,不幸的是,iPhone 6用户可以打开设备上的“显示缩放”设置,从而扩大界面元素。 打开时,此设置有效地放大标准的iPhone 5屏幕大小,以适应iPhone 6的屏幕空间,升频到x1.171875。 此上采样会导致基于栅格的元素(如包含UIBezierPath()graphics的图像,图标或视图UIBezierPath()显示模糊(轻微但显着)。 几个问题: 感谢有关这个难题的任何有经验的回应。 谢谢。 1 – 如何在代码中指示故事板上的元素(例如UIView),以便在用户打开时忽略显示缩放设置? 2 – 显示缩放function打开时,有哪些技术可以确保像素的完美精度? (例如,是否有可能使用OpenGL渲染渲染graphics,如果是这样,如何?) 3 – 是否可以使用x4图像replacex2图像以减less显示缩放时的任何模糊? (例如,iOS会在iPhone 6上将x4图像缩小为x2图像?) 4 – 显示缩放时, UIBezierPath()绘图如何保持像素的完美精度?
下面我将屏幕截图转换成NSData UIImagePNGRepresentation 。 但是,如何纠正下面的代码,并将屏幕捕获转换成UIImagePNGRepresentation但确保它使用UIImage格式,而不是NSData ? // Take snapshot of screen var imageSnapshot: UIImage! UIGraphicsBeginImageContextWithOptions(self.view.frame.size, false, 0) self.view.drawViewHierarchyInRect(CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height), afterScreenUpdates: false) imageSnapshot = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() // Prepare image to PNG format let imageShare: NSData imageShare = UIImagePNGRepresentation(imageSnapshot)!
我的iPhone应用程序使用正则expression式(与NSRegularExpression)来执行计算大量的string(在1000年)。 这当然需要很多时间。 什么是加快正则expression式的一些策略? 我研究了使用块,但我不认为它会有什么好处 – 它们似乎主要代表lambdafunction(即相当于lisp),并且在具有多个内核的Mac上使用。 显然,目前的iPhone没有多核心。 这是我的代码: NSString *replaceRegexPattern = @"([\\(|\\[].*?[\\)|\\]])|(^to )"; NSRegularExpression *replaceRegex = [[NSRegularExpression regularExpressionWithPattern:replaceRegexPattern options:NSRegularExpressionCaseInsensitive error:nil] retain]; NSArray *myArray = <some data>; NSString *myString, *compareValue; for (i = 0; i < [myArray count]; i++) { myString = [myArray objectAtIndex:i]; compareValue = [replaceRegex stringByReplacingMatchesInString:myString options:0 range:NSMakeRange(0, [myString length]) withTemplate:@""]; // do things […]
我有一些image processing需要很多时间和资源,所以我使用NSOperation + NSOperatioQueue +委托为callBack。 和所有的工作。 现在我想要使用块,因为它在桌面视图中使用非常优雅和简单。 我需要做的只是像AFJSONRequestOperation例如: NSURL *url = [NSURL URLWithString:@"url"]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSLog(@"App.net Global Stream: %@", JSON); } failure:nil]; [operation start]; 在这个例子中,我没有看到任何操作Queue! 我怎么能这样做? [ImageManagerOperation modifyImage:(UIImage*)image completitionBlock:(void (^)(UIImage *modifiedImage))complete]; ImageManagerOperation是一个NSOperation。 我知道我可以设置一个完成块,但我仍然需要在队列中添加操作。 我想尽量减less我的代码中的行号(如果可能:))。
我目前正在分析我的iPhone应用程序启动,试图尽快启动它。 在我开始的应用程序的前19秒内,我使用下面的格式string调用NSDateFormatter的stringFromDate方法6次: @"h:mm a zzz" NSDateFormatter实例本身是由所有调用共享的,我只设置一次date格式,但这6次调用stringFromDate总计为启动CPU时间的17.3%。 注:date是dynamic的,所以我不能保存string。 任何build议,如何我可以做得更快?
我们有一个相当广泛的核心数据模型的应用程序,在Objective C中实现了大量的自定义子类,但是这些子类也是使用Swift编写的应用程序的一部分。 (值得一提的是:我们正在使用Xcode 7.3.1和iOS 9.3进行构build,因此Swift代码是2.2)。 有一个用Swift编写的帮助函数,看起来像这样: extension NSManagedObject { func inContext<T: NSManagedObject>(moc: NSManagedObjectContext) -> T? { guard self.managedObjectContext != moc else { return (self as! T) } do { let obj = try moc.existingObjectWithID(self.objectID) return (obj as! T) // <— fails here } catch let error { return nil } } } 这在对象跳转上下文的相当多的地方被调用。 调用代码通常如下所示: let […]
我知道这个问题之前已经被问过了,但没有人给出如何解决的有用答案。 我有一个使用box2d物理引擎的cocos2d ios应用程序。 我对它进行了性能testing,cpu花费了mach_msg_trap的5.6%的时间。 从我从其他问题收集的信息来看,好像mach_msg_trap只是因为应用程序处于闲置状态而减less了主线程的时间。 我的应用程序不是闲置。 它有不稳定的performance,盘旋在50 fps的区域。 有什么办法来configuration这个来获得额外的性能? 或者这只是我写的一些不好的代码的结果,如果是的话,我该如何优化它? 我正在testing第二代iPod touch上的debugging版本的性能。 这可能是问题的一部分。 我正在精灵群组中分组某些东西。 但有些小精灵的孩子不是聪明人,所以我不能把所有的东西都分成一组。 我确实创造了一批子弹,而不是经常分配和释放它们。 但这是我得到不稳定的performance。 当枪开始发射时,帧率下降10-15 fps。 我试图追踪使用仪器这么久的情况,但是最重要的两个时间是waValidateState,其中包括ccsprite绘制和ccnode访问。 第二次请求的时候,waister是mach_msg_trap。 有没有其他的方法来找出子弹的代码中是什么,这会降低性能? 顺便说一下,你的书是真正有用的学习cocos2d 🙂
这是UILabel在iOS7和iOS8中的一个问题,在iOS9中不存在。 这个奇怪的UILabel行为是用不同的字体来体验的,在Xcode版本6和7中使用Swift,使用模拟器和设备。 问题: 我有一个中心文本alignment的UILabel。 在不同的字体大小,一些文本行停止中心alignment,并捕捉到左alignment。 这是微妙的,但显而易见的。 在下面的图片中: 左:所有文本行整齐地居中。 MIDDLE:在增加字体大小之后,从顶部的第三行更多地向左移动而不是保持居中。 (注意右边有更多的蓝色空间。) 右图:在增加字体大小之后,从顶部的第二行和第三行向左alignment,而不是保持居中。 (注意右边有更多的蓝色空间。) 问题: 什么原因可以解释iOS7和iOS8中这种不寻常的alignment行为,而不是iOS9呢? 我怎样才能确保所有的行都被强制保持居中alignment,而不pipe字体的types或字体的大小? 在iOS7和iOS8中修复或解决此问题的方法是什么,以便使用UILabel中心alignment创build的应用程序不具有此function?
我试图展示一个ImagePicker ,并且在用户select一个图像之后,呈现一个图像编辑ViewController ,用户可以在其中操作图像,然后将编辑后的图像发送回原来的ViewController 。 题: 是否有一个标准或最佳实践方法,从初始ViewControlle开始,然后在另一个ViewController之后呈现ImagePicker进行图像编辑,然后将其全部显示在初始ViewController中,同时使转换看起来无缝? 下面的试用3中的build议是一个好的实践方法还是有一个更好的例子来说明如何实现这一点? 试试1。 我最初的想法是通过下面的代码以编程方式呈现ImagePicker ,然后在select图像之后进行图像编辑ViewController 。 但是这种方法似乎并不正确。 拾取图像后,我似乎无法使ImagePicker正确地继续到ViewController 。 (编辑ViewController显示了一堆“意外地发现零,而解包可选值”错误)。 let imagePicker = MyImagePickerController() imagePicker.delegate = self imagePicker.sourceType = .PhotoLibrary imagePicker.allowsEditing = false imagePicker.modalTransitionStyle = UIModalTransitionStyle.CoverVertical self.presentViewController(imagePicker, animated: true, completion: nil) 试试2。 我的第二个尝试是呈现一个图像编辑ViewController作为一个隐藏/透明之后立即加载的ImagePicker ,但这会导致一些空的背景闪烁。 试试3。 所以我遇到了这个build议,这是我第二次尝试使用窗口背景的变体,以显示当前ViewController的图像,这似乎是可能的。 http://xissburg.com/presenting-multiple-modal-view-controllers-at-once/ 试试4。 我的另一个想法是创build一个单独的ViewController , ImagePicker处理一个ImagePicker ,然后通过接口构build器中的segues连接每个ViewController 。