OC中静态构造和动态构造的区别

简介:

Student.h:

#import <Foundation/Foundation.h>  @interface Student : NSObject  @property(nonatomic,retain) NSString * name;  @property(nonatomic,assign) int age;  @end

Student.m:

#import "Student.h"  @implementation Student  //动态方法,在main函数中类alloc了之后调用,但是要手动管理内存,要手动释放  -(id) initWithAge:(int)age{      if (self == [super init]) {          _age = age;      }      return self;  }     //静态构造方法,在main函数中不需要你手动管理内存释放  +(id)studentWithAge:(int)age{      Student *stu = [[[Student alloc] init] autorelease];\      stu.age = age;      return stu;  }     -(NSString *)description{      return [NSString stringWithFormat:@"name:%@ age:%i创建了",_name,_age];  }     -(void)dealloc{      NSLog(@"name:%@ age:%i被释放了",_name,_age);      [_name release];      [super dealloc];  }  @end 

  

main

 

 1 #import <Foundation/Foundation.h>  2   3 #import "Student.h"  4   5 int main(int argc, const char * argv[])  6   7 {  8   9     @autoreleasepool { 10  11         //动态方法需要手动释放内存 12  13         Student *stu1= [[Student alloc] initWithAge:10]; 14  15         stu1.name = @"dingxiaowei"; 16  17         NSLog(@"%@",stu1); 18  19         [stu1 release]; 20  21         //静态构造方法不需要你管理内存 22  23         Student *stu2 =[Student studentWithAge:20]; 24  25         stu2.name = @"wangning"; 26  27         NSLog(@"%@",stu2); 28  29     } 30  31     return 0; 32  33 } 

 

  

 

结果:

OC对象的动态和静态构造区别 - 蓬莱仙羽 - 蓬莱仙羽

 






















本文转自蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366487,如需转载请自行联系原作者


相关文章
|
8天前
|
设计模式 算法 数据安全/隐私保护
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用(二)
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用
29 0
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用(二)
|
8天前
|
存储 算法 编译器
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用(一)
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用
79 0
|
监控 Java 容器
字节码编程,Javassist篇二《定义属性以及创建方法时多种入参和出参类型的使用》
在上一篇 「Helloworld」 中,我们初步尝试使用了 Javassist字节编程的方式,来创建我们的方法体并通过反射调用运行了结果。大致了解到创建在使用字节码编程的时候基本离不开三个核心类;ClassPool、CtClass、CtMethod,它们分别管理着对象容器、类和方法。但是我们还少用一样就是字段;CtFields,在这一章节中我们不止会使用字段,还会创建多个不同入参类型和返回值的学习。
355 0
字节码编程,Javassist篇二《定义属性以及创建方法时多种入参和出参类型的使用》
|
存储 Java
Java基础数组静态和动态初始化时机
Java基础数组静态和动态初始化时机
Java基础数组静态和动态初始化时机
|
存储 算法 Java
10-对象的实例化内存布局与访问定位
10-对象的实例化内存布局与访问定位
79 0
10-对象的实例化内存布局与访问定位
|
设计模式
单子设计模式 (对创建初始对象为静态,构造函数私有,返回值为对象的创建函数,private应用)
单子设计模式 (对创建初始对象为静态,构造函数私有,返回值为对象的创建函数,private应用)
单子设计模式 (对创建初始对象为静态,构造函数私有,返回值为对象的创建函数,private应用)
C#反射与特性(四 实例化类型
C#反射与特性(四 实例化类型
247 0
C#反射与特性(四 实例化类型
【Groovy】MOP 元对象协议与元编程 ( Expando 动态类 | 创建动态类 | 为动态类增加字段和方法 )
【Groovy】MOP 元对象协议与元编程 ( Expando 动态类 | 创建动态类 | 为动态类增加字段和方法 )
156 0
【Groovy】MOP 元对象协议与元编程 ( Expando 动态类 | 创建动态类 | 为动态类增加字段和方法 )
|
Java
前面学习通过方法对代码进行改进,为什么要给方法使用静态呢?
前面学习通过方法对代码进行改进,为什么要给方法使用静态呢?   答:因为main方法是静态的,而静态方法只能访问静态的成员变量和静态的成员方法。   所以之前我们的方法是使用静态来修饰的,即静态的方法。
1070 0