Tag: 运行时

iOS在应用程序运行时下载代码

我的目标是在应用程序运行时下载代码(库/框架/包)。 这就像下载基于用户ACL的特定模块一样。 我已经通过创build静态库和框架,似乎我们需要他们的代码签名应用程序。 但是当用户使用应用程序并运行该代码时,我需要下载代码。 请提供一些样品

iOS – 导致无法识别的select器发送

由于代码隐私,我必须省略部分信息。 请原谅。 在TokenRequestManager.m ,有一个实例方法serialQueue4TokenType : – (dispatch_queue_t)serialQueue4TokenType:(TokenType)tokenType { static NSMutableDictionary *serialQueueDict = nil; if (serialQueueDict == nil) { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ serialQueueDict = [[NSMutableDictionary alloc] initWithCapacity:TokenTypeCount]; }); } dispatch_queue_t queue; @synchronized (self) { NSString *key = [TokenManager tokenName4Type:tokenType]; key = [key stringByAppendingString:NSStringFromClass([self class])]; NSValue *value = serialQueueDict[key]; if (value == nil) { queue […]

如何在运行时检测到框架已被加载?

我正在构build一个静态库来分发给其他人在iOS应用程序中使用,其中我想只有在我的库的用户已经包含在应用程序中的情况下才能利用框架。 我已经想出了如何编译库,使其本身不包含任何框架,但只要我尝试在应用程序中使用它,就会失败,因为库引用了不存在的框架。 我宁愿不强迫我的客户加载他们不需要的框架。 弱链接框架很酷,但这只是意味着框架不必在系统中存在(例如,对于较旧版本的iOS); 它的支持仍然编译成二进制文件。 更好的办法是不要求框架被连接,只有在链接(可选或不可以)时才使用它。 那么,有没有什么办法可以在运行时检测到iOS应用程序中包含框架,而不仅仅是在系统中是否存在?

在运行时获取类的详细信息?

在Objective-C中,有没有办法在运行时列出特定类别的类别? 使用Objective-C运行时函数,我可以获得类和实例方法,类层次结构,实例variables等的细节,但看起来不是类别信息。 看着F-Script,我发现它不显示类别信息(事实上,看起来不是根据类别显示方法)。 另一方面,类转储提取类别信息,但这是从二进制,而不是在运行时。 在objc / runtime.h中提到了struct objc_category,但是这看起来是私有的。 有支持的方式吗?

iOS 6运行时间标头方法使用其包标识符打开应用程序

我想通过使用iOS 6运行时标头方法通过其包标识符以编程方式打开应用程序。 我已经在iOS 7和iOS 8中完成了这个工作,但在iOS 6中找不到任何合适的方法。请指导我如何做到这一点。 请记住,我正在为企业应用程序实现此function。 iOS 7和8中的工作代码 if ([self checkOSVersion] >= 7) { Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace"); NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)]; BOOL result = [[workspace performSelector:@selector(openApplicationWithBundleID:) withObject:appIdentifier] boolValue]; }

Swift Objective-C运行时类的命名

我注意到Swift类在objective-c运行时被重命名。 所以,如果我有一个名为ViewController swift类,并且我执行object_getClass(self)时,我的应用程序的名称是TestRuntime ,我自己是ViewController ,我会得到这个: _TtC11TestRuntime14ViewController 。 我注意到这种模式或格式: _TtC$$AppName$$ClassName , $是一个随机数。 我不知道这些数字来自哪里。 如果有人能够阐明swift如何在运行时命名它的类,这真的会帮助我。

如何打印NSObject的所有声明属性的值?

我想重写我的对象的描述方法,以便能够打印所有我声明的属性的值。 我知道我可以通过将所有值逐个附加到对方来实现这一点,但是如果您拥有很多属性,则有时这样做会很耗时。 我想知道是否有一个简单的方法来做到这一点,从Objective-C的运行时权力获得帮助?

关于如何从所需设备中捕获“试图插入零对象”的build议

这是一个情况:霍克亚普和testing飞行时不时抱怨我 “尝试插入零对象” 在可变字典/数组中。 我知道正确的做法是一直检查零,而我做的时候才有意义。我们的testing人员无法捕捉到这些崩溃,但AppStore的用户显然可以。 我的猜测是,有时服务器返回NSNulls,当它不应该。 因此,不要在大型​​项目中插入无为零的检查,我的想法是为testing人员创build一个单独的目标,并为集合类使用方法调整。 说,我会replaceinsertObject:atIndex与我的swizzled_insertObject:atIndex ,其中如果对象实际上是零我login/显示一个描述性的报告之前,崩溃。 事情是我不能用__NSPlaceholderDictionary或__NSArrayM (只是因为我不能在私人类上做一个类别)使用__NSPlaceholderDictionary ,这让我很难过。 所以基本上我是在寻求如何捕捉这些令人讨厌的罕见碰撞的build议。 我想到的一个解决scheme是使用try-catch块,我知道它们在Objective-C中是很昂贵的,所以我不会在生产中使用它们,只是为了testing人员。 但是被#ifdef – #endif -s包围的try-catche -s包围的方法将会擦除代码的所有可读性。 所以我正在寻找一个更优雅的解决scheme。 谢谢。 更新:堆栈跟踪是不是非常不具有描述性,这是我得到的 Exception Type: SIGABRT Exception Codes: #0 at 0x3a378350 Crashed Thread: 0 Application Specific Information: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[2]' Last […]

我们如何在iOS设备上运行时处理启用/禁用背景audiofunction?

我知道如何设置我的iOS应用程序,使其使用plist在后台播放audio(=在iOS设备上使用另一个应用程序时)。 一些应用程序,如: – 布卢姆 – 一些广播播放器 提供了一个基本的UISwitch来启用或禁用此行为。 任何想法如何做到这一点?

在运行时获取供应configuration文件的到期date?

我有一个应用程序,我经常通过临时分发方法传递给testing人员。 这些testing人员中的一些人对“configuration文件”和季度到期有足够的了解,并且可以(如果我忘记了)给我一个小小的build议,重新构build一个新的版本供他们testing。 然而,有些用户似乎总是停止运行,然后喋喋不休,尽pipe他们可能会解雇iOS级别的提醒。 我的问题是我可以编程方式在运行时获取失效date,并做我自己的“应用程序内”警报或系统通知,提醒他们拉下新版本?