小编Rob*_*ert的帖子

dispatch_sync比@synchronized有什么优势?

让我们说我想让这段代码线程安全:

- (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)

multithreading objective-c thread-safety ios

28
推荐指数
1
解决办法
8816
查看次数

如何使用CaptiveNetwork获取当前的WiFi热点名称

我需要获取当前连接的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上找到很多文档或任何示例代码示例...任何帮助将不胜感激.

iphone cocoa-touch objective-c wifi

25
推荐指数
3
解决办法
3万
查看次数

如何更改我的FFMPEG命令以使我的HTTP Live Streams更高效?

我想在使用FFMPEG创建.ts文件时减少多路复用开销.

我使用FFMPEG创建一系列用于HTTP直播传输流文件.

./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?

audio video ffmpeg transport-stream http-live-streaming

19
推荐指数
1
解决办法
2552
查看次数

Gabor特征提取

我正在做一个关于Gabor特征提取的项目.我很困惑Gabor功能的含义.我制作了一个具有不同方向和频率的特征矩阵.这是Gabor特征还是诸如统计特征,几何特征,空间域特征,不变性,可重复性等特征的计算,其在将图像与具有不同方向和频率的Gabor滤波器组卷积之后获得的图像是指Gabor特征.

pattern-recognition

17
推荐指数
1
解决办法
2万
查看次数

我应该使用多个CSS表吗?

我正在更新一个网站,以添加一些移动友好页面.

目前我们有一个大的css页面,其中包含所有内容.我的想法是将所有特定于移动设备的css放入单独的文件中,然后链接两个工作表.移动css将覆盖默认css中的任何内容(更大的按钮等).

我对css很新,最佳做法是什么?

css

16
推荐指数
3
解决办法
2万
查看次数

检查分离键盘

很多人都知道iOS 5引入了一个用于拇指键入的光滑分离键盘.不幸的是,我有一些依赖于普通全屏键盘布局的UI.我的一个视图控制器向用户显示一个文本输入表,如果他们点击一个将被键盘覆盖的textField,它会随键盘一起向上滑动.拆分键盘不需要此操作.

有没有办法在弹出之前检查哪个键盘布局正在使用?

谢谢!

keyboard cocoa-touch ipad ios ios5

15
推荐指数
3
解决办法
9827
查看次数

如何使结束`:00`的时间可以访问(例如14:00)

Voice over会NSStrings像这样读取以下内容


14:15

"十四点十五分."

这显然是一个时间


14:00

"十四."

这是模棱两可的.


如果时间14:00显示在状态栏中,则会将其正确读取为

"一万四小时"

我如何以本地化的方式实现这一目标?

iOS读出正确的时间

accessibility ios voiceover

14
推荐指数
1
解决办法
215
查看次数

打开Goog​​le地图网址时,如何默认使用步行路线?

目前我正在这样做'获取方向':

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)

有没有人知道是否有参数通过步行获取方向而不是默认驾驶?

iphone google-maps ios

13
推荐指数
1
解决办法
3817
查看次数

是否可以搜索所有xcodes日志

XCode现在可以保存以前运行的日志,这很棒.

在此输入图像描述

有没有办法搜索所有日志.

我的用例是我看到了一个特定的错误,但无法记住它在哪个运行.我需要从日志中找到错误URL.

iphone xcode ios

12
推荐指数
1
解决办法
2704
查看次数

NSCache不会驱逐数据

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)

iphone objective-c ios nscache

11
推荐指数
2
解决办法
8024
查看次数