美文网首页
iOS代码规范:初始化方法

iOS代码规范:初始化方法

作者: yyggzc521 | 来源:发表于2019-01-28 14:40 被阅读0次

关于更多代码规范,可以点击查看《iOS代码规范

在日常开发中,会多人同时开发一个需求。同事A提供了自定义初始化方法,但是同事B却调用了默认的初始化方法,因为同事A在自定义初始化方法中做了一些特殊操作,导致同事B使用默认初始化方法却没有达到预期的效果,然后又浪费了很多精力与同事A进行沟通查找问题

当面对多个初始化方法时,外部调用者可能不知道哪一个才是正确的初始化方法。为此苹果提供了两个关键字 NS_UNAVAILABLENS_DESIGNATED_INITIALIZER来帮助我们约束对象的初始化方法,使得接口描述更加清晰。

  • NS_DESIGNATED_INITIALIZER:用来将修饰的方法标记为指定构造器
  • NS_UNAVAILABLE:禁止使用某个初始化方法

如果希望外部调用接口的时候,传入一些基本的参数用来初始化。而不希望使用默认的初始化方法,我们可以这么做:

@interface Person : NSObject

@property (nonatomic, strong) NSString *name;

+ (instancetype)new NS_UNAVAILABLE;
- (instancetype)init NS_UNAVAILABLE;
- (instancetype)initWithName:(NSString*)name NS_DESIGNATED_INITIALIZER;
@end

@implementation Person

- (instancetype)initWithName:(NSString *)name {
    if ( self = [super init] ) {
        self.name = name;
    }
    return self;
}

@end

当创建一个Person对象的时候,如果使用NS_UNAVAILABLE修饰的[Person new]和[[Person alloc]init]方法,那么就会出现错误

// Xcode报错:'new' is unavailable
Person* person1 = [Person new];
// Xcode报错:'init' is unavailable
Person* person2 = [[Person alloc]init];
// 正确
Person* person3 = [[Person alloc]initWithName:@"XiaoMing"];

参考

相关文章

  • iOS代码规范

    关于初始化方法《iOS代码规范:初始化方法》可以看这篇文章 头文件 头文件要写详细⼀一点注释,特别是⼯工具类,要详...

  • iOS 基础编码规范整理

    iOS 基础编码规范 目录 代码格式化空格 代码组织Pragma 命名通用的约定常量方法字面量 类类名初始化属性属...

  • iOS代码规范:初始化方法

    关于更多代码规范,可以点击查看《iOS代码规范》 在日常开发中,会多人同时开发一个需求。同事A提供了自定义初始化方...

  • iOS 代码规范篇

    iOS 代码规范篇 iOS 代码规范篇

  • iOS 代码规范

    简单写了几点,参照了唐巧的类结构和Getter初始化方式。 iOS 代码规范 主题 - 注释规范 - 类结...

  • iOS Coding Style Guide 代码规范

    iOS Coding Style Guide 代码规范 iOS Coding Style Guide 代码规范

  • 乐乎-代码规范概述

    参考: 1、iOS中书写代码规范35条小建议 2、iOS开发总结之代码规范 3、iOS代码编程规范-根据项目经验汇...

  • iOS代码命名基础

    iOS 代码架构规范iOS 命名方法 代码命名基础 面向对象软件库设计中经常被忽视的一个方面是类,方法,函数,常量...

  • iOS 代码规范文档

    iOS 代码规范文档 [toc] 修订 概述 制定目的:制定iOS 编码规范,主要是为了规范公司内部的iOS 代码...

  • iOS -如何让你写的代码更规范

    iOS -如何让你写的代码更规范 iOS -如何让你写的代码更规范

网友评论

      本文标题:iOS代码规范:初始化方法

      本文链接:https://www.haomeiwen.com/subject/vesajqtx.html