- (Nsstring *)pretty{ static NSDateFormatter *formatter = nil; if (formatter == nil) { formatter = [[NSDateFormatter alloc] init]; [formatter setDateStyle:NSDateFormatterLongStyle]; [formatter setTimeStyle:NSDateFormatterNoStyle]; } return [formatter stringFromDate:self];}
这是在Cocoa中处理静态变量的正确方法吗?这是泄漏(分配后没有dealloc)?做这样的事情会有更好的方法吗?谢谢!
解决方法 你正在有效地创建一个单身人士.除非它不会在您的应用程序的整个运行会话中使用,否则不要担心内存使用.即使它只是间歇性地使用,留下一个日期格式化器也不会成为问题.即就像单身一样,不要担心在应用程序终止之前释放对象.
如果要从多个线程中捣乱(并假设NSDateFormatter本身是线程安全的 – 我没有检查文档,因此,如果不验证线程安全就不编写代码),那么你想要保护初始化.
static dispatch_once_t onceMark;static NSDateFormatter *formatter = nil;dispatch_once(&onceMark,^{ formatter = [[NSDateFormatter alloc] init]; [formatter setDateStyle:NSDateFormatterLongStyle]; [formatter setTimeStyle:NSDateFormatterNoStyle];});总结
以上是内存溢出为你收集整理的iphone – 设置方法所需的静态对象的正确方法全部内容,希望文章能够帮你解决iphone – 设置方法所需的静态对象的正确方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)