【问题标题】:iOS delegate and Singleton patterniOS 委托和单例模式
【发布时间】:2014-02-05 16:15:40
【问题描述】:

我正在开发一个 iOS 应用程序。我使用的设计模式单例和委托模式。我在 dealloc 方法中没有一个委托对象。如果用户重新打开此屏幕并设置为委托对象自身。但我看到委托对象总是为零。如何重新分配给 self 以委托对象

【问题讨论】:

  • 不可能从描述中诊断出来。请发布一些代码。
  • 您在哪里将您的委托重新分配给自己?
  • 其实我的问题委托对象没有重新分配?我想重新分配给委托对象

标签: ios singleton delegation cocoa-design-patterns


【解决方案1】:

由于您的问题不详细, 我想建议您先仔细检查您的单例代码,然后 检查您的委托是否始终以正确的方式与您的逻辑一起正确设置。
我知道这是一个过于笼统和笼统的答案,但是,它无济于事。

作为参考,下面的代码是ARC下Objective-C单例的基本结构。(对于swift版本,请查看上述答案。)

YourSingleton.h

@interface YourSingleton : NSObject

+ (YourSingleton*)sharedInstance;

@end

YourSingleton.m

#import "YourSingleton.h"

@implementation YourSingleton

#pragma mark - singleton method

+ (YourSingleton*)sharedInstance
{
    static dispatch_once_t predicate = 0;
    __strong static id sharedObject = nil;
    dispatch_once(&predicate, ^{
        sharedObject = [[self alloc] init];
    });
    return sharedObject;
}

@end

【讨论】:

    【解决方案2】:

    在你的单例类方法中使用它

    //Strict impelmentation of singleton with ARC.
    //Object is created only once in the System.
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        if(myObject==nil){
            myObject= [[myClass alloc]init];
        }
    });
    
    return sharedEffcoreObject;
    

    【讨论】:

      【解决方案3】:

      您应该更简短地提出问题。您可以在 ios here 上找到有关大多数设计模式以及如何实现它们的信息。 希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-13
        • 2017-06-14
        相关资源
        最近更新 更多