Tag: macos

Xcode – 根据目标导入具有相同名称的不同头文件

我有一个多个目标的项目,每个目标都构build了一个非常相似的应用程序版本,但具有不同的图像资产和plists。 对于plists / images很好,但我使用的是具有#define头文件的ShareKit和Appirater框架。 对于每个版本,我相信需要导入不同版本的头文件,因为每个目标所生成的每个应用的configuration都不相同。 因此,目标A具有SHConfig.h,而目标B具有不同的SHConfig.h 我可以编辑这些框架的源代码来导入基于目标的不同头文件,但是当我升级框架的时候会变得混乱。 有没有更好的方法来导入基于目标的不同头文件(具有相同的名称)?

用信号量实现NSURLConnection阻塞包装器

对于我最近的项目,我偶然发现需要: 以阻塞的方式下载数据(在后台线程中启动) 而且会逐渐处理收到的数据(因为下载的数据可能很容易达到100M,所以将其全部存储在一个大的NSData *中效率不高) 因此,我需要使用一个asynchronous的NSURLConnection对象(为了能够逐步接收数据),但将其包装在一个容器中,该容器将阻止两个连续的connection:didReceiveData:之间的调用线程connection:didReceiveData:委托调用,直到connectionDidFinishLoading:或connection:didFailWithError:被调用。 我以为我会分享我的解决scheme,因为它花了我几个小时把这里和那里find的正确的代码(在StackOverflow和其他论坛)。 代码基本上在后台线程( dispatch_get_global_queue )上启动一个新的NSURLConnection ,将运行循环设置为能够接收委托调用,并使用dispatch_semaphores以“交替”方式阻止调用线程和后台线程。 dispatch_semaphores代码很好地包装在一个自定义的ProducerConsumerLock类中。 BlockingConnection.m #import "BlockingConnection.h" #import "ProducerConsumerLock.h" @interface BlockingConnection() @property (nonatomic, strong) ProducerConsumerLock* lock; @end @implementation BlockingConnection – (id)initWithURL:(NSURL*) url callback:(void(^)(NSData* data)) callback { if (self = [super init]) { self.lock = [ProducerConsumerLock new]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSURLRequest* request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10]; [NSURLConnection connectionWithRequest:request […]

什么是cocoaparsingISO8601date的正确方法?

我想parsingCocoa中的ISO8601date,iOS 4+和OSX 10.6+ 已经有一些关于StackOverflow的问题,但在我看来, 没有一个包含很好的答案。 这是我认为是一个很好的答案: 答案应该指向支持ISO8601的代码。 这个代码应该在Xcode 4下为iOS 4+和OSX 10.6+编译干净。 代码应该支持所有可能的ISO8601date格式。 请注意,这里有很多种可能性。 简单地回答NSDateFormatter一个或两个格式string不会削减它。 答案不应该是这个库 。 这是因为它充满了32位危险的假设,它比必要的复杂得多,而且不能用XCode4 / Clang编译。 底线:我不信任它! 谢谢你,同事Cocoa-ites。 我很高兴看到这里是否有真正的答案!

在VTDecompressionSessionCreate中解码H264 VideoToolkit API失败,错误-8971

