我可以从照片库中选择并显示图像,但我的目标是能够将选择的图像或文件路径保存到核心数据,以便在选择保存的记录时也会显示图像.
我有CoreData工作,我能够从CoreData显示文本很好,它只是图像阻止我.
@IBAction func addPic(sender: AnyObject) {
pickerController.delegate = self
pickerController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
// 2
self.presentViewController(pickerController, animated: true, completion: nil)
// Displays image
func imagePickerController(picker: UIImagePickerController!,didFinishPickingMediaWithInfo info: NSDictionary!){
image.image = info[UIImagePickerControllerOriginalImage] as? UIImage
self.dismissViewControllerAnimated(true, completion: nil)
Run Code Online (Sandbox Code Playgroud) 这个问题已经清理完毕,重要的信息转移到下面的答案.
我对内存管理有一些疑问.
我正在构建一个照片编辑应用程序.因此,保持低内存使用率非常重要.此外,我不会发布代码,因为在执行某项特定操作时我没有大量内存泄漏.我只是丢失了几个KB/MB的所有发生的事情.通过成千上万行代码来查找千字节并不好玩;)
我的应用程序使用核心数据,许多cifilter东西,位置和基础知识.
我的第一个视图只是一个tableview,花了我大约5mb的内存.然后你拍摄一些照片,应用一些过滤器,这会保存到核心数据然后你回到第一个视图.
除了驱动第一个视图所需的数据之外,是否有可能真正摆脱内存中的所有内容.(非常节省和令人敬畏的5mb)
或者即使你把所有东西都设为零,总会留下一些东西?
奖金问题:UIImageJPEGRepresentation和
之间的文件大小/ CPU负载是否存在差异UIImagePNGRepresentation?我知道你可以用JPEG方法设置压缩质量(在cpu/gpu上更难?).
只是尽可能地减少记忆压力.
更新:
有人向我指出,这个问题可能过于含糊.
我在某些时候遇到的问题如下:
这些都是在iPhone 4s上测试的,而不是模拟器.
这里有一个模因来减轻这个网站的情绪.
我想为UILabel中的文本更改添加动画效果.
例如:旧文本向上移动,新文本从底部移动.
我已经意识到我需要标签.一个用于旧的,一个用于新文本.第二个UILabel位于第一个下面.然后两个都动起来了.
但是,你如何切断第一个标签,因为它通过框架的顶部动画?
这个问题是关于属性disguiseToken本身,而不是直接关于错误。
disguiseToken没有出现在代码库中,谷歌搜索也没有出现任何东西。
disguiseToken?调用时发生错误getOwnPropertyDescriptor。
示例堆栈跟踪:
TypeError: Cannot read property 'disguiseToken' of undefined
at getOwnPropertyDescriptor (eval at (:1:38695), :560:24)
at Function.Object.getOwnPropertyDescriptor (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:39700)
at a (https://www.mywebsite.com/main.25a9fda6ea42f4308b79.js:1:1075141)
at https://www.mywebsite.com/5.6c58d8732681a35a1f8b.js:1:1533
at Object.26NW (https://www.mywebsite.com/5.6c58d8732681a35a1f8b.js:1:1805)
at i (https://www.mywebsite.com/runtime.8928e149b3f1200cf1ca.js:1:507)
at Module.L6id (https://www.mywebsite.com/5.6c58d8732681a35a1f8b.js:1:62181)
at i (https://www.mywebsite.com/runtime.8928e149b3f1200cf1ca.js:1:507)
at https://www.mywebsite.com/main.25a9fda6ea42f4308b79.js:1:914848
at t.invoke (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:8160)
at M (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:14076)
at M (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:13634)
at https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:14864
at t.invokeTask (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:8844)
at Object.onInvokeTask (https://www.mywebsite.com/main.25a9fda6ea42f4308b79.js:1:467756)
at t.invokeTask (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:8765)
at e.runTask (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:4026)
at g (https://www.mywebsite.com/polyfills.d8680adf69e7ebd1de57.js:1:11111)
Run Code Online (Sandbox Code Playgroud)
此错误发生在具有不同引擎的多个浏览器中。在过去的 3 个月中(今天是 …
我试图让一个神经网络在金属上运行.基本思想是数据重复.每个gpu线程为随机数据点运行一个网络版本.
我写过其他着色器工作正常.
我还在c ++命令行应用程序中尝试了我的代码.没有错误.也没有编译错误.
我使用apple文档转换为metal c ++,因为不支持c ++ 11中的所有内容.
它在加载内核函数后以及在尝试分配newComputePipelineStateWithFunction给金属设备时崩溃.这意味着在编译时未捕获的代码存在问题.
MCVE:
kernel void net(const device float *inputsVector [[ buffer(0) ]], // layout of net *
uint id [[ thread_position_in_grid ]]) {
uint floatSize = sizeof(tempFloat);
uint inputsVectorSize = sizeof(inputsVector) / floatSize;
float newArray[inputsVectorSize];
float test = inputsVector[id];
newArray[id] = test;
}
Run Code Online (Sandbox Code Playgroud)
更新
它与动态数组有关.
由于它无法创建管道状态并且不会崩溃运行实际着色器,因此它必须是编码问题.不是输入问题.
将动态数组中的值分配给缓冲区会使其失败.
我试图将一个对象作为参数传递给查询(而不是标量).从文档看来,这应该是可能的,但我无法弄清楚如何使它工作.
我正在使用graphql-go,这是测试模式:
var fileDocumentType = graphql.NewObject(graphql.ObjectConfig{
Name: "FileDocument",
Fields: graphql.Fields{
"id": &graphql.Field{
Type: graphql.String,
Resolve: func(p graphql.ResolveParams) (interface{}, error) {
if fileDoc, ok := p.Source.(data_format.FileDocument); ok {
return fileDoc.Id, nil
}
return "", nil
},
},
"tags": &graphql.Field{
Type: graphql.NewList(tagsDataType),
Args: graphql.FieldConfigArgument{
"tags": &graphql.ArgumentConfig{
Type: tagsInputType,
},
},
Resolve: func(p graphql.ResolveParams) (interface{}, error) {
fmt.Println(p.Source)
fmt.Println(p.Args)
if fileDoc, ok := p.Source.(data_format.FileDocument); ok {
return fileDoc.Tags, nil
}
return nil, nil
},
},
},
})
Run Code Online (Sandbox Code Playgroud)
我试图使用的输入类型(我已尝试过InputObject和标准对象)
var tagsInputType = graphql.NewInputObject(graphql.InputObjectConfig{
Name: …Run Code Online (Sandbox Code Playgroud) 澄清澄清:我知道如何使用obj-c或swift在Xcode中创建库.我知道如何在项目中使用它们.我知道如何编译这些项目所以一切正常.我不知道的是如何采用开源C源代码(hehe)并将其构建/编译/编译到库中.
只是为了澄清下面的一切:我正在寻找一种在Swift应用程序中使用c库的方法,这意味着使用Xcode.c库不必使用/在Xcode中构建,我可以使用其他工具.
我通常会编写自己使用的所有代码,不幸的是我只在Xcode中编写Swift.所以我在使用框架/库方面有点落后.现在我真的想探索Tesseract OCR,我在构建所需的库时遇到了麻烦.对我来说,最好真正理解它是如何工作的,并且能够自己做到这一点,而不仅仅是查看Github并找到预编译的源代码.
以下项目都以不同方式处理.iOS版本使用预编译的库.(.a文件)OSX版本使用包含库文件(尚未编译)的项目.
libjpeg不能只是拖放的库的示例.
使用brew只会将其安装为命令行工具,而不会生成lib.
我遇到的问题是我对这些c库知之甚少,以及如何有效地构建它们甚至google.
我的问题:
我不是在寻找Tesseract的具体答案.我想自己学习如何做到这一点.
本文没有提到如何实际添加c程序并让xcode成功.关于工作空间的部分很有趣.
这个实际上真的很重要.但是我在Tesseract中找不到可执行文件.执行步骤5时,所有选项都显示为灰色.
这看起来很漂亮:简单的c ++ procect 为什么tesseract看起来不那样?:)
有谁知道为什么Xcode有时在尾随闭包时使用一种语法而不是另一种?
范例:
func someThingWithABlock(block:(() -> Void)) {
block()
}
Run Code Online (Sandbox Code Playgroud)
这是我的首选语法:
someThingWithABlock { () -> Void in
//
}
Run Code Online (Sandbox Code Playgroud)
但是有时候Xcode会突然给我这个:
someThingWithABlock({ () -> Void in
//
})
Run Code Online (Sandbox Code Playgroud)
我注意到,嵌套时Xcode总是喜欢第二种语法:
someThingWithABlock { () -> Void in
someThingWithABlock({ () -> Void in
})
}
Run Code Online (Sandbox Code Playgroud)
但仅当嵌套在另一个尾随闭包中时:
func foo() {
someThingWithABlock { () -> Void in
//
}
}
Run Code Online (Sandbox Code Playgroud)
我知道他们在本质上是相同的。但是几天来一直困扰着我,现在我想了解更多信息,甚至可能要解决它。
我注意到我的应用程序没有请求使用相机的权限.经过一些实验,我发现用于检查权限的代码片段需要很长时间才能完成.所以我想让我的viewdidload的那部分运行在串行队列(sync)上.在开始下一行之前强制其余部分等待auth进程完成.但这并没有真正起作用.这些行按顺序开始,但仍然没有按顺序完成.
奇怪的是,如果我只是要求权限并且不执行任何操作,没有completionHandler(如下面的代码)那么他确实第二次运行完成后使用completionHandler,尽管它仍然没有显示警告用户.这可能是因为录制视频在欧洲不需要许可吗?avcapturedevice参考
如果我想逐行执行代码,我是否需要使用障碍?或同步串行队列或??
AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { nil }())
Run Code Online (Sandbox Code Playgroud)
更新:
这种方法应该非常安全,但事实并非如此.返回true表示理所当然,但rawValue为3(拒绝)
func checkForAuthorizationStatus() {
println("auth me")
AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: {
granted in
if granted {
println("granted: \(granted)")
self.deviceAuthorized = true
println("raw value: \(AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo).rawValue)")
} else {
self.deviceAuthorized = false
}
})
}
Run Code Online (Sandbox Code Playgroud)
更新2:在下面的评论中回答. - 重置设备上的隐私设置以获取请求.
swift ×5
c++ ×2
ios ×2
avfoundation ×1
browser ×1
core-data ×1
frameworks ×1
go ×1
graphql ×1
javascript ×1
metal ×1
uiimage ×1
xcode ×1