我需要根据是否插入耳机来改变我的音频.我知道kAudioSessionProperty_AudioInputAvailable,它会告诉我是否有麦克风,但我想测试任何耳机,而不仅仅是带有内置耳机的耳机在麦克风.这可能吗?
我有一个后台应用程序,需要每1.5秒向另一个进程发送一个keep-alive.在OSX 10.7和10.8中一切都运行顺畅,但在OSX 10.9下,许多保持活动通知都会丢失,有时会达到3次.通常情况下,前3或4分钟一切正常,然后问题就开始发生了.
经过进一步检查,似乎OSX Mavericks"定时器合并"功能将负责决定将请求的1.5秒延长到4.0秒.
有没有办法在NSThread中表明不合并?或者至少表明允许的最大合并变化?
请参阅以下代码以供参考:
+(void)keepAliveThread
{
@autoreleasepool {
void (^keepAlive)() = ^ (){
// (snipped!) do something...
};
dispatch_queue_t mainQueue = dispatch_get_main_queue();
while( [NSThread currentThread].isCancelled == NO )
{
@autoreleasepool {
dispatch_async(mainQueue, keepAlive);
[NSThread sleepForTimeInterval:1.5];
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 UICollectionView 而不是 UITableView 来显示大量项目(> 15000),并且 UICollectionView 似乎为集合所需的整个 contentView 大小预先分配了一个像素缓冲区。根据项目大小,模拟器显示需要高达 6.75GB 的内存。
我希望集合视图基于其与 UITableView 非常相似的协议,不会分配任何像素缓冲区而仅依赖于单元格的支持/渲染。
我正在使用故事板文件来定义集合视图和单元格,它们都具有 Opaque = false。我看过很多关于 Stack Overflow 的文章,大部分都与内存泄漏有关,所以我对如何解决这个问题有点困惑。
出于好奇,这里是整个代码库(故事板除外):
MyCollectionViewCell.swift
import UIKit
class MyCollectionViewCell: UICollectionViewCell {
static let identifier = "myCellIdentifier"
}
Run Code Online (Sandbox Code Playgroud)
UIColor+Random.swift
import UIKit
extension UIColor {
static func randomColor() -> UIColor {
let red = CGFloat(drand48())
let green = CGFloat(drand48())
let blue = CGFloat(drand48())
return UIColor(red: red, green: green, blue: blue, alpha: 1.0)
}
}
Run Code Online (Sandbox Code Playgroud)
视图控制器.swift
import UIKit
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout …Run Code Online (Sandbox Code Playgroud)