我正在尝试使用硬件支持的video工具包解码器编写video解码器。 但是,如果我尝试像下面发布的例子那样初始化解码会话,那么在调用VTDecompressionSessionCreate时会出现错误-8971。 任何人都可以告诉我我在这里做错了吗? 感谢你并致以真诚的问候, 奥利弗 OSStatus status; int tmpWidth = sps.EncodedWidth(); int tmpHeight = sps.EncodedHeight(); NSLog(@"Got new Width and Height from SPS – %dx%d", tmpWidth, tmpHeight); const VTDecompressionOutputCallbackRecord callback = { ReceivedDecompressedFrame, self }; status = CMVideoFormatDescriptionCreate(NULL, kCMVideoCodecType_H264, tmpWidth, tmpHeight, NULL, &decoderFormatDescription); if (status == noErr) { // Set the pixel attributes for the destination […]

Objective – C中正常铸造vs桥式铸造

有什么不同, (CFDataRef) data & (__bridge CFDataRef) data Xcode要求我改变它以桥接。 那是因为ARC?

我失去了我的公钥。 我可以从私钥恢复吗?

我为iOS / OSX开发创build了一个密钥对+签名证书。 一路上,我丢失了与我的私钥一起使用的公钥。 也许这是因为钥匙串访问不会将私钥和公钥集合在一起,就像它与证书和私钥一样(这太恼人了!为什么它不这样做!) 在钥匙串访问中,我仍然可以右键单击私钥 – >“请求证书”; 但没有可用的公钥,我得到错误“指定的项目不能在钥匙串中find”。 我很确定公钥是可以恢复的,但是如何呢? 显然,钥匙串访问不够智能自动执行。 我终于明白了这一点,几天后我的答案就会正确无误,除非有人给答案增加新的东西。

在开发过程中使用生产CloudKit?

我的iOS和Mac应用程序已经启动到App Store,我的所有用户(包括我自己)都在使用CloudKit生产数据库。 我的问题是,有没有办法针对我的开发版本的生产环境? 似乎没有办法在Mac App Store之外定位生产环境,而对于iOS,只有Ad Hoc分发可以针对生产环境。

iOS(Iphone / iPad / iPod Touch)设备有多less内存?

不同的iPhone有不同的发布内存4GB,8GB和16GB。 触摸可以有32GB。 我的理解是这是脱机内存(磁盘一样)。 我的Cocoa应用程序中有多less实际的快速RAM? 有预先configuration的虚拟金额吗?

什么是iOS的常驻和脏内存?

有人可以告诉我,什么样的记忆是肮脏/居民,他们从哪里来? 驻留内存与Mac OS的“有线内存”是否相同? 这是我所看到的有关Mac OS内存: 有线:​​这是指内核代码等。 内存不应该被移出内存。 也知道作为常驻记忆。 共享:在两个或多个进程之间共享的内存。 这两个进程都会显示这么多的内存,所以在实际使用内存的时候有点误导。 真实:这是由task_info()报告的应用程序的“真实”内存使用情况 – 粗略统计当前进程的物理页数。 (RSIZE) 私有:这是一个进程在驻留内存中使用的单独使用的内存。 (RPRVT) 虚拟:映射到任何东西的进程中的地址空间总量 – 无论是variables或任何东西的任意大的空间 – 它都不等同于实际的虚拟机使用。 (VSIZE) 活动:当前标记为活动的内存,使用RAM。 Inactive:“不活动的内存不再被使用,并被caching到磁盘,它将一直保留在RAM中,直到另一个应用程序需要这个空间为止,如果你(或者你的计算机的一个客户端)返回这个信息,到后来“。 – Mac OS X帮助 Free:实际可用的RAM数量,不包含任何数据。

如果启用了模块tgmath.h不起作用

我看着使用tgmath.h处理与tgmath.h处理CGFloat typedef float/double乱。 这个答案对如何使用它有一个很好的描述,除了它对我没有任何作用。 不pipe怎样,我的代码仍然在调用math.h函数。 花了一些时间看看所有的项目编译器设置后,我发现禁用“模块”function( @import vs #import – iOS 7 )使这一切工作。 更具体地说,项目设置中的选项称为Apple LLVM 5.1 – Language – Modules下拉菜单中的Enable Modules(C and Objective-C) 。 要查看此问题的简单示例,请下载使用tgmath的项目( 如MBProgressHUD) ,并查看启用模块项目设置时会发生的情况。 tgmath.h调用被定期的math.h调用取代。 我的问题是: 为什么模块不能正确导入tgmath? 有没有办法避开它,并使用tgmath和模块? 我想仍然可以使用它们。