我为Apple集合视图示例项目创建了一个非常简单的集合视图.我在storyboard中的视图控制器中有一个集合视图,并在集合视图右上角的集合视图单元格内设置一个标签.我已经把它连接到我的自定义单元格中的IBOutlet.这是相关的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.workoutView registerClass:[Cell class] forCellWithReuseIdentifier:@"Cell"];
...
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
if (collectionView == self.collView) {
Cell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
cell.segmentTitle.text = @"some text";
cell.backgroundColor = [UIColor whiteColor];
return cell;
}
return nil;
}
Run Code Online (Sandbox Code Playgroud)
我在segmentTitle.text
part 之后放了一个断点,segmentTitle总是为null.因此,我在模拟器中看到的是空白框.我错过了什么?
我对新的AVAudioEngine感到非常兴奋.它似乎是音频单元的一个很好的API包装器.不幸的是,文档到目前为止还不存在,而且我在使用简单的图表时遇到了问题.
使用以下简单代码设置音频引擎图,永远不会调用tap块.它模仿了一些漂浮在网络上的示例代码,尽管这些代码也不起作用.
let inputNode = audioEngine.inputNode
var error: NSError?
let bus = 0
inputNode.installTapOnBus(bus, bufferSize: 2048, format: inputNode.inputFormatForBus(bus)) {
(buffer: AVAudioPCMBuffer!, time: AVAudioTime!) -> Void in
println("sfdljk")
}
audioEngine.prepare()
if audioEngine.startAndReturnError(&error) {
println("started audio")
} else {
if let engineStartError = error {
println("error starting audio: \(engineStartError.localizedDescription)")
}
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是用于分析的原始pcm缓冲液.我不需要任何效果或输出.根据WWDC演讲"502 Audio Engine in Practice",这个设置应该可行.
现在,如果要从输入节点捕获数据,可以安装节点,我们已经讨论过了.
但是这个特殊例子的有趣之处在于,如果我只想使用输入节点,只需从麦克风捕获数据并进行检查,实时分析或者将其写入文件,我可以直接安装点击输入节点.
而tap将完成拉动数据输入节点的工作,将其填充到缓冲区中,然后将其返回给应用程序.
获得该数据后,您可以随心所欲地执行任何操作.
以下是我尝试的一些链接:
编辑:这是基于Thorsten Karrer建议的实现.遗憾的是,它不起作用.
class AudioProcessor {
let audioEngine = AVAudioEngine()
init(){
let inputNode = audioEngine.inputNode
let bus = 0 …
Run Code Online (Sandbox Code Playgroud) 我一直在iphone上进行简单的频率检测设置.在存在谐波的情况下,使用FFT结果在频域中进行分析有些不可靠.我希望使用倒谱结果来帮助确定正在播放的基本频率.
我正在使用AudioToolbox框架中的AudioQueues,并使用Accelerate框架进行傅立叶变换.
我的过程正是维基百科的Cepstrum文章中列出的Real Power Cepstrum,具体为:信号→FT→abs()→square→log→FT→abs()→square→power倒谱.
我遇到的问题是倒谱结果非常嘈杂.我必须删除第一个和最后20个值,因为它们与其他值相比是天文数字.即使在"清理"数据之后,仍然存在大量的变化 - 远远超过我对第一张图的预期.有关频域和quefrency域的可视化,请参见下面的图片.
FFT
倒谱
当我在频域中看到如此明显的赢家时,我希望在quefrency域中看到类似的清晰结果.我玩了A440,并希望bin 82左右的音量最高.图表上的第三个峰值代表bin 79,它足够接近.正如我所说,前20个左右垃圾桶在幅度如此天文数字的是unusuable,我不得不从数据集中删除他们为了看到什么.倒谱数据的另一个奇怪的质量是偶数箱似乎远远高于奇数箱.以下是77-86的频率分档:
77: 151150.0313
78: 22385.92773
79: 298753.1875
80: 56532.72656
81: 114177.4766
82: 31222.88281
83: 4620.785156
84: 13382.5332
85: 83.668259
86: 1205.023193
Run Code Online (Sandbox Code Playgroud)
我的问题是如何清理频域,以便我的Cepstrum域结果不那么疯狂.或者,帮助我更好地理解如何解释这些结果,如果它们正如人们在倒谱分析中所期望的那样.我可以发布我正在使用的代码的示例,但它主要使用vDSP调用,我不知道它会有多大帮助.
在实现自定义UICollectionViewLayout
子类时发现了这种奇怪的行为.我设置了子类方法,除了collectionViewContentSize
.所有细胞都出现在我预期的位置,但contentView
时间太长了.看起来应该是它的两倍.
我实现了下面的方法来获得正确的contentSize
.虽然现在是预期值,但prepareLayout
每次视图滚动一个像素时都会调用它.这意味着如果我从0,0刷到0,500,prepareLayout
则称为500次!
collectionViewContentSize
那可能导致我的原因是什么?
- (CGSize)collectionViewContentSize {
UICollectionViewLayoutAttributes *leftAttributes = (UICollectionViewLayoutAttributes *)self.layoutInfo[@"segmentCell"][[NSIndexPath indexPathForItem:[self.collectionView numberOfItemsInSection:0]-1 inSection:0]];
UICollectionViewLayoutAttributes *rightAttributes = (UICollectionViewLayoutAttributes *)self.layoutInfo[@"segmentCell"][[NSIndexPath indexPathForItem:[self.collectionView numberOfItemsInSection:1]-1 inSection:1]];
float leftHeight = leftAttributes.frame.size.height + leftAttributes.frame.origin.y;
float rightHeight = rightAttributes.frame.size.height + rightAttributes.frame.origin.y;
float maxHeight = leftHeight > rightHeight ? leftHeight : rightHeight;
return CGSizeMake(self.collectionView.bounds.size.width, maxHeight);
}
Run Code Online (Sandbox Code Playgroud) 我几天来一直在调试臭名昭着的EXC_BAD_ACCESS错误.NSZombieEnabled = YES没有提供任何东西.每次收到错误时,调用堆栈都不同,每隔5或6次运行一次.
我在Lou Franco的网站上看到了启用guard malloc(现在是Xcode 4的方案编辑器)的提示:了解EXC_BAD_ACCESS.一旦我这样做,我的程序就停止了导致这个难以捉摸的错误的确切行.
根据其描述,guard malloc为每个malloc创建单独的页面,并在释放内存时删除整个页面,从而在访问释放的内存时使程序崩溃.对于一般的开发,为什么我不能一直保持对malloc的保护?它似乎很容易捕获某些类型的内存错误.如果我没有专门测试内存管理或性能,那么使用它有一些缺点吗?
我有一个html5视频,我试图在播放期间以特定间隔设置回调.该视频开始使用javascript播放video.play()
.现在我的代码侦听'loadedmetadata'
事件,然后查询持续时间并设置这些回调.适用于移动游猎,但不适用于Android(2.3.4和2.3.7).
在Android上,'loadedmetadata'
似乎在持续时间实际可用之前发出.为了测试这一点,我在代码中的加载过程的每一步都记录了持续时间,以查看实际可以读取的位置.video.play()
在一个'timeupdate'
事件之前和之后,该video.duration
属性为6000,无论使用何种视频.我用mp4文件和3gp文件测试了这个.一旦满足这些条件,就可以获得实际持续时间.
我发现这个帖子有类似的问题[1].未被接受的最高投票答案是我最初的设置,它在iOS上运行良好.接受的答案也不起作用,并表明这是一个webkit问题.我记录了该video.readyState
属性,看到它是'4'
在视频开始播放之前,但是在开始播放和第一个'timeupdate'
事件之前,持续时间仍然不可用.
我们当前的解决方法是查询video.duration
值,并且仅在何时设置事件回调video.duration !== 6000
.这非常难看,我想深究它,以免这个黑客回来咬人.这里的讨论[2]似乎表明该问题可能与编码有关.也就是说,没有正确编码,android在加载文件之前不会正确读取元数据,或者可能根本没有读取元数据,而是以另一种方式计算持续时间.
我能做些什么来使这个更干净,或者我现在仍然坚持使用黑客?
[1] 检索HTML5视频时长的问题
[2] http://www.broken-links.com/2010/07/08/making-html5-video-work-on-android-phones/
我正在使用第三方c API,我试图用一个简单的字符串调用其中一个函数.像这样的东西:
some_c_func("aString");
Run Code Online (Sandbox Code Playgroud)
我收到一个构建错误:
Type 'UnsafeMutablePointer<char_t>' does not conform to protocol 'StringLiteralConvertible'
Run Code Online (Sandbox Code Playgroud)
我已经看到一些建议在字符串或类似的转换上使用utf8,它几乎在那里,但有以下错误:
some_c_func("aString".cStringUsingEncoding(NSUTF8StringEncoding));
'UnsafePointer<Int8>' is not convertible to 'UnsafeMutablePointer<char_t>'
Run Code Online (Sandbox Code Playgroud)
如何创建UnsafeMutablePointer?
在具有before_action的控制器操作中,using render something and return
实际上并不会导致控制器停止执行其余操作.在我的测试中,只有在控制器操作中调用时才能and return
正常工作.
# DoubleRenderError
class SomeController < ApplicationController
before_filter :double_render, only: [:index]
def index
render file: "public/500.html", status: :internal_server_error
end
def double_render
render file: "public/404.html", status: :not_found and return
end
end
# Renders 404 only, no error
class SomeController < ApplicationController
def index
render file: "public/404.html", status: :not_found and return
render file: "public/500.html", status: :internal_server_error
end
end
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?before_actions可以停止控制器执行的其余部分吗?
ios ×3
iphone ×2
swift ×2
avfoundation ×1
core-audio ×1
cstring ×1
duration ×1
fft ×1
guard ×1
html5 ×1
ios6 ×1
ios8.1 ×1
javascript ×1
malloc ×1
pitch ×1
storyboard ×1
uilabel ×1
video ×1