oc-28-构造函数
Dog.h
#import <Foundation/Foundation.h> @interface Dog : NSObject
{
NSString *_name;
int _age;
char *cc;
}
@end Dog.m
#import "Dog.h" @implementation Dog // 谁调用Self所在的方法,self就指向谁,self就是谁.
- (instancetype)init
{
/**
* 重写init方法是有条件的
*/
// self是谁?DogSon
if (self = [super init]) {//初始化父类的
// 子类的初始化等等其他操作,在这个花括号里面做
_age = ;
NSLog(@"Dog---%@",self);
}
return self;
} @end DogSon.h
#import "Dog.h" @interface DogSon : Dog
// 自定义构造方法
// 命名的时候:init后边接的单词,首字母必须大写.
- (instancetype)initWithName:(NSString *)name andAge:(int)age;
@end /*
1.自定义构造方法 1.自定义构造方法的规范
(1)一定是对象方法,以减号开头
(2)返回值一般是id(instancetype)类型
(3)方法名一定以initWith开头 3.自定义构造方法的使用注意
(1)自己做自己的事情
(2)父类的方法交给父类的方法来处理,子类的方法处理子类自己独有的属性
*/ DogSon.m
#import "DogSon.h" @implementation DogSon
- (instancetype)initWithName:(NSString *)name andAge:(int)age
{
// 必须调回父类的构造方法
if (self = [super init]) {
_name = name;
_age = age;
}
return self;
}
//- (instancetype)init
//{
// if (self = [super init])
// {
// _age = 10;
// }
// return self;
//}
@end main.m
//05-12 /**
new一下,就能有一个对象.
1.分配内存空间 + alloc
2.初始化. - init 构造方法:指的就是初始化方法. 需求1:创建10只狗,让这些狗在创建时,所有的年龄都是1岁.
修改构造函数可以考虑重写init方法. 初始化成员变量
OC对象初始化为nil
C语言指针初始化为:NULL
基本数据类型初始化:0 需求2:创建10只小狗,让这些狗在创建时,可以手动进行成员变量的赋值.
*/
#import <Foundation/Foundation.h>
#import "DogSon.h" int main(int argc, const char * argv[]) {
@autoreleasepool { DogSon *s = [[DogSon alloc] initWithName:@"旺财" andAge:]; }
return ;
} /**
1.构造方法 1.构造方法的调用 完整的创建一个可用的对象:Person *p=[Person new]; new方法的内部会分别调用两个方法来完成3件事情: (1)使用alloc方法来分配存储空间(返回分配的对象);
(2)使用init方法来对对象进行初始化。
(3)返回对象的首地址.
可以把new方法拆开如下: (1).调用类方法+alloc分配存储空间,返回未经初始化的对象 Person *p1=[Person alloc];
(2).调用对象方法-init进行初始化,返回对象本身Person *p2=[p1 init];
(3).以上两个过程整合为一句:Person *p=[[Person alloc] init]; 说明: (1)init方法就是构造方法,是用来初始化对象的方法,注意这是一个对象方法,以减号开头。默认初始化完毕后,所有成员变量的值都为0。
(2) alloc
向某个类发送alloc消息的结果
为该类分配内存,以存放该类的全部实例变量
还将这块内存区域全部初始化为0
注意
一个刚刚分配的对象并不能立即使用
需要先初始化该对象,然后才能使用它
但由于未进行初始化, 随后可能出现一些不可预测的行为
*/
oc-28-构造函数的更多相关文章
- OC - 28.模拟时钟
效果图 实现思路 该示例通过隐式动画实现 表盘通过显示在imageView中的一张图片来实现 在表盘上绘制(时分秒)三条直线,分别位于不同的图层,且时针位于最下层,秒针位于最上层 设置直线为圆角 直线 ...
- oc总结 --oc基础语法相关知识
m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...
- OC总结 【OC基础语法相关知识】
m是OC源文件扩展名,入口点也是main函数,第一个OC程序: #import <Foundation/Foundation.h> int main(int argc, const cha ...
- C# 多线程编程 ThreadStart ParameterizedThreadStart
原文地址:http://club.topsage.com/thread-657023-1-1.html 在实例化Thread的实例,需要提供一个委托,在实例化这个委托时所用到的参数是线程将来启动时要运 ...
- C# 通讯网关开发
C# 通讯网关开发 楼主从12年毕业大部分时间一直从事于通讯网关的开发,刚刚学那会连C#是啥都不知道,就直接入手网关开发,前前后后到现在也算是弄了5.6个通讯协议,后来看到北风之神的socket框架和 ...
- js 类
---恢复内容开始--- <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset ...
- Chapter6(函数) --C++Prime笔记
1.重载函数,也就是说一个名字可以对应几个不同的函数. 2.内置类型的未初始化局部变量将产生未定义的值. 3.局部静态对象在程序执行路径第一次进过对象定义语句时初始化,并且直到程序终止才被销毁. 内置 ...
- HashMap实现原理(JDK1.8)
概述HashMap在底层数据结构上采用了数组+链表+红黑树,通过散列映射来存储键值对数据因为在查询上使用散列码(通过键生成一个数字作为数组下标,这个数字就是hash code)所以在查询上的访问速度比 ...
- C++ primer plus读书笔记——第13章 类继承
第13章 类继承 1. 如果购买厂商的C库,除非厂商提供库函数的源代码,否则您将无法根据自己的需求,对函数进行扩展或修改.但如果是类库,只要其提供了类方法的头文件和编译后的代码,仍可以使用库中的类派生 ...
- 二叉树——Java实现
1 package struct; 2 3 interface Tree{ 4 //插入元素 5 void insert(int value); 6 //中序遍历 7 void inOrder(); ...
随机推荐
- 通过xshell 设置代理上网
前言: 前段时间,选修了一门并行计算,老师给我们每个人分配了一个linux登录账号,通过这个账号,可能登录学校的一台linux . 一次偶然的机会,了解到可以通过xshell , ssh服务器给本地开 ...
- Linux_搜文件
Linux 下搜文件, 通常先用 whereis 或 locate ,如果找不到,才以 find 搜寻!因为 whereis 与 locate 是利用数据库来搜寻数据,省时间! <<鸟哥的 ...
- Hibernate学习笔记(三)Hibernate生成表单ID主键生成策略
一. Xml方式 <id>标签必须配置在<class>标签内第一个位置.由一个字段构成主键,如果是复杂主键<composite-id>标签 被映射的类必须定义对应数 ...
- 利用BlazeDS的AMF3数据封装与Flash 进行Socket通讯
前几天看到了Adobe有个开源项目BlazeDS,里面提供了Java封装AMF3格式的方法.这个项目貌似主要是利用Flex来Remoting的,不过我们可以利用他来与Flash中的Socket通讯. ...
- 第三百四十四天 how can I 坚持
三言诗,把自己的心情,想要说的话用三句话诗意的表达出来.像: 烦===>好想睡一觉,待日落,盼天明. 愁====>待到花开花落,闲庭信步,蹋碎一世忧愁. 三句话,可以表达的很好. 老是感觉 ...
- 实现系统函数time,获取当前时间与UTC的间隔
因种种原因,最近很少上cnblogs了.刚写了一个实现time的函数,可以通过该函数获取当前时间与1970年1月1日 0时0分0秒的差值,精确到秒,可以用在某些没有时候使用time不正确而不得不调用硬 ...
- Speex for Android
http://blog.csdn.net/chenfeng0104/article/details/7088138在Android开发中,需要录音并发送到对方设备上.这时问题来了,手机常会是GPRS. ...
- putty
PUTTY详解 http://www.wifi-robots.com/thread-915-1-1.html 如何使用Putty远程(SSH)管理Linux VPS http://www.vpser. ...
- class dict
class dict(object): """ dict() -> new empty dictionary dict(mapping) -> new dic ...
- django admin site (三)
1.自定义模板设置: ModelAdmin. add_form_template Path to a custom template, used by add_view(). ModelAdmin. ...