大佬教程收集整理的这篇文章主要介绍了iphone – 使用NSUserDefaults作为全局实例变量的一个坏主意?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
NSUserDefaults *d = [NSUserDefaults standardUserDefaults]; NSString *key = [NSString StringWithFormat:kVarAllowSyncrequest,aManufacturerID]; [d setBool:NO forKey:key];
我知道这会有效,但在我的应用程序使用过程中会被称为100次 – 这是我甚至需要担心的事情吗?
有没有更好的@L_450_8@来做到这一点?
应用程序委托是一个方便的地方,用于存储应用程序中许多对象真正需要访问的信息,因为它始终可以通过[[UIApplication sharedApplication]委托]访问,但在称重该对象之前,您应该仔细考虑您的应用程序设计因为看起来很方便,所以需要很多伊娃.
据推测,只有一个对象,可能是视图控制器,负责发送这些请求.这是举旗的地方.根据您的描述,听起来您根本不需要app-global变量.该标志仅由发起请求的对象使用,因此它是唯一需要了解它的对象.国旗可以是伊瓦尔.
实际上,如果你有一个类,它可能有许多实例,每个实例都会发出一个请求,那么正确的解决方案就是拥有一个任何实例都可以访问的类级别标志.这很简单.在您的实现文件中,声明一个变量来保存标志:
// requestMaker.m #import "requestMaker.h" static BOOL allowSyncrequest = YES; @implementation requestMaker // etc.
它被声明为静态,使其仅在此“编译单元”中可见(松散地,在此文件中).
+ (BOOL) allowSyncrequest { return allowSyncrequest; } + (void) setAllowSyncrequest: (BOOL)b { allowSyncrequest = b; }
现在,每当您的一个requestMaker实例想要启动请求时,它应该检查该标志;如果是,则可以关闭标志并开始请求.您还需要确保在请求完成时重置标志.
(这一切都假设你没有明确地为你的请求工作不同的线程.如果你是,那么你应该研究GCD queues和信号量.有一套优秀的writeups by Mike Ash即使你不想使用它也会很有趣GCD).
以上是大佬教程为你收集整理的iphone – 使用NSUserDefaults作为全局实例变量的一个坏主意?全部内容,希望文章能够帮你解决iphone – 使用NSUserDefaults作为全局实例变量的一个坏主意?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。