OC中的构造函数
来源:互联网 发布:计算器编程 编辑:程序博客网 时间:2024/06/06 04:00
在OC中的构造函数和C++中有很大相似之处,但是也有不同,下面我们就来看看在OC中构造函数的,声明,定义和调用。
在这个地方我们通过一个例子来说明:
我们在OC中创建一个Person类:
Person.h:
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property NSString *pname;
@property int age;
@property NSString *address;
//声明构造函数,可以看到的是:构造函数有实例构造函数,和类构造函数,当然实例构造函数顾名思义就是通过创建实例类初始化对象,类构造函数是直接又类名调用。那么两者的定义有怎样的区别:,首先是知道的构造函数的返回值都是一个实例,(instancetype),实例构造函数最前面是一个 ‘-’然而类构造函数的最前面是''+",而且实例构造函数在最开始的字符都是initWith
而且With的W是必须大写的,这个是有参数的实例化对象的。
-(instancetype)initWithPname:(NSString *)pname age:(int)age andAddress:(NSString *)address;
+(instancetype)personWithPname:(NSString *)pname age:(int)age andAddress:(NSString *)address;
@end
//构造函数的定义:
#import "Person.h"
@implementation Person
-(instancetype)initWithPname:(NSString *)pname age:(int)age andAddress:(NSString *)address
{
if([super init])//对父类进行初始化
{
self.pname=pname;//调用set函数给对象进行赋值
self.age=age;
self.address=address;
}
return self;//最后的返回值是一个对象的本身。
}
+(instancetype)personWithPname:(NSString *)pname age:(int)age andAddress:(NSString *)address
{//这个是类的构造方法,在这个构造方法其实是首先为对象分配内存,然后调用方面的方法为成员变量进行赋值
return [[self alloc] initWithPname:pname age:age andAddress:address];
}
//最后是方法的调用:
#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//Person *per = [Person new];这个地方实例化一个对象,并且调用的是默认的构造函数
//Person *per = [[Person alloc] init];//这个地方的实际上也是调用默认的构造函数,上面的new其实不仅仅有分配内存空间的作用,而且还能初始化对象,所谓的初始化对象是给成员变量进行赋值,但是我们并不知到赋的是什么值,可以这样理解,创建对象的时候,对象就像没有被修理的土地一样,杂草丛生,但是当我们实例化对象就不同了,我们像给对土地清理干净了。
//Person *per = [[Person alloc] initWithPname:@"帅的不要不要的" age:18 andAddress:@"苏州"];
//这个是我们利用自己定义的构造函数来实例化对象,而且要知道的是我们利用自己创建构造函数来实例化对象的时候,是需要为首先是分配内存空间然后调用构造函数
Person *per = [Person personWithPname:@"帅的不要不要的" age:18 andAddress:@"苏州"];
//而且还要知道的是这个地方是通过类名来调用构造函数。
NSLog(@"%@",per);
}
return 0;
}
- OC中的构造函数
- OC中的构造函数
- oc构造函数笔记
- OC 构造函数
- OC 自定义构造函数
- OC构造函数详解
- OC中的构造法
- OC中的构造方法
- OC 构造函数 alloc init
- OC学习笔记,构造函数
- OC中的点语法,成员变量,@property和@synthesize:id类型,构造函数
- OC核心语法(2)构造函数
- OC初始化函数和便利构造器
- oc构造函数和@property属性
- OC属性、构造函数的基本知识
- OC基础-对象的构造函数19
- oc中的构造方法和description方法
- OC中的构造方法及一些注意
- sqlserver数据库系统性能监控步骤
- Java基础_11_网络编程
- django 自定义模板标签和过滤器
- 我也来CSDN了,纪念一下第一天
- 数据结构之链表基本操作
- OC中的构造函数
- 一篇文章精通常用 git 命令
- android 自定义控件 播放gif 既可以是从网络上获取资源 也可以是本地资源
- 在linux下使用转码器(音频转码)
- error--
- I2S 技术相关
- IAR-stm32新建一个工程
- SQLiteDatabase类——转载(http://www.cnblogs.com/tt_mc/archive/2010/03/09/1681540.html)
- Java问题定位