我有以下代码用于读取唯一的设备ID。由于这将用于超过20种不同的视图(.m文件),我只是质疑自己是否有清洁和有效的方法来做到这一点?所以我想出了3个选项:
选项一:只需将这些代码复制/粘贴到我需要执行的任何地方。我认为这将是最糟糕的做法。
选项二:将其放入AppDelegate.m。这将在每次发布时运行一次(如果我是正确的话,可以节省很少的时间)。然后只要我需要就调用字符串“stringDeviceID”。
选项三:创建另一个类并将这些代码放入类函数中。但是,这仍然存在每次执行代码的“问题”。
我的问题是哪个是我必须选择的最佳/更好的选择?如果有其他选择甚至比其中任何一个更好,请告诉我。提前谢谢。
NSString *stringDeviceID;
if ([UIDevice instancesRespondToSelector:@selector(identifierForVendor)])
{
stringDeviceID = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
}
else
{
stringDeviceID = [[UIDevice currentDevice] uniqueIdentifier];
}
答案 0 :(得分:3)
我会将它作为UIDevice上的类别实现:
@iumplementation UIDevice (backwardCompatibleIdentifier)
- (NSString *)backwardCompatibleIdentifier {
// your code
}
@end
然后,您所要做的就是:
NSString *myid = [[UIDevice currentDevice] backwardCompatibleIdentifier];
我严重怀疑这20次通话的性能成本会产生任何真正的性能差异。如果你担心,请测试一下。如果 出现问题,您可以在实现中添加缓存。如果甚至调用currentDevice
太慢,你可以使它成为类方法而不是实例方法。
您的其他选择大多是合理的,除了一个:不要复制和粘贴20次。在某些时候,您将要删除uniqueIdentifier
电话(无论是因为Apple强迫您,还是因为您想要放弃iOS 5兼容性)。您可能想要添加OpenUDID或其他一些第三方库。无论你做什么,你都希望能够在一个地方改变它,而不是在19个地方改变它,然后在6个月之后调试你忘记的那个地方......