一、构造函数

在OC中凡是已init开头的函数我们都称之为构造函数,在声明构造函数的时候,不带参数的一般直接声明为“-(id)init”,带参数的一般声明为“-(id)initWith...”。

@interface Person:NSObject{
@private
int age;
NSString *name;
}
-(id)init; //不带参数的构造函数
-(id)initWithname:(NSString *)newname age:(int)newage; //带参数的构造函数 @end @implementation Person -(id)init{
self = [super init];
if(self){
name = @“xiaoming”;
age = ;
}
return self;
} -(id)initWithname:(NSString *)newname age:(int)newage{
if(self=[super init]){
age = newage;
name = newname;
}
return self;
}
int main(int argc, const char * argv[]) { Person *p1 = [[Person alloc] init]; //对象生成后调用初始化函数
Person *P2 = [[Person alloc] initWithnam:(NSString *)xiaohong age:];
//调用带参数的构造函数进行初始化
return ;
}

二、析构函数

析构函数声明为“-(void)dealloc”这个函数我们不能通过对象去人为的调用它,析构函数会在对像快要死的时候自己运行,来看代码。

 @interface Person:NSObject{
@private
int age;
NSString *name;
}
-(void)dealloc; //声明析构函数,析构函数只能有一个
@end @implementation Person //实现Person 类
-(void)dealloc{
NSLog(@"this is dealloc function");
[super dealloc];
} @end Person *xiaoming = [Person alloc];
[xiaoming release];

在代码的第六行我们声明了析构函数,并且在第11行处我们对其进行了复写,这个函数会在执行[xiaoming release];的时候运行,因为release函数就是销毁对象。

注意:有时候我们复写dealloc函数的时候加上[super dealloc];会出现错误

这是因为ARC是iOS 5推出的新功能,全称叫 ARC(Automatic ReferenceCounting)。简单地说,就是代码中自动加入了retain/release,原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。该机制在iOS 5/ Mac OS X 10.7 开始导入,利用 Xcode4.2可以使用该机制。简单地理解ARC,就是通过指定的语法,让编译器(LLVM3.0)在编译代码时,自动生成实例的引用计数管理部分代码。有一点,ARC并不是GC,它只是一种代码静态分析(StaticAnalyzer)工具。

解决办法:双击中间的工程名称,进入build setting

将中间的Objective-C Automatic Reference Counting改为no就OK了!

Object-c 构造、析构函数的更多相关文章

  1. swift -- 构造/析构函数

     一.构造函数 //当一个类实例化一个对象时候,第一个调用的方法 class Student { //属性 var name = "ser" let age : Int //1.重 ...

  2. C++中的new/delete、构造/析构函数、dynamic_cast分析

    1,new 关键字和 malloc 函数区别(自己.功能.应用): 1,new 关键字是 C++ 的一部分: 1,如果是 C++ 编译器,则肯定可以用 new 申请堆空间内存: 2,malloc 是由 ...

  3. 刨析一下C++构造析构函数能不能声明为虚函数的背后机理?

    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16631774.html 先说结论: 构造函数不能声明为虚 ...

  4. C++构造析构函数生命期及对象生命期

  5. JS的Object漫想:从现象到“本质”

    转自:http://zzy603.iteye.com/blog/973649 写的挺好,用于记录,把对象分成概念的Object(var f={})和 类的Object(function F(){}) ...

  6. C++学习笔记 构造&析构 友元 new&delete

    构造&析构函数 构造函数 定义:与类同名,可以有参可以无参,主要功能用于在类的对象创建时定义初始化的状态,无返回值,也不能用void修饰,构造函数不能被直接调用,必须通过new运算符在创建对象 ...

  7. ReentrantLock与Condition构造有界缓存队列与数据栈

    通过ReentrantLock与Condition的设计,以数组为基础,可以实现简单的队列和栈的数据结构,临界阻塞的效果. ReentrantLock相对于synchronized比较大的一个区别是有 ...

  8. JDK1.8源码(一)——java.lang.Object类

    本系列博客将对JDK1.8版本的相关类从源码层次进行介绍,JDK8的下载地址. 首先介绍JDK中所有类的基类——java.lang.Object. Object 类属于 java.lang 包,此包下 ...

  9. Effective C++ ——构造/析构/赋值运算符

    条款五:了解C++默认编写并调用那些函数 是否存在空的类? 假设定义类为class Empty{}:当C++编译器处理过后会变成如下的形式: class Empty{ Empty(){} ~Empty ...

  10. [JS] Topic - Object.create vs new

    故事背景 Ref: 你不知道的javascript之Object.create 和new区别 var Base = function () {} (1) var o1 = new Base(); (2 ...

随机推荐

  1. velocity 知识点

    velocity 教程: http://www.51gjie.com/javaweb/126 velocity 语法 语法 说明 关键字以#开头 定义数组 ['aaa','bbb'] 变量以$开头 把 ...

  2. Yarn、MapReduce、spark、storm的关系

    YARN并不是下一代 MapReduce (MRv2),下一代 MapReduce 与第一代 MapReduce (MRv1)在编程接口.数据处理引擎(MapTask和ReduceTask)是完全一样 ...

  3. yum运行时提示被锁住了解决办法

    1.当大家用linux的yum时,是不是经常会遇到下面的情况Loaded plugins: fastestmirrorExisting lock /var/run/yum.pid: another c ...

  4. 【python】class之子类

    父类: class AddrBookEntry(object): "address book entry class" def __init__(self, nm, ph): se ...

  5. linux 搭建 redis

    找了很多教程总有一个适合我 http://www.cnblogs.com/_popc/p/3684835.html 当然我的目录是/opt/redis   文章中的目录是/usr/local/redi ...

  6. BASIC-22_蓝桥杯_FJ的字符串

    示例代码: #include <stdio.h>#define N 1000000 int main(void){ int n = 0 , i = 0; char arr[N] , tmp ...

  7. 我的Quartz笔记

    代码: package com.smt.autorun; import java.io.File; import java.util.ArrayList; import java.util.Date; ...

  8. A request has been denied as a potential CSRF attack错误解决方法

    2018-05-30 13:40:50 [http-nio-8081-exec-3] [ERROR] com.opensymphony.xwork2.interceptor.ParametersInt ...

  9. 小峰mybatis(1) 处理clob,blob等。。

    一.mybatis处理CLOB.BLOB类型数据 CLOB:大文本类型:小说啊等大文本的:对应数据库类型不一致,有long等: BLOB:二进制的,图片:电影.音乐等二进制的: 在mysql中: bl ...

  10. ASP.NET Web Pages:简介

    ylbtech-.Net-ASP.NET Web Pages:简介 ASP.NET 是一个使用 HTML.CSS.JavaScript 和服务器脚本创建网页和网站的开发框架. ASP.NET 支持三种 ...