使用 allocWithZone 创建单例:

2023-11-21

BNRItemStore是一个单身人士,我很困惑为什么super allocWithZone:必须调用而不是普通的旧的super alloc。然后覆盖alloc代替allocWithZone.

#import "BNRItemStore.h"

@implementation BNRItemStore

+(BNRItemStore *)sharedStore {
    static BNRItemStore *sharedStore = nil;

    if (!sharedStore)
        sharedStore = [[super allocWithZone: nil] init];

    return sharedStore;
}

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

@end

[super alloc]将致电至allocWithZone:,您已覆盖它以执行其他操作。为了真正获得超类的实现allocWithZone:(这是你想要的)而不是覆盖版本,你必须发送allocWithZone:明确地。

The super关键字代表相同的对象self;它只是告诉方法调度机制开始在超类而不是当前类中寻找相应的方法。

Thus, [super alloc]将进入超类,并在那里获取实现,如下所示:

+ (id) alloc
{
    return [self allocWithZone:NULL];
}

Here, self仍然代表您的自定义类,因此,您的重写allocWithZone:运行,这将使您的程序进入无限循环。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 allocWithZone 创建单例: 的相关文章

  • Objective C:以编程方式创建 UIImageView

    我正在尝试制作一个 UIImageView 在单击按钮时将 png 加载到按钮的位置 brickAnim UIImageView alloc freezes during runtime brickAnim initWithFrame cu
  • UITableView 部分索引与搜索栏重叠

    您好 我想在 UITableView 中显示节索引 并在表视图标题 不是节标题 中显示搜索栏 但索引条现在与搜索栏重叠 是否有一个优雅的解决方案来避免这种情况并让索引从表头下方开始 我意识到这个答案来得很晚 但我遇到了同样的问题并在这里和其
  • 从 NSString 中删除字符?

    NSString myString A B C D E F G 我想删除空格 因此新字符串将是 ABCDEFG 你可以使用 NSString stringWithoutSpaces myString stringByReplacingOcc
  • reloadData 不调用 cellForRowAtIndexPath

    我的项目使用分割视图控制器 其中包含一个带有课程时间列表的表格视图和一个详细说明课程时间的主视图 当应用程序首次加载时 表格视图中没有任何条目 主视图显示登录屏幕 当用户登录时 表视图应该重新加载包含每个班级标题的文本 我无法正确重新加载数
  • 在 iOS 7 中使用新的格式字符串说明符配置字典(复数支持)

    我正在尝试使用 iOS 7 中对复数的更复杂本地化的新支持 我创建了一个 stringsdict 文件 根据 Foundation 发行说明 以及 Cocoa WWDC 会议中的新增功能 中的信息进行格式化 我已经验证 stringsdic
  • Objective C 到 Swift 代码的转换,似乎无法在 Swift 中正确处理字节

    我正在开发一个简单的 Swift 蓝牙心率监测器 iOS 应用程序 我发现this http www raywenderlich com 52080 introduction core bluetooth building heart ra
  • 与 AVAudioPlayer 同步播放 MPMoviePlayerController

    我正在尝试将电影添加到游戏的介绍中 这部电影没有声音 音乐 不过 我确实有背景音乐循环播放 音乐有些特殊 音乐的前奏和电影一样长 然后节奏加快了一点 我遇到的问题是 在某些设备 例如 iPod 4G 上 播放音乐太快 这基本上会破坏电影顺序
  • ObjectAL自动中断处理错误

    我一直在 SpriteKit 游戏运行时打电话 以测试中断 我正在使用 ObjectAL 文档中的示例 名为 使用 OpenAL 对象和 OALAudioTrack http kstenerud github io ObjectAL for
  • 是否可以在 iphone、ipod、ipad 和 mac 上运行 iphone 应用程序?

    我想知道是否可以在 iphone 和 mac 上运行 iphone 应用程序 如果可以的话 你们可以建议我如何完成吗 任何人的帮助将不胜感激 Xcode中有一个选项可以创建Universal应用 但是 这仅涵盖 iDevices 如果您也希
  • Segue Unwind 返回到最后一个特定的视图控制器

    有没有一种方法可以让一个按钮展开回特定的视图控制器 例如 假设我有 ViewController A 和 B 两者都模态地转至 ViewController C 现在我了解如何转回之前的视图控制器之一 正如这里所解释的 https stac
  • Objective-C 选项卡设置和空白样式

    Apple 的 Objective C 文档 参考资料和生成的代码似乎与他们的编码风格完全不一致 我无法确定 Objective C 和 Cocoa 源代码的 首选 样式 如果存在 这是我到目前为止遇到的情况 选项卡设置 Xcode 的默认
  • 子类化 UITabBarController 的替代方案

    看来 UITabBarController 不应该被子类化 您建议我如何在可旋转的 DetailView 中实现 TabBarController 谢谢你 您可以向控制器添加一个委托
  • NSPopUpButton、绑定和缩短的寿命

    我试图了解使用 NSPopUpButton 是多么困难 它无疑是 Cocoa 中最难编程的用户元素 至少就我而言是这样 我想到的用例如下 我有一个名为 Port 的类 代表串行端口 属性中有一个名称字段 在 NSPopUpButton 中
  • @Inject 和 @PostConstruct 不适用于单例模式

    我有一堂课如下 public class UserAuthenticator private static UserAuthenticator authenticator Inject private UserRepository user
  • xx 秒后恢复到之前的控制器

    我有一个非常简单的应用程序 代码很少 在我的 ViewController 中 我没有执行任何代码 我只添加了一个导航栏 其中包含一个带有视频控制器模式的下一个按钮 我想要实现的是在 ViewController 中按下下一个按钮后 允许用
  • 对于 iOS 6,如何在后台线程上加载数据然后更新 UI?

    有很多方法可以做到这一点 但 iOS 6 应用程序当前 现代 正确的方法是什么 这就是我现在正在做的事情 void viewDidLoad super viewDidLoad weak MyViewController weakSelf s
  • iOS 中tableview 的动态搜索

    I ve a tableview和我实现搜索方法的文本字段 现在 当我在其中写入一些值时textfield然后点击搜索按钮 然后在tableview 但是 我希望它是动态的 意味着我开始输入的那一刻textfield它应该开始搜索而不点击任
  • 如何在 Xcode 中找到特定函数(如 eclipse 的调用层次结构)的所有调用函数?

    我如何在 XCode 中找到特定函数的所有调用函数 例如 eclipse 的调用层次结构 自 XCode 4 4 发布以来 此功能就存在并称为 显示相关项目 有多种方法可以访问弹出菜单 使您可以查看所有呼叫者和被呼叫者等 最快的方法是 在代
  • Java:getInstance 与静态

    目的是什么getInstance 在Java中 在我的研究过程中我一直在读getInstance 有助于实现单例设计模式 根据我的理解 这意味着整个程序中只有一个实例 但我不能只使用静态吗 这不是静态的全部意义吗 如果我只有静态方法和字段
  • 如何在地图注释视图中找到 pin id?

    如何找到被点击的 pin 的 pin id 即 pin 标题和副标题的详细信息 我用它来显示引脚注释 这段代码在视图中确实加载了 resultCoordinate addObjectsFromArray sqlClass return Co

随机推荐