让我们说我想让这段代码线程安全:
- (void) addThing:(id)thing { // Can be called from different threads
[_myArray addObject:thing];
}
Run Code Online (Sandbox Code Playgroud)
GCD似乎是实现这一目标的首选方式:
- (void) addThing:(id)thing {
dispatch_sync(_myQueue, ^{ // _myQueue is serial.
[_myArray addObject:thing];
});
}
Run Code Online (Sandbox Code Playgroud)
与传统方法相比,它有什么优势?
- (void) addThing:(id)thing {
@synchronized(_myArray) {
[_myArray addObject:thing];
}
}
Run Code Online (Sandbox Code Playgroud) 我需要获取当前连接的Wi-Fi热点的名称,例如"BT OpenZone"
我被告知可以使用CaptiveNetwork特别是CNCopyCurrentNetworkInfo 来完成
我的代码到目前为止:
#import <SystemConfiguration/CaptiveNetwork.h>
...
// Get the dictionary containing the captive network infomation
CFDictionaryRef captiveNtwrkDict = CNCopyCurrentNetworkInfo(kCNNetworkInfoKeySSID);
// Get the count of the key value pairs to test if it has worked
int count = CFDictionaryGetCount(captiveNtwrkDict);
NSLog(@"Count of dict:%d",count);
Run Code Online (Sandbox Code Playgroud)
当代码在WiFi热点的设备上运行时,captiveNtwrkDict为零.
有没有人设法让它工作?我无法在CaptiveNetworks上找到很多文档或任何示例代码示例...任何帮助将不胜感激.
我想在使用FFMPEG创建.ts文件时减少多路复用开销.
./ffmpeg -i myInputFile.ismv \
-vcodec copy \
-acodec copy \
-bsf h264_mp4toannexb \
-map 0 \
-f segment \
-segment_time 10\
-segment_list_size 999999 \
-segment_list output/myVarientPlaylist.m3u8 \
-segment_format mpegts \
output/myAudioVideoFile-%04d.ts
Run Code Online (Sandbox Code Playgroud)
我的输入是ismv格式,包含视频和音频流:
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 320x240, 348 kb/s, 29.97 tbr, 10000k tbn, 59.94 tbc
Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 63 kb/s
Run Code Online (Sandbox Code Playgroud)
存在与多路复用相关的问题,这导致将大量开销添加到流中.这是我为音频描述的问题:

因此对于给定的aac流,开销将是88%(因为200字节将映射到2 x 188字节数据包).
对于视频,iframe数据包非常大,因此它们可以很好地转换为.ts数据包,但是,差异可以与音频数据包一样小,因此它们会遇到同样的问题.
解决方案是将几个aac数据包组合成一个更大的流,然后再将它们打包成.ts.这是否可以开箱即用FFMPEG?
我正在做一个关于Gabor特征提取的项目.我很困惑Gabor功能的含义.我制作了一个具有不同方向和频率的特征矩阵.这是Gabor特征还是诸如统计特征,几何特征,空间域特征,不变性,可重复性等特征的计算,其在将图像与具有不同方向和频率的Gabor滤波器组卷积之后获得的图像是指Gabor特征.
我正在更新一个网站,以添加一些移动友好页面.
目前我们有一个大的css页面,其中包含所有内容.我的想法是将所有特定于移动设备的css放入单独的文件中,然后链接两个工作表.移动css将覆盖默认css中的任何内容(更大的按钮等).
我对css很新,最佳做法是什么?
很多人都知道iOS 5引入了一个用于拇指键入的光滑分离键盘.不幸的是,我有一些依赖于普通全屏键盘布局的UI.我的一个视图控制器向用户显示一个文本输入表,如果他们点击一个将被键盘覆盖的textField,它会随键盘一起向上滑动.拆分键盘不需要此操作.
有没有办法在弹出之前检查哪个键盘布局正在使用?
谢谢!
Voice over会NSStrings像这样读取以下内容
14:15"十四点十五分."
这显然是一个时间
14:00"十四."
这是模棱两可的.
如果时间14:00显示在状态栏中,则会将其正确读取为
"一万四小时"
我如何以本地化的方式实现这一目标?
目前我正在这样做'获取方向':
NSString *googleMapsURLString;
googleMapsURLString = [NSString stringWithFormat:
@"http://maps.google.com/?saddr=%1.6f,%1.6f&daddr=%1.6f,%1.6f",
curLoc.latitude, // Start
curLoc.longitude,
self.hotspot.coordinate.latitude,
self.hotspot.coordinate.longitude];
NSLog(@"Opening URL: %@",googleMapsURLString);
NSURL *url = [NSURL URLWithString:googleMapsURLString];
[[UIApplication sharedApplication] openURL:url];
Run Code Online (Sandbox Code Playgroud)
有没有人知道是否有参数通过步行获取方向而不是默认驾驶?
XCode现在可以保存以前运行的日志,这很棒.

有没有办法搜索所有日志.
我的用例是我看到了一个特定的错误,但无法记住它在哪个运行.我需要从日志中找到错误URL.
NSCache是一种很少使用的工具,实际上看起来非常有用.我创建了一个简单的实验,看看它是如何工作的,看起来它在低内存情况下不会自动驱逐数据(或者我做错了!)
- (void)viewDidLoad
{
_testCache = [[NSCache alloc] init];
// Allocate 600 MB of zeros and save to NSCache
NSMutableData* largeData = [[NSMutableData alloc] init];
[largeData setLength:1024 * 1024 * 600];
[_testCache setObject:largeData forKey:@"original_Data"];
}
- (IBAction)buttonWasTapped:(id)sender {
// Allocate & save to cache 300 MB each time the button is pressed
NSMutableData* largeData = [[NSMutableData alloc] init];
[largeData setLength:1024 * 1024 * 300];
static int count = 2;
NSString* key = [NSString stringWithFormat:@"test_data_%d", count++];
[_testCache setObject:largeData forKey:key];
NSMutableData* …Run Code Online (Sandbox Code Playgroud)