iOS学习之OC语————对于自定义构造方法的认识与理解
来源:互联网 发布:新淘宝网 编辑:程序博客网 时间:2024/06/06 16:32
浅谈对于自定义构造方法的认识与理解
早先初步学习OC语言的时候,当第一次听说自定义构造方法时并没有特别的感受,只是觉得它只是叫这个名字而已,对于它后面传入的参数以及参数类型只知道要按照那个规则去编写,并不知道为什么要写后面的参数,这跟其他的函数方法确实在形式上存在很大差距。
慢慢的发现,自定义构造方法这个名字需要被仔细理解,自定义顾名思义就是程序员自己定义,构造就是如何去创建,如何实现这个方法的一个过程,这个过程是程序员自己定义的,然而这本质上是一个函数方法。程序员可以通过这个方法来实现将一个对象的属性通过自己定义的这个模式配置上去。省去了一遍一遍的属性设置的过程,其中的属性就是自定义构造方法中传递的各类参数,而且可以自己定义参数的数量和类型,非常方便。
首先举个简单的例子好了
student.h
1 #import <Foundation/Foundation.h>
2
3 @interface Student : NSObject {
4 int _age;
5 }
6 - (void)setAge:(int)age;
7 - (int)age;
8 @end
student.m
1 #import "Student.h"
2
3 @implementation Student
4 - (void)setAge:(int)age {
5 _age = age;
6 }
7 - (int)age {
8 return _age;
9 }
10 @end
在main函数中创建一个Student对象
1 #import "Student.h"
2
3 int main(int argc, const char * argv[])
4 {
5
6 @autoreleasepool {
7 Student *stu = [[Student alloc] init];
8
9 stu.age = 10;
10
11 [stu release];
12 }
13 return 0;
14 }
在第7行调用Student的alloc方法分配内存,然后再调用init方法初始化对象, 像init这样用来初始化对象的方法,我们可以称为"构造方法",默认的构造方法,也就是init方法,它是不接收任何参数的。因此,在实际开发中,为了方便,会经常自定义构造方法。接下来,自定义一个构造方法,可以传入一个age参数来初始化Student对象,这个构造方法接收一个int类型的age参数,目的是在初始化student对象时,顺便设置成员变量_age的值。之后在main函数中调用了构造方法initWithAge:,并传入10作为参数,因此Student对象的成员变量_age会变为10。
顺便谈一下description方法
description方法的默认实现是返回类名和对象的内存地址,这样的话,使用NSLog输出OC对象,意义就不是很大,因为我们并不关心对象的内存地址,比较关心的是对象内部的一些成变量的值。因此,会经常重写description方法,覆盖description方法的默认实现
比如,重写Student的description方法,返回成员变量_age的值
1 - (NSString *)description {
2 return [NSString stringWithFormat:@"age=%i", _age];
3 }
在第2行调用了NSString这个类的静态方法stringWithFormat初始化一个字符串对象,并返回这个字符串
假如_age是10,那么description方法返回的字符串就是@"age=10"
1 Student *stu = [[Student alloc] initWithAge:10];
2
3 NSLog(@"%@", stu);
4
5 [stu release];
- iOS学习之OC语————对于自定义构造方法的认识与理解
- 黑马程序员之ios学习总结——10 OC语言的构造方法和分类
- 黑马程序员——IOS基础之OC——@property、动态检测与构造方法讲解
- OC学习笔记之OC类自定义构造方法
- 黑马程序员——ios学习笔记 OC 初步认识
- iOS—对于BOOl类型的理解
- OC基础—构造方法
- Java学习之——构造方法得理解
- OC学习2——构造方法和description方法
- OC基础学习——Block语法的学习和Category与Extension的初步认识
- 黑马程序员——构造方法之init的重写和自定义构造方法
- 【IOS 开发学习总结-OC-12】★objective-c面向对象之——合成存取方法与点语法
- 黑马程序员————OC的构造方法与分类知识点总结
- 黑马程序员——入学Blog04----OC的构造方法
- OC语言——构造方法和分类的使用
- Java—构造方法的理解
- 黑马程序员——oc语言学习心得—— 自定义构造方法
- 【IOS 开发学习总结-OC-41】★★ios开发——代码控制 UI 界面与 UI 控件的自定义
- CSS margin 边界叠加知识点
- 第5周项目3—时间类(1、内联成员函数)
- Chrome浏览器打印时崩溃问题
- Android 使用SwipeBackLayout实现滑动返回上一级页面——实战来袭
- jQuery选择器
- iOS学习之OC语————对于自定义构造方法的认识与理解
- InSAR学习(三)DInSAR基本原理
- Android网络编程(二)HttpClient与HttpURLConnection
- mysql绿色版安装使用配置教程?
- [leetcode 300] Longest Increasing Subsequence
- 数据库DBO代码
- 为毛你深陷故障驱动式开发
- 一些可以使你感兴趣的c语言简单练习
- JS函数实现基本计算器计算