- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我学习 Swift 有一段时间了,Swift 是我唯一学过的 iOS 开发语言,这意味着我没有系统地学习 Objective-C。我只能读一点 OC 代码。
当我尝试将 OC 项目转换为 Swift 项目时,我遇到了类型识别
问题。
static inline NSRegularExpression * AccountRegularExpression() {
static NSRegularExpression *_accountRegularExpression = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_accountRegularExpression = [[NSRegularExpression alloc] initWithPattern:AccountRegular options:NSRegularExpressionCaseInsensitive error:nil];
});
return _accountRegularExpression;
}
我对那些神秘的代码感到困惑。
目前我只是在swift和OC中遇到了两个不同的东西,几乎都是variable instance
和function
,也就是说我可以读写代码初始化变量实例并创建函数。但是我从来没有在 OC 中看到过这样的东西(是的,我是初学者...),它看起来不像变量实例或方法。
在这里问这个问题之前,我试着写了一个swift函数来充当原来的部分。问题是,编译器在我构建项目后没有抛出任何错误。
这是我的 Swift 代码:
func AccountRegularExpression() -> NSRegularExpression {
var accountRegularExpression: NSRegularExpression!
var onceToken: dispatch_once_t = 0
dispatch_once(&onceToken, {
accountRegularExpression = NSRegularExpression(pattern: self.AccountRegular, options: NSRegularExpressionOptions.CaseInsensitive, error: nil)
})
return accountRegularExpression
}
你能告诉我OC代码是一个变量实例吗?我认为它不是函数或方法。
我谷歌了一下关键词,inline
,就是反编译的过程。这个过程在 Swift 中仍然有效吗?
如何正确翻译 Swift 中的 OC 代码,我猜我的 swift 代码不正确。
非常感谢您的指导和时间。
伊桑·乔
最佳答案
翻译是错误的,因为变量 _accountRegularExpression
和 onceToken
在 C 中被声明为 static
,这对于局部变量意味着它的状态被保持在函数调用之间,在程序的整个生命周期内,类似于全局变量。
它们是 static
对于此函数的正确运行至关重要,该函数返回一个单例实例。如果它们不是static
,则:
dispatch_once
要求您给它一个指向“存储在全局或静态范围内”的 dispatch_once
的指针。通过给它一个具有自动存储的局部变量,您正在调用未定义的行为。不可能知道它会执行一次还是多次。_accountRegularExpression
不是static
,则意味着此函数无法记住并返回它之前创建的同一实例。因此,它不是“单例”。如果 dispatch_once
只执行一次,则在第二次及后续时间此函数将返回 nil
。如果dispatch_once
执行了不止一次,那么每次再次执行都会返回一个新的独立实例。在任何情况下,它都不会返回之前已返回的实例。要使其在 Swift 中正常运行,一种方法是使这些变量成为全局变量:
var accountRegularExpression: NSRegularExpression!
var onceToken: dispatch_once_t = 0
func AccountRegularExpression() -> NSRegularExpression {
dispatch_once(&onceToken, {
accountRegularExpression = NSRegularExpression(pattern: self.AccountRegular, options: NSRegularExpressionOptions.CaseInsensitive, error: nil)
})
return accountRegularExpression
}
但是,函数在 Swift 中返回单例的更好方法是:
func AccountRegularExpression() -> NSRegularExpression {
struct Singleton {
static let sharedInstance = NSRegularExpression(pattern: self.AccountRegular, options: NSRegularExpressionOptions.CaseInsensitive, error: nil)
}
return Singleton.sharedInstance
}
或者干脆去掉这个函数,让它成为一个计算属性:
var accountRegularExpression : NSRegularExpression {
struct Singleton {
static let sharedInstance = NSRegularExpression(pattern: self.AccountRegular, options: NSRegularExpressionOptions.CaseInsensitive, error: nil)
}
return Singleton.sharedInstance
}
或者如果这在某个类中有意义,那么就直接把它作为类的静态属性:
// inside some class
static let accountRegularExpression = NSRegularExpression(pattern: self.AccountRegular, options: NSRegularExpressionOptions.CaseInsensitive, error: nil)
关于objective-c - OC转Swift过程中的Type Recognition Issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30659898/
我有兴趣了解有关模式识别的更多信息。我知道这是一个广泛的领域,所以我将列出一些我想学习处理的特定类型的问题: 在看似随机的字节集中查找模式。 识别图像中的已知形状(例如圆形和正方形)。 注意给定位置流
.NET 中有两个类似的用于语音识别的命名空间和程序集。我试图了解其中的差异以及何时适合使用其中之一。 程序集 System.Speech(在 System.Speech.dll 中)有 System
我正在玩 IBM Watson 的语音到文本演示:https://speech-to-text-demo.mybluemix.net/ 。我上传了一个有 2 个扬声器的音频文件。 Watson 返回的
我使用 Google Speech API 进行语音到文本的转换。但是,它会过滤掉诸如“呃,嗯,啊”等填充词。我有什么办法可以获得包含填充词的文本? 最佳答案 使用像 Kaldi 这样更灵活的 api
我正在使用 Microsoft 的认知服务。我有一个音频输入,需要识别多个发言者及其各自的文本。 根据我的理解,Speaker Rekognition API 可以识别不同的个人,Bing Speec
我需要训练一个双向 LSTM 模型来识别离散语音(从 0 到 9 的单个数字)我已经记录了 100 个说话者的语音。我接下来该怎么做? (假设我将它们拆分为单个 .wav 文件,每个文件包含一个数字)
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 4年前关闭。 Improve this questi
为计算加权 sigmoid 交叉熵损失或数据集不平衡情况下的任何加权损失选择权重的一般逻辑是什么?问题域基于视觉/图像分类。 最佳答案 这篇 CVPR '19 论文是一个很好的引用: "Class-B
是否有任何软件能够获取音频文件并输出语音 (IPA) 文本? 我了解那里的大部分软件都直接将其转化为一种语言,但是否有一种“可教”的? 最佳答案 CMU Sphinx也许能够做你想做的。有几个不同的版
我最近使用说话人识别库 - ALIZE 进行编程。但是我有一些关于如何安装和执行演示的问题。有人可以帮我看看我的安装和执行顺序有什么问题。 我使用 Mac OS 系统: 1、下载lib ALIZE和L
我认为有一些算法可以评估绘制符号和预期符号之间的差异,或者类似的东西。任何帮助将不胜感激 :)) 最佳答案 您可以实现一个简单的神经网络来识别手写数字。最简单的实现类型是通过反向传播训练的前馈网络(它
执行此操作的最佳库是什么。并且是质量好足以依靠。不可能用说话者的声音训练系统或使用术语词典来改善结果。 最佳答案 在 Windows 上,您想使用 SAPI 接口(interface)(语音 API)
我找到了一些使用深度学习进行音频分类的论文和幻灯片。 一些研究使用频谱图作为深度学习模型的输入。 我想知道确切和实际的实现。 我找到了 this slide . 第 67 页 据我了解,第一层节点数为
我正在使用Google的语音识别API。我用Java创建了一个包装器(像这样:http://pastebin.com/zJEhnJ74);一切正常,但有时我会收到http 403或http 500,所
我正在尝试结合语音识别和说话人二值化技术来识别对话中有多少说话人以及哪个说话人说了什么。 为此,我使用 CMU Sphinx和 LIUM Speaker Diarization . 我可以分别运行这两
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在尝试研究可用的语音识别引擎和 SDK,以开发支持 Windows CE 语音的应用程序。我遇到过 Nuance,但没有看到其他任何东西。如果可能的话,我更喜欢 .Net SDK,但我想大多数会是
我一直在对用于我的对象识别程序的正确算法进行大量搜索。但我发现的一切都有一些重大缺陷。 我的程序应该在遇到新对象时在线学习它们。当它遇到一个新对象时,在它上面有一个框并学习该对象(OpenTLD 完美
我正在尝试使用Pocketsphinx(。进行简单的语音到文本映射。语法非常简单,例如: public = (Matt, Anna, Tom, Christine)+ (One | Two | Th
我想在我的 Mac OS x 上实现一个通过麦克风接收语音的系统。我知道如果不训练系统,任意语音识别几乎是不可能的,所以我愿意将其限制为 10 个简单的句子。它必须高度准确地识别这 10 个句子中的哪
我是一名优秀的程序员,十分优秀!