Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在目标c中,我们所说的单身班是什么意思?它是否类似于非原子性质?_Ios_Objective C_Mobile - Fatal编程技术网

Ios 在目标c中,我们所说的单身班是什么意思?它是否类似于非原子性质?

Ios 在目标c中,我们所说的单身班是什么意思?它是否类似于非原子性质?,ios,objective-c,mobile,Ios,Objective C,Mobile,我们能把每个非原子属性称为单态类吗 请解释非原子属性和单态类以及它们的区别和相似性。它们之间的主要相似性是都是线程安全的 查看这些链接,了解关于单例类的好想法 示例视频单音类意味着您将该类设置为globel to program。您将该类设为共享对象,这意味着不会再次分配该类。 例:- Singleton模式是在Objective C中发现的一种设计模式。什么是设计模式?设计模式是为了使应用程序更有效地工作或作为现有问题的解决方案而实现的模式。Objective C Singleton模式允许您

我们能把每个非原子属性称为单态类吗


请解释非原子属性和单态类以及它们的区别和相似性。

它们之间的主要相似性是都是线程安全的

查看这些链接,了解关于单例类的好想法


示例视频

单音类意味着您将该类设置为globel to program。您将该类设为共享对象,这意味着不会再次分配该类。 例:-


Singleton模式是在Objective C中发现的一种设计模式。什么是设计模式?设计模式是为了使应用程序更有效地工作或作为现有问题的解决方案而实现的模式。Objective C Singleton模式允许您对给定类只强制一个实例。可以通过全局访问点全局访问此类。首次访问该类时,将创建该类的新实例。例如,如果您正在构建一个应用程序并声明一个单例类,那么应用程序中的所有元素都可以访问该类的同一个实例。永远不会创建该类的新实例。这有助于节省系统内存和空间。它还可以防止冗余代码

它与非原子性质不同

参见示例

Singalton.h文件

#import <Foundation/Foundation.h>

@interface GlobleDirector : NSObject
+(GlobleDirector*)shareManager;
@end   
上图显示了一个Logger类,该类具有单个属性(即单个实例)和两个方法:sharedInstance和init。 客户机第一次发送sharedInstance消息时,属性实例尚未初始化,因此您将创建该类的新实例并返回对它的引用。 下次调用sharedInstance时,将立即返回实例,而不进行任何初始化。这个逻辑保证在任何时候都只存在一个实例,我们使用的方法称为Singleton方法

在类中添加单例方法不会使类成为单例。可以说您在类中实现了一个单例方法。如果您想创建一个单例类,您需要重写所有的init函数,以确保我们只能创建该类的单个实例。然后,我们只能说它是一个单例类,或者通常我们说严格的单例类

例如:

+ (instancetype)singleton {
    static id singletonInstance = nil;
    if (!singletonInstance) {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            singletonInstance = [[super allocWithZone:NULL] init];
        });
    }
    return singletonInstance;
}

+ (id)allocWithZone:(NSZone *)zone {
    return [self singleton];
}

- (id)copyWithZone:(NSZone *)zone {
    return self;
}

Singleton并不意味着类在您的程序中是全局的,它是在整个程序中保持类的单个实例的一种模式。

您浏览过web吗?有很多教程、博客等可以帮助你。提问前请仔细搜索。有人能建议如何导入此问题吗。我有一个问题,因为这个禁令。请帮忙。
#import "GlobleDirector.h"

@implementation GlobleDirector


+(GlobleDirector*)shareManager{

static GlobleDirector *sharedInstance=nil;
static dispatch_once_t  oncePredecate;

dispatch_once(&oncePredecate,^{
sharedInstance=[[GlobleDirector alloc] init];

});
return sharedInstance;
}



@end
+ (instancetype)singleton {
    static id singletonInstance = nil;
    if (!singletonInstance) {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            singletonInstance = [[super allocWithZone:NULL] init];
        });
    }
    return singletonInstance;
}

+ (id)allocWithZone:(NSZone *)zone {
    return [self singleton];
}

- (id)copyWithZone:(NSZone *)zone {
    return self;
}