时间分析器显示我的应用程序中最耗时的操作是UITableViewCells
从nib文件加载.其中最昂贵的是加载UITableViewCell
4KB图像.
我UITableViewCell
使用以下代码从nib 加载:
[[NSBundle mainBundle] loadNibNamed:@"UITableViewCellPortrait" owner:self options:NULL];
cell = portraitCell;
self.portraitCell = nil;
Run Code Online (Sandbox Code Playgroud)
有没有人比较过以编程方式创建视图或UITableViewCell
从笔尖加载a之间的区别?
编辑:
我比较了UITableViewCell
从笔尖重复加载和以编程方式创建视图的时间曲线.我的测试包括UITableViews
在3-5秒的时间内交替两次约10次.在每个测试中,以UITableViewCell
编程方式加载速度要快得多,速度提高2到6倍.
任何人都可以证实这些结果吗?
编辑:我更新了nib加载代码只加载nib文件一次,并使用缓存版本进行后续调用.
if (self.UITableViewPortaitNib == nil) {
self.UITableViewPortaitNib = [UINib nibWithNibName:@"UITableViewCellPortrait" bundle:[NSBundle mainBundle]];
}
self.UITableViewPortaitNib instantiateWithOwner:self options:NULL];
cell = portraitCell;
self.portraitCell = nil;
Run Code Online (Sandbox Code Playgroud)
我还使用自动化仪器来创建更一致的运行,结果仍然建议以UITableViewCells
编程方式加载比加载UITableViewCells
笔尖更快.UITableViewCells
从笔尖加载的平均运行时间约为90 UITableViewCell
毫秒,而以编程方式创建的平均运行时间为50毫秒.
我正在使用UIView动画来调整大小并翻译包含多个子视图的视图.父视图的动画完美发生; 但是,子视图表现出奇怪的行为.动画开始时,子视图会立即调整大小,然后移动到最终位置.
例如,如果动画的持续时间和延迟为五秒,则一旦调用动画,子视图将移动到所需的动画结束值.五秒后,superview将调整大小并转换为所需的.
我的动画代码是:
[UIView animateWithDuration:0.5 animations:^{
if (UIDeviceOrientationIsLandscape(self.interfaceOrientation)) {
self.leftPaneView.frame = leftPaneLandscapeFrame;
self.rightPaneContainerView.frame = rightPaneLandscapeFrame;
}
if (UIDeviceOrientationIsPortrait(self.interfaceOrientation)) {
CGFloat offset = 300;
self.leftPaneView.frame = CGRectOffset(leftPanePortraitFrame, -offset, 0);
self.rightPaneContainerView.frame = rightPanePortraitFrame;
}
}];
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
注意:rightPaneContainerView包含UIViewController的视图,该视图是调用此动画的视图控制器的子视图.
我在iOS 7设备上展示UIImagePickerController时遇到问题.我使用以下代码来呈现图像选择器.
UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init];
cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera;
cameraUI.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
cameraUI.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
cameraUI.delegate = self;
[[self presentViewController:cameraUI animated:YES completion:NULL];
Run Code Online (Sandbox Code Playgroud)
在调用presentViewController之后,应用程序因执行错误访问而崩溃.控制台报告以下异常.
[SBSAccelerometer valueRestriction]: unrecognized selector sent to instance 0x1650e360
[__NSCFNumber valueRestriction]: unrecognized selector sent to instance 0x146d0e70
Run Code Online (Sandbox Code Playgroud)
我让僵尸看到一个对象是否过早被解除分配.Zombies报告以下例外情况:
[NSISRestrictedToNonNegativeVariable retain]: message sent to deallocated instance 0x156f0010
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
编辑
这是我在启用僵尸时收到的堆栈跟踪:
我是JQuery的新手,无法获取div块的内容.
<div class="update_status">
Updated successfully
</div>
Run Code Online (Sandbox Code Playgroud)
当以下脚本运行时:
$(document).ready(function () {
$(function () {
var $status_div = $("#update_status");
if ($status_div) {
alert("1");
alert($status_div.html());
alert("2");
} else {
alert("undefined");
}
});
});
Run Code Online (Sandbox Code Playgroud)
我收到三个警报,"1","未定义"和"2".我希望得到"成功更新".关于我做错了什么的任何想法?
我正在寻找有关如何在处理具有许多必需关联对象的对象时有效使用ruby gem"FactoryGirl"的建议.
例如,假设我的班级之间有以下关系.
class A < ActiveRecord
has_many B
end
class B < ActiveRecord
belongs_to A
has_many C
end
class C < ActiveRecord
belongs_to B
end
Run Code Online (Sandbox Code Playgroud)
现在,如果我想为我的C控制器编写测试用例,我必须在这个链中创建所有对象.现在,这就是我在工厂里做的事情.但有更好的方法吗?
ios ×3
iphone ×3
cocoa-touch ×2
factory-bot ×1
ios7 ×1
jquery ×1
objective-c ×1
rspec ×1
uikit ×1
xcode ×1