ios 修正waring:Method override for the designated initializer of the superclass '-init' not found

swift引入后,为了使oc和swift更相近,对oc的初始化方法也进行了修正,具体说明,见下面的链接,这个waring的最简单的修正方法是,到相应类的头文件中,去掉在自定义初始化方法后面的 NS_DESIGNATED_INITIALIZER宏。这样系统就不会认为我们定义了designated initializer,仅仅定义了一个convience initializer,就不会报错了!

重要的解释如下:

The designated initializer guarantees the object is fully initialised by sending an initialization message to the superclass. The implementation detail becomes important to a user of the class when they subclass it. The rules for designated initializers in detail:

  • A designated initializer must call (via super) a designated initializer of the superclass. Where NSObject is the superclass this is just [super init].
  • Any convenience initializer must call another initializer in the class - which eventually leads to a designated initializer.
  • A class with designated initializers must implement all of the designated initializers of the superclass.

详细解释:

http://stackoverflow.com/questions/26185239/ios-designated-initializers-using-ns-designated-initializer

ios 修正waring:Method override for the designated initializer of the superclass '-init' not found

时间: 2024-10-30 04:07:13

ios 修正waring:Method override for the designated initializer of the superclass '-init' not found的相关文章

iOS: 聊聊 Designated Initializer(指定初始化函数)

iOS: 聊聊 Designated Initializer(指定初始化函数) 一.iOS的对象创建和初始化 iOS 中对象创建是分两步完成: 分配内存 初始化对象的成员变量 我们最熟悉的创建NSObject对象的过程: 苹果官方有一副图片更生动的描述了这个过程: 对象的初始化是一个很重要的过程,通常在初始化的时候我们会支持成员变量的初始状态,创建关联的对象等.例如对于如下对象: 1 @interface ViewController : UIViewController 2 3 @end 4

iOS: Designated Initializer(指定初始化函数)

一.iOS的对象创建和初始化 iOS 中对象创建是分两步完成: 分配内存 初始化对象的成员变量 我们最熟悉的创建NSObject对象的过程: 苹果官方有一副图片更生动的描述了这个过程: 对象的初始化是一个很重要的过程,通常在初始化的时候我们会支持成员变量的初始状态,创建关联的对象等.例如对于如下对象: Test ViewController 上面的VC中有一个成员变量XXService,在viewWillAppear的时候发起网络请求获取数据填充VC. 大家觉得上面的代码有没有什么问题? 带着这

ios swift reduce Method

Swift’s API includes many functions and instance methods that reflect its functional programming heritage. A prime example is called reduce.  You can reduce a collection of values down to just one value, such as calculating the sum of every person’s

iOS运行时与method swizzling

C语言是静态语言,它的工作方式是通过函数调用,这样在编译时我们就已经确定程序如何运行的.而Objective-C是动态语言,它并非通过调用类的方法来执行功能,而是给对象发送消息,对象在接收到消息之后会去找匹配的方法来运行.这种做法就把C语言在编译时的工作挪到了运行时来做,可以获得额外的灵活性. 在Objective-C中有个@selector,在很多地方被翻译成"选择子".实际上,对于类的实例对象来说,类的方法是用一个数字来代表的,并非是我们看到的一个长长的带着:这个字符的一串字符串.

去除 waring Method 'CreateNew' hides virtual method of base type 'TCustomForm'

最近整理前人的代码,有好多的hint和waring, 其中整理到Method 'CreateNew' hides virtual method of base type 'TCustomForm', 搞了好一会, 记录下来. 之前这个方法没有加上 reintroduce;overload; Reintroduce: 在子孙类中要声明一个与祖先类中参数不同的方法的时候用Reintroduce,其实你不使用reintroduce也会覆盖屏蔽父类的方法的但是会产生一个警告,     使用了这个关键字,

iOS开发之 Method Swizzling 深入浅出

<p align="center"><img src ="https://raw.githubusercontent.com/DotzuX/Notes/master/logo.jpeg"/></p> iOS开发之 Method Swizzling 深入浅出 只要善用Google,网上有很多关于Method Swizzling的Demo,在这里我就不打算贴代码了,主要介绍下概念,原理,注意事项等等. 开发需求 如果产品经理突然说:&

iOS 开发:Method Swizzling

iOS 开发之Method Swizzling 前言 如果你还不知道什么是Method Swizzling,你可以看看NSHipster 的文章 ,我简单介绍一下,method swizzling 可以看成劫持了一个方法. 我们可以看看NSHipster 的文章中有以下代码: - (void)xxx_viewWillAppear:(BOOL)animated { [self xxx_viewWillAppear:animated]; NSLog(@"viewWillAppear: %@"

Designated Initializer

一个类,可能有很多初始化函数,但是有主次之分,最主要的初始函数应该对类内应当需要初始化的变量进行初始化.这个最主要的初始函数即Designated Initializer(指定初始化器),可以理解为是类的默认初始函数.比如,UIView的Designated Initializer是initWithFrame:而不是init: 原则1.类的正确初始化过程应当依次调用子类到父类的Designated Initializer.即使是用父类的Designated Initializer初始化一个子类对

C99新特性:Designated initializer

代码: #include <stdio.h> #include <stdlib.h> #define LENGTH 10 // C99新特性:Designated initializer void display(int arr[], size_t len); int main(void) { int a1[LENGTH] = { 0, 0, 5, 0, 6, 7 }; display(a1, LENGTH); int a2[LENGTH] = { [2] = 5, [4] = 6