0
A
回答
3
他们肯定能!在.m文件的实现块外声明静态变量。我在创建单身人士时一直这样做。
--- MySingleton.h ---
@interface MySingleton : NSObject
...
@end
--- MySingleton.m ---
#include "MySingleton.h"
static MySingleton *sharedSingleton = nil
@implementation
...
@end
1
添加到答案,你已经有 - 是的,你可以。
可以通过将静态变量放在实现块之外来让静态变量对类的所有对象都可见。
通过在方法中声明静态变量,可以使静态变量仅在类的所有对象的方法中可见。如果你想看到这样的一个例子,看看由Xcode中生成的表数据源的方法tableView:cellForRowAtIndexPath:
顶部的样板通常有类似的声明:
static NSString *cellIdentifier = @"cellIdentifier";
这是一个静态方法,但它只能在该方法中用于该类的其他对象。这给你两件事。首先 - 为一个固定项目提供单个商店的内存使用效率稍高一些。其次 - 封装是通过只有在使用该变量的方法中可见的便利变量来维护的。
1
除了Eytan的回答:实例化sharedSingleton
的好地方是类初始化方法。这会在您的课程在运行时发送第一条消息(例如alloc
)之前被调用一次。
例如:
static MySingleton *sharedSingleton = nil;
@implementation YourClass
+(void) initialize // Note the plus sign!
{
if (!sharedSingleton)
shardSingleton = [[MySingleton alloc] init];
}
// etc.
@end
相关问题
- 1. 在ngShow中可以包含Class吗?
- 2. ObjectiveC中的静态变量
- 3. 在共享对象中包含静态库?
- 4. iOS静态库 - 是否可以在我的库中包含AdSupport.framework?
- 5. 我可以在我的Liferay Portlet中包含静态资源吗?
- 6. 可可触摸静态库是否可以包含另一个静态库?
- 7. 在Pypi包中包含静态文件
- 8. 你可以包含一个静态库(.a)在另一个静态库与AR?
- 9. 包含静态和动态数据的多对象JSON
- 10. 包含多态对象的向量:静态断言错误
- 11. Can Guice可以注入Scala对象
- 12. 在C++中,静态对象是否可以超出其静态成员变量?
- 13. 从包含类对象的静态最终对象[]中获取字符串值
- 14. 是否有可能在Shared Preference中存储Class的静态对象?
- 15. 可以在java中声明静态对象吗?
- 16. 匿名对象可以在C++中声明为静态吗?
- 17. 如何在DBIx :: Class中创建包含相关对象的行对象?
- 18. Realm中的对象可以在查询中返回其包含的对象吗?
- 19. 在静态库中包含STL
- 20. 在setup.py中包含静态数据(setuptools)
- 21. 在Xcode中包含多个静态库
- 22. 包含对象实例的静态方法,是否错误?
- 23. 在JSON对象中包含多个键是否可以接受
- 24. 我可以在服务对象中包含辅助方法吗?
- 25. 数据传输对象类可以包含其他对象吗?
- 26. 可以映射包含类对象或类对象吗?
- 27. '静态' 对象
- 28. 静态对象
- 29. 静态类是否可以包含实例初始化块?
- 30. 哪个UI组件可以包含静态html文件?