我有一个太大的图像,无法加载到内存中,但我只对该大图像中的一组子像素感兴趣.是否有可能只将这个像素子集解码到内存中?我知道在Android中有一个类正在做这个叫做BitmapRegionDecoder的类就是这样的
我找到了CGDataProviderCreateSequential,但它需要构造函数中的原始像素...
现在我正在做这样的事情:
UIImage* srcImage = ...;
CFDataRef cgImgDataRef = CGDataProviderCopyData(CGImageGetDataProvider(srcImage.CGImage));//After this call, all pixels are decoded into memory and the app crashes
char* imageData = (char*)CFDataGetBytePtr(cgImgDataRef);
Run Code Online (Sandbox Code Playgroud) 我编写了一个测试来验证函数是否被调用:
func test_getTaskLists_doNotCreateOrUpdateTaskListToStorageWhenSynchedLocally() {
...
let (datasource, restAPI, fakeTaskListStorage) = ...
datasource.getTaskLists() { (taskLists, error) -> Void in
...
XCTAssertEqual(1, fakeTaskListStorage.readAllInvocationCount)
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
该函数被模拟绕过超级实现,问题是该函数返回一个结果,我无法想出构建/模拟以返回一个有效的对象,所以编译器停止抱怨...我知道我可以调用super.readAll()但是在这里我实际上想要将我的测试数据(fakeTaskLists)转换为假的Result对象,这样每个人都很高兴...不确定这是否可能
class FakeTaskListsStorageRealm : TaskListStorageRealm {
var fakeTaskLists:[TaskList]?
override func readAll() -> RealmSwift.Results<TaskList> {
readAllInvocationCount += 1
//Here I want to return fakeTaskLists somehow...
}
}
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有我的主视图,当我单击一个按钮时,UIPopoverController显示在我的主视图(不是全屏,所以我仍然看到后面的视图)包含UITableView.当我单击其中一个tableview单元格时,我想显示一个以屏幕为中心的自定义视图(通知用户该应用正在处理的简单视图)将在特定时间内淡入淡出.
问题是我的自定义视图始终显示在UIPopover下...我尝试了所有我能想到的,带有SubviewToFront等......没有什么工作......我也尝试将自定义视图包装在UIViewController中并使用[mainView presentViewController: myCustomView ...]但是当我这样做时,主视图消失了
有人可以帮忙吗?谢谢