Kir*_*rni 7 iphone xcode objective-c
是否可以释放一个类对象?
我有一个单例类"singleton.h",它有一个实例,我们可以在任何其他视图控制器中使用它的属性.
+(singleton *)sharedMethod{
static singleton *myInstance=nil;
if(myInstance ==nil){
myInstance=[[singleton alloc] init]; myInstace.str=@"hello";
}
return myInstance;
}
Run Code Online (Sandbox Code Playgroud)
我想知道的是..,有没有什么方法可以在我们的任何viewControllers中释放类对象...然后再次创建一个新的单例类的实例..,我试过这样做.., Xcode抛出一个错误"不能dealloc类对象".
单身人士的全部意义在于你永远不会解除分配.其他类可以保护指向实例的指针,因此如果你想要替换它,你会得到奇怪的行为,甚至有时会崩溃.所以你不应该这样做.
但只要你没有覆盖release和retainCount方法,它就有可能.但是,你引用的错误信息似乎暗示你已经做了一些事情[MyClass release];,当然这些事情都行不通.
顺便说一下,你似乎有singleton一个班级名称.请尽量遵守Apple使用的编码惯例,以使您和其他人的生活更轻松.类名应始终以大写字符开头,方法名应始终以小写字符开头.
宣布
\n\nstatic YOUR_CLASS *shared = nil;\nstatic dispatch_once_t oncePredicate; //very important for reinitialize.\nRun Code Online (Sandbox Code Playgroud)\n\n使用实例
\n\n+ (instancetype)shared {\n dispatch_once(&oncePredicate, ^{\n shared = [[self alloc] init];\n });\n return shared;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n重置
\n\n+ (void)reset{\n @synchronized(self) {\n shared = nil;\n oncePredicate = 0;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n你可以走了 \xe2\x88\x9a
\n| 归档时间: |
|
| 查看次数: |
6587 次 |
| 最近记录: |