OC小实例关于init方法不小心的错误

正视遇到的每一个错误

在一个遥控器类操控小车玩具的小实例项目中,我采用组合的方式,将遥控器拥有小汽车对象(has a)关系,而不是继承(is a)关系。

想法:将创建小汽车的实例化过程写在遥控器的初始化方法中

Controller.m :

1 - (instancetype)initWith
2 {
3 self = [super init];
4 if (self) {
5 NSLog(@"遥控器初始化创建了");
6 _car = [[Car alloc] init];
7  }
8 return self;
9 }


注意:这里的init方法,我不小心写成了initWith方法。本来意图是自定义初始化方法传入参数......忘记改回init。

然后创建Controller对象的时候,使用[[Controller alloc] init]。结果调用的是父类(Controller extends NSObject)的init方法,所以断点查错查不到,到了某个方法就自动跳出结束了。

正确只要把那个写错的 initWith 改回成 init 方法就可以了。

时间: 2024-12-29 17:31:23

OC小实例关于init方法不小心的错误的相关文章

python3 类的属性、方法、封装、继承及小实例

Python 类 Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用基类中的同名方法. 对象可以包含任意数量和类型的数据. python类与c++类相似,提供了类的封装,继承.多继承,构造函数.析构函数. 在python3中,所有类最顶层父类都是object类,与java类似,如果定义类的时候没有写出父类,则object类就是其直接父类.  类定义 类定义语法格式如下: class ClassName:    <state

OC 自动生成分类属性方法

分类属性方法自动生成编码全过程. 背景 分类,在 iOS 开发中,是常常需要用到的.在分类里添加属性也是常有的事,但分类中无法添加实例变量,编译器也无法为提供分类中属性的 getter 和 setter 方法了.一般而言,需要手动来实现这两个方法,如果只是用来存储变量的话,关联对象很容易做到这一点: @interface NSObject (db_sqlite) @property (nonatomic, assign) int db_rowid; @end @implementation NS

Javascript实例教程:DOM方法创建和修改表格

文章简介:Javascript实例教程:DOM方法创建和修改表格. <table>元素是HTML中最复杂的结构之一.要想创建表格,一般都必须涉及表示表格行.单元格.表头等方面的标签.由于涉及的标签多,因而使用核心DOM方法创建和修改表格往往都免不了要编写大量的代码.假设我们要使用DOM来创建下面的HTML表格: <table border="1" width="100%"> <tbody> <tr> <td>

SharePoint中如何利用HttpModule的Init方法实现全局初始化

我们知道,HttpRuntime中会对每一个Request创建一个HttpApplication对象(HttpApplicationFactory从一个HttpApplication池来拿).对于Global.asax,当创建第一个HttpApplication对象才会执行的Application_Start方法. 然后每一个HttpApplication对象会创建HttpModule对象,然后只执行一次Init方法.但在实际场景中,HttpRuntime会根据请求次数创建多个HttpAppli

IHttpModule.Init方法被执行多次的原因

发现不少朋友跟我一样,错把IHttpModule.Init拿来当做Application_Start的替代品,在其中做一些应用程序初始化的操作. 但其实IHttpModule.Init和Global.asax中的Application_Start事件性质是不同的,不能直接拿IHttpModule.Init来代替Application_Start做ASP.NET应用程序的初始化过程.也不能简单的拿Init方法被重复调用来断定是ASP.NET程序发生了重启. 原因是IHttpModule.Init在

用Python程序抓取网页的HTML信息的一个小实例

  这篇文章主要介绍了用Python程序抓取网页的HTML信息的一个小实例,用到的方法同时也是用Python编写爬虫的基础,需要的朋友可以参考下 抓取网页数据的思路有好多种,一般有:直接代码请求http.模拟浏览器请求数据(通常需要登录验证).控制浏览器实现数据抓取等.这篇不考虑复杂情况,放一个读取简单网页数据的小例子: 目标数据 将ittf网站上这个页面上所有这些选手的超链接保存下来. 数据请求 真的很喜欢符合人类思维的库,比如requests,如果是要直接拿网页文本,一句话搞定: ? 1 d

Android中new Notification创建实例的最佳方法_Android

目前 Android 已经不推荐使用下列方式创建 Notification实例: Notification notification = new Notification(R.drawable.ic_launcher,"This is ticker text",System.currentTimeMillis()); 最好采用下列方式: Notification notification = new Notification.Builder(this) .setContentTitle

《Android 开发入门与实战(第二版)》——6.9节Activity小实例

6.9 Activity小实例 Android 开发入门与实战(第二版) 在介绍完Activity相关基础内容后,现在我们来针对Activity开发一个简单的小实例. 这个实例指定了3个界面(Activity).HelloWorldActivity界面有两个按钮,Button 1和Button 2(见图6-3),Button 1单击后会跳转到Activity B,而Activity B简单地显示"This is Activity B,Welcome!"(见图6-4).单击Button

Objective-C之代理设计模式小实例

代理设计模式小实例 协议的应用场景之一:代理模式 需求: 用代理实现学生找房子, 不具备找房子的能力 所以学生可以找另一个对象来帮它找房子, 那么另一个对象就是学生的代理 UML类图: 类图关系分析: + 两个对象:Student(学生用户),LinkHouse(代理者) + LinkHouse是属于Student的代理,所以这里是(has a)拥有的组合关系 + 所以:LinkHouse对象可以作为Student类里的一个对象数据类型的属性 + 另外:因为不确定代理的具体类型,用id万能数据类