objective-c - 创建一个 "permanent"Cocoa 对象

标签 objective-c cocoa memory-management

我有一个对象工厂,它分发一些“常量”、不可变对象(immutable对象)的实例。我希望保护这些对象免受客户端不良内存管理的影响。这就是我重写类的关键方法的方法。我是否遗漏了任何内容(代码或其他注意事项)?

- (id)retain
{
    return self;
}

- (NSUInteger)retainCount
{
    return UINT_MAX;
}

- (void)release
{
    // nothing.
}

对后来的路过问题读者的更新:这是(故意)一个特殊情况的双黑钻石 cocoa 问题。如果您尝试创建常规单例,请参阅下面有关共享实例等的答案。这个问题(以及所选答案)属于“在选择此实现策略之前,您应该确保您知道自己在做什么” .

最佳答案

听起来您正在尝试创建一个单例。这是一种非常常见的模式,并且有很多关于它的文章。这些链接应该告诉您需要了解的所有信息:

http://www.mikeash.com/pyblog/friday-qa-2009-10-02-care-and-feeding-of-singletons.html

http://boredzo.org/blog/archives/2009-06-17/doing-it-wrong

当然还有 Apple 文档 herehere .

关于objective-c - 创建一个 "permanent"Cocoa 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2831660/

相关文章:

IOS - 静态 UITableViewController 中的样式部分标题 - IOS7

ios - MpMovieplayerController 点击手势识别器在全屏时不会触发

objective-c - 如何访问 UISwipeGestureRecognizer 的 'direction' 属性?

objective-c - NSTextView,设置字符串: raising exception

C++ 在堆和堆栈上分配内存?

iphone - 如果键以 @ 符号开头,则在 NSDictionary 上使用 valueForKeyPath?

objective-c - 带有文件内容的数组 : results in crash

objective-c - 是否可以将不同的 plist 复制到应用程序包代码中?

objective-c - 保留 NSArray 中的元素

c++ - 最大 LImit of ram +swap 内存的异常处理