详解IOS 单例的两种方式
发布时间 - 2026-01-11 03:18:13 点击率:次详解IOS 单例的两种方式

方法一:
#pragma mark -
#pragma mark sharedSingleton methods
//单例函数
static RtDataModel *sharedSingletonManager = nil;
+ (RtDataModel *)sharedManager
{
@synchronized(self) {
if (sharedSingletonManager == nil) {
sharedSingletonManager = [[self alloc] init];
}
}
return sharedSingletonManager;
}
+ (id)allocWithZone:(NSZone *)zone
{
@synchronized(self) {
if (sharedSingletonManager == nil) {
sharedSingletonManager = [super allocWithZone:zone];
return sharedSingletonManager; // assignment and return on first allocation
}
}
return nil; //on subsequent allocation attempts return nil
}
- (id)copyWithZone:(NSZone *)zone
{
return sharedSingletonManager;
}
- (id)retain
{
return sharedSingletonManager;
}
- (NSUInteger)retainCount
{
return UINT_MAX; //denotes an object that cannot be released
}
- (oneway void)release
{
//do nothing
}
- (id)autorelease
{
return sharedSingletonManager;
}
//单例函数结束
方法二:
.h文件
#import <Foundation/Foundation.h>
@interface RtTestDataModel : NSObject
{
NSMutableArray * _buyDataTArray;
NSMutableArray * _sellDataTArray;
}
+ (RtTestDataModel *)sharedManager;
- (void)addOptionBuyDataArrayModel: (NSMutableArray *)DataArray;
- (NSMutableArray *)getOptionBuyDataArrayModel;
@end
.m文件
#import "RtTestDataModel.h"
@implementation RtTestDataModel
+ (RtTestDataModel *)sharedManager
{
static RtTestDataModel *sharedManager = nil;
static dispatch_once_t predicate;
dispatch_once(&predicate,^{
sharedManager = [[RtTestDataModel alloc]init];
});
return sharedManager;
}
- (void)dealloc
{
[_buyDataTArray removeAllObjects];
[_buyDataTArray release];
[super dealloc];
}
- (id)init
{
self = [super init];
if (self != nil) {
_buyDataTArray = [[NSMutableArray alloc] initWithCapacity:8];
}
return self;
}
- (void)addOptionBuyDataArrayModel: (NSMutableArray *)DataArray{
if (DataArray != nil) {
[_buyDataTArray removeAllObjects];
[_buyDataTArray addObjectsFromArray:DataArray];
}
}
- (NSMutableArray *)getOptionBuyDataArrayModel{
return _buyDataTArray;
}
@end
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# IOS
# 单例
# 单例模式
# 单例的实现方法
# iOS单例的创建与销毁示例
# IOS Swift3 四种单例模式详解及实例
# 使用设计模式中的Singleton单例模式来开发iOS应用程序
# iOS App开发中使用设计模式中的单例模式的实例解析
# IOS 中两种单例模式的写法实例详解
# 谈一谈iOS单例模式
# iOS开发教程之单例使用问题详析
# 如有
# 两种
# 希望能
# 谢谢大家
# 疑问请
# allocWithZone
# zone
# NSZone
# id
# alloc
# init
# return
# super
# copyWithZone
# retain
# NSUInteger
# attempts
# assignment
# allocation
# subsequent
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
java ZXing生成二维码及条码实例分享
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
Bootstrap整体框架之JavaScript插件架构
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】
如何在景安服务器上快速搭建个人网站?
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
如何在香港服务器上快速搭建免备案网站?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
如何确保FTP站点访问权限与数据传输安全?
Python进程池调度策略_任务分发说明【指导】
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
如何快速搭建支持数据库操作的智能建站平台?
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
jQuery validate插件功能与用法详解
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
Laravel如何自定义分页视图?(Pagination示例)
香港服务器部署网站为何提示未备案?
Laravel如何实现事件和监听器?(Event & Listener实战)
手机软键盘弹出时影响布局的解决方法
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
微信小程序 input输入框控件详解及实例(多种示例)
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
新三国志曹操传主线渭水交兵攻略
如何在IIS服务器上快速部署高效网站?
利用JavaScript实现拖拽改变元素大小
如何快速搭建高效WAP手机网站吸引移动用户?
Laravel如何实现API速率限制?(Rate Limiting教程)
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
LinuxCD持续部署教程_自动发布与回滚机制
微信小程序 HTTPS报错整理常见问题及解决方案
Laravel如何实现一对一模型关联?(Eloquent示例)
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
如何生成腾讯云建站专用兑换码?
非常酷的网站设计制作软件,酷培ai教育官方网站?
Firefox Developer Edition开发者版本入口
Laravel如何使用Sanctum进行API认证?(SPA实战)
Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置

