objective-c-Objective-C 关于super的问题

问题描述

Objective-C 关于super的问题

有三个类,Question,Choice,blank,其中Question是其他两个类的父类。
在Qestion中定义下面的方法:

- (instancetype)initWithQuestionType:(NSString *)questionType
{
    NSLog(@"**class:%@",[self class]);
    if([self isMemberOfClass:[Question class]])
    {
        self = nil;
        if([questionType isEqualToString:@"choice"])
        {
            NSLog(@"--class:%@",[self class]);
            self = [[Choice alloc] initWithQuestionType:questionType];
            NSLog(@"++class:%@",[self class]);
        }
        else
        {
            self = [[Blank alloc] initWithQuestionType:questionType];
        }

        return self;
    }

    return [super init];
}

- (instancetype)init
{
    NSLog(@"Init!");

    return [self initWithQuestionType:@"unknow"];
}

执行

 Question *question = [[Question alloc] initWithQuestionType:@"choice"];

输出是:

2015-10-16 20:58:50.278 initSample[3687:161396] **class:Question
2015-10-16 20:58:50.279 initSample[3687:161396] --class:(null)
2015-10-16 20:58:50.279 initSample[3687:161396] **class:Choice
2015-10-16 20:58:50.280 initSample[3687:161396] ++class:Choice

为什么没有输出init方法中的Init!这句话?

解决方案

self = [super init]

解决方案二:

objective-c中的Super
objective-c super

时间: 2024-08-29 04:06:44

objective-c-Objective-C 关于super的问题的相关文章

asp+ 输入检查(e 文,转)

asp+ 来源 http://msdn.microsoft.com/library/default.asp?URL=/library/techart/PDC_userinput.htmIntroductionValidating user input is a common scenario in a Web-based application. For production applications, developers often end up spending a lot more ti

MVC系列(5) Http Pipeline详细分析(下)

接上面的章节,我们这篇要讲解的是Pipeline是执行的各种事件,我们知道,在自定义的HttpModule的Init方法里,我们可以添加自己的事件,比如如下代码: public class Test : IHttpModule { public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(context_BeginRequest); context.AuthenticateReques

TOP 10的编程语言 你擅长哪些?

保持领先是任何软件工程师面临的最大挑战之一.那么哪种编程语言的需求最经久不衰? 我们统计了一些在2014年仍能保持竞争力的编程语言,下面按照排名一一道来. 10.ASP.NET ASP.NET是服务器端的Web应用程序框架语言,目的是为Web开发制作设计动态网页.它是由微软开发的,该语言允许程序员构建动态的web站点,web应用程序和web服务.2002年1月首次发布的.NET Framework1.0版本,是对微软的动态网页技术(ASP)的继承和扩展.ASP.NET建立在公共语言运行时(CLR

MZhong's Resume

MATTHEW.ZHONG Male,27 Age Front-End Developer matthew.zhong@morningstar.com OBJECTIVE My objective is to build SaaS App(also Single Page App) by using advanced technologies like HTML5/CSS3/NODE/MVVM.etc SKILL Semantic HTML/XML/Emmet(zen-coding)/Markd

ios 引用计数-objective-c关于引用计数问题

问题描述 objective-c关于引用计数问题 #import @interface ViewController : UIViewController @property(nonatomic,retain)NSString *string1; @property(nonatomic,retain)NSString *string2; @end @implementation ViewController (void)viewDidLoad { [super viewDidLoad]; NSL

ios开发-小白跪求解决方案,objective c 一个出错问题,具体看问题补充

问题描述 小白跪求解决方案,objective c 一个出错问题,具体看问题补充 照着书模拟了个小软件,屏幕上两个按钮,一个edit 一个new 点击new可以创建新的便签,点击edit可以删除便签,也可以移动便签,但我无意间在移动完便签后点了new按钮,软件崩溃,,,但是在edit的时候再点击new按钮却可以接着添加新的标签....只有移随便移动标签后不可以添加标签,求大神解决如何在移动完以后能接着点new创建标签或者最起码不创建标签但别让软件崩溃... 部分代码如下: (void)table

Objective—C语言的新魅力——Nullability、泛型集合与类型延拓

Objective-C语言的新魅力 一.引言         在Xcode7中,iOS9的SDK已经全面兼容了Objective-C的一些新特性和新功能.这些功能都只作用于编译期,对程序的运行并没有影响,因此,它可以很好的向下进行兼容,无缝的衔接低版本的iOS系统,那么这些特性有什么样的用处呢,作为开发者,我保证你一定会爱上他们,如果你可以将这些新特性都应用于你的开发,你的开发效率和代码质量,相比之前,会有一个很大的提升. 二.Nullability检测的支持         在swift语言中

用Dojo Objective Harness对Web 2.0应用程序进行单元测试

单元测试是保证软件开发质量的一个重要部分,对于敏捷和极限编程开发方法尤其如此.通常,对 Web 2.0 客户端用户界面进行自动的单元测试很困难,所以很少有人去做尝试.然而,Dojo 提供了一个单元测试工具,借此可以评估 JavaScript 的功能及用户界面的可视性.经过这个工具彻底测试过的用户界面最终包含的 Bug 数量会极大的减少.本文阐述了 Dojo Objective Harness (DOH) 的主要特点并通过与其它 Web 2.0 应用程序测试工具的比较展示了其强大的功能. 单元测试

Objective C从远程url下载图片方法汇总

  本文给大家分享了2则使用Objective C从远程url下载图片的方法,都是个人项目中使用的,汇总下推荐给大家,有需要的小伙伴可以参考下. Objective C从远程url下载图片 ? 1 2 3 4 5 6 7 8 - (UIImage *) getImageFromURL: (NSString *)theURL { UIImage *theImage = NULL; NSString *imageFileName = [BT_strings getFileNameFromURL:th

iPhone objective c 截屏代码

  objective c 截屏代码 -(void)save{ UIGraphicsBeginImageContext(mybackgroundview.bounds.size); //currentView 当前的view [mybackgroundview.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();