关于Object-c 中的构造函数与析构函数
来源:互联网 发布:秋冬搭配 知乎 编辑:程序博客网 时间:2024/04/29 02:25
今天主要记录一下我所学习的oc中的构造函数与析构函数,废话不多说了,就直接进入正题吧。
首先,oc由于是扩展的C语言,又融合了面向对象的思想,让我觉得这很像c++,但是跟c++又有所区别,我们看如下代码:
Person.m
//// Person.m// Lesson4//// Created by Lee on 7/8/15.// Copyright (c) 2015 Lee. All rights reserved.//#import "Person.h"@implementation Person-(id) init{ self = [super init]; if (self) { name = @"小李"; age = 21; ID = 20120101; number = 123; } return self;}-(id) init:(NSString*)newName andAge:(int)newAge andID:(int)newID andNumber:(int)newNumber{ self = [super init]; if(self){ name = newName; age = newAge; ID = newID; number = newNumber; } return self;}-(void) printInfo{ NSLog(@"name is %@,age is %d,ID is %d,number is %d",name,age,ID,number);}-(void) dealloc{ NSLog(@"析构函数在此调用");}-(void) setID:(int)newID{ ID = newID;}-(void) setName:(NSString*)newName{ name = newName;}-(void) setNumber:(int)newNumber{ number = newNumber;}-(void) setAge:(int)newAge{ age = newAge;}-(NSString*) getName{ return name;}-(int) getAge{ return age;}-(int) getID{ return ID;}-(int) getNumber{ return number;}+(int) getMaxAge{ return 150;}+(int) getEmergencyNumber{ return 110;}@end
首先我们定义了一个Person类,在类中我们定义了一系列的成员变量。为了保证类的封装性,特意写了一些必要的方法来操作他们,这里我们主要看initXXX开头的方法,这里的方法实际上就是oc中的构造函数,oc中定义一个构造函数形式如下:
//声明如下-(id)init; //构造函数名为init-(id)init:(形参类别1)形参1 标签2:(形参类别2)形参2 ...; //构造函数名为 init标签2标签3...//定义如下-(id)init{ self = [super init]; if(self){ //写待初始化的代码 }}
oc中析构函数是系统自动调用的,不能直接去调用,否则将会出现错误。析构函数如下:
-(void) dealloc{ NSLog(@"析构函数在此调用");}
主函数如下:
main.m
//// main.m// Lesson4// this demo is about the self and super.// Created by Lee on 7/8/15.// Copyright (c) 2015 Lee. All rights reserved.//#import <Foundation/Foundation.h>#import"Person.h"int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!"); Person *person = [Person alloc]; if ([person init]) { [person printInfo]; } } return 0;}
头文件 Person.h
//// Person.h// Lesson4//// Created by Lee on 7/8/15.// Copyright (c) 2015 Lee. All rights reserved.//#import <Foundation/Foundation.h>@interface Person : NSObject{@private NSString *name;@private int age;@private int ID;@private int number;}-(id) init;-(id) init:(NSString*)newName andAge:(int)newAge andID:(int)newID andNumber:(int)newNumber;-(void) setID:(int)newID;-(void) setName:(NSString*)newName;-(void) setNumber:(int)newNumber;-(void) setAge:(int)newAge;-(NSString*) getName;-(int) getAge;-(int) getID;-(int) getNumber;-(void) printInfo;+(int) getMaxAge;+(int) getEmergencyNumber;@end
运行结果如下:
0 0
- 关于Object-c 中的构造函数与析构函数
- object-c 构造函数
- Object-C 的构造函数析构函数
- c++-构造函数与析构函数
- C++--构造函数与析构函数
- 【c++】构造函数与析构函数
- C++:构造函数与析构函数
- 关于c++默认的构造函数、析构函数、拷贝构造函数、move函数
- 关于C++构造与析构函数
- C++:关于构造函数
- 【C++】初始化与清除(构造函数与析构函数)
- 关于C++中的构造函数、拷贝构造函数、析构函数的总结
- 关于构造函数与析构函数几点Tips
- 关于链表类的拷贝构造函数与析构函数
- 派生类中的构造函数与析构函数
- c++中的构造函数与析构函数
- c++继承中的构造函数与析构函数
- C++多态中的构造函数与析构函数
- 黑马程序员——JAVA笔记——集合框架5——Collections、Arrays
- 【Python】局域网ping扫描在线主机
- Ubuntu分辨率太小的解决方案
- Libghttp库使用指南
- 原码,、反码、补码的计算
- 关于Object-c 中的构造函数与析构函数
- Python将一个大文件按段落分隔为多个小文件的简单方法
- JavaIO总结(一)
- 数据取对数运算的意义
- Python chardet 字符编码判断
- 算法的时间复杂度和空间复杂度
- asp:UpdatePanel客户端回传事件管理
- 【持久层】JDBC详解之基本操作
- c语言中的指针