1、iOS 单例的规范写法
做iOS 开发这么久,你确定你会使用单例?
1、来看看规范写法:
//
// NetAPIManager.m
// GCDTestDemo
//
// Created by 博爱 on 2016/11/22.
// Copyright © 2016年 DS-Team. All rights reserved.
//
#import "NetAPIManager.h"
@implementation NetAPIManager
/**
* 单例对象对外的唯一接口,用到dispatch_once在初始化时执行一次任务,且dispatch_once保证线程安全
*
*/
+ (instancetype)sharedNetAPIManager
{
NSAssert(0, @"这是一个单例对象,请使用+(NetAPIManager *)sharedInstance方法");
/*! 为单例对象创建的静态实例,置为nil,因为对象的唯一性,必须是static类型 */
static id sharedNetAPIManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedNetAPIManager = [[super allocWithZone:NULL] init];
});
return sharedNetAPIManager;
}
/**
* 重写allocWithZone方法,保证alloc或者init创建的实例不会产生新实例,因为该类覆盖了allocWithZone方法,所以只能通过其父类分配内存,即[super allocWithZone]
*
*/
+ (instancetype)allocWithZone:(struct _NSZone *)zone
{
return [self sharedNetAPIManager];
}
- (id)copy
{
NSLog(@"这是一个单例对象,copy将不起任何作用");
return self;
}
+ (id)copyWithZone:(struct _NSZone *)zone
{
return [self sharedNetAPIManager];
}
- (BOOL)ba_aaaaaaa
{
return NO;
}
@end
2、个人简介
方式 | 链接 |
---|---|
微博 | 『博爱1616』 |
博客 | 『http://boai.github.io』 |
简书 | 『简书』 |
简书专题 | 『简书专题链接』 |
137361770 |
|
iOS 10技术开发群 | 479663605 |
为解决广大小白项目中遇到的各种疑难杂症,博爱新建了QQ群 479663605
,希望广大小白和大神能够积极加入!
老司机也欢迎!
3、博爱极力推荐
序号 | 类库 | 简介及功能介绍 |
---|---|---|
3.1 | 『BAButton』 | 完全实现 UIButton 的自定义的类库。pod 导入:pod 'BAButton', '~> 1.0.1' |
3.2 | pod安装和使用方法 | 对pod还是不熟的同学,可以看下我的博客,是最新的pod安装和使用方法,一直更新! |
3.3 | 『BASegmentControl』 | 新增网易新闻的滑动SegmentControl,基于『HMSegmentedControl』的完美二次封装! |
3.4 | 『BAReminderDemo』 | 系统提醒和日历提醒,最近做了一个预约功能,有用到系统提醒和日历提醒,就写了这个demo! |
3.5 | 『BALocalNotification』 | 本地通知最新完美封装,最近整理了下本地通知和极光推送,有很多坑都踩过了,刚刚整理出来的完美封装,肯定适合大部分场合,也可以用此封装写闹钟,也提醒事件,都可以!如果喜欢,请在git上点个星吧! |
3.6 | 『BANetManager』 | 基于『AFNetworking 3.1』!最新版本的封装,集成了get/post 方法请求数据,单图/多图上传,视频上传/下载,网络监测 等多种网络请求方式! |
3.7 | 『APP中的文字和APP名字的国际化多语言处理』 | 最全、最贴心的国际化处理博客! |
3.8 | 3D Touch 的纯代码实现方法 | 详见:『BABaseProject』中的appdelegate ! |
3.9 | [『DSAlert』](https://github.com/DS-Team/DSAlert-OC](https://github.com/DS-Team/DSAlert-OC) | 目前为止,最为精简的 alert 和 actionSheet 封装!DSAlert 让你的弹框不再孤单![『DSAlert』](https://github.com/DS-Team/DSAlert-OC](https://github.com/DS-Team/DSAlert-OC)! |
3.10 | 最新、最全、最优美的友盟登录和分享的封装 | 详见:『BABaseProject』中的demo 4 ! |
3.11 | 最新、最全、最优美的 清理 APP 缓存的封装 | 详见:『BABaseProject』中的demo 2 ! |
3.12 | 最新、最全、最优美的 渐变navi 的封装 | 详见:『BABaseProject』中的tabbar 的 消息栏目 ! |
3.13 | 最新、最全、最优美的 获取所有系统设置跳转 的封装 | 详见:『BABaseProject』中的tabbar 的 消息栏目中demo 3 ! |