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对象的动态和静态构造区别的更多相关文章
- OC对象,自动释放池,OC与C语言的区别
在C语言中,编程都是面向过程的编程,每一个代码块都严格按照从上至下的顺序执行,在代码块之间同样也是这样, 但是在OC中往往不是这样,OC和C++.java等语言一样,都是面向对象的编程语言,在代码的执 ...
- C++ 类对象和 指针的区别
C++ 类对象和 指针的区别 C++ 类对象和 指针的区别 转自:http://blog.csdn.net/ym19860303/article/details/8557746 指针的情况 class ...
- 【OC底层】OC对象本质,如 isa, super-class
Objective-C的本质 1.我们编写的Objective-C,底层现实都是C/C++,代码生成步骤如下: 2.在OC中的所有面向对象的实现,都是基于C/C++的数据结构实现的 3.将Obje ...
- jQuery介绍 DOM对象和jQuery对象的转换与区别
jQuery介绍 DOM对象和jQuery对象的转换与区别 jQuery介绍 jQuery: http://jquery.com/ write less, do more. j ...
- ARC下OC对象和CF对象之间的桥接(bridge)
在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...
- IOS基础之 (四) OC对象
一 建立一个OC的类 完整的写一个函数:需要函数的声明和定义. 完整的写一个类:需要类的声明和实现. 1.类的声明 声明对象的属性和行为 #import <Foundation/Foundati ...
- OC 对象和匿名对象
OC 对象和匿名对象 对象和匿名对象的定义: 当new出一个对象时,如果用一个指针接收这个对象,那么这个指针通常被称为对象. 如果new出的对象,不用指针接收,那么这个对象就称为匿名对象. #impo ...
- iOS Foundation框架 -3.利用NSNumber和NSValue将非OC对象类型数据存放到集合
1.Foundation框架中提供了很多的集合类如:NSArray,NSMutableArray,NSSet,NSMutableSet,NSDictionary,NSMutableDictionary ...
- page,request,session,application四个域对象的使用及区别
转自:page,request,session,application四个域对象的使用及区别 1.page指当前页面.只在一个jsp页面里有效 .2.request 指从http请求到服务器处理结束, ...
随机推荐
- 使用keepalived及典型应用
通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务. eg:当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.栗子:下面来以keepaliv ...
- Oracle 与 entity framework 6 的配置,文档
官方文档: http://docs.oracle.com/cd/E56485_01/win.121/e55744/intro001.htm#ODPNT123 Oracle 对 微软 实体框架 EF6 ...
- (转)高性能网站架构之缓存篇—Redis集群搭建
看过 高性能网站架构之缓存篇--Redis安装配置和高性能网站架构之缓存篇--Redis使用配置端口转发 这两篇文章的,相信你已经对redis有一定的了解,并能够安装上,进行简单的使用了,但是在咱们的 ...
- vs2013 控制台程序exe图标
工程右击选择添加resource->Icon. 在工程目录就会生成 工程名.rc 和 XX.ico文件. 重新编译程序,就会生成有图标的exe. 对应的配置在 工程名.rc 文件里,用记事 ...
- MySQL Got fatal error 1236原因和解决方法【转】
本文来自:http://blog.itpub.net/22664653/viewspace-1714269/ 一 前言 MySQL 的主从复制作为一项高可用特性,用于将主库的数据同步到从库,在维护主 ...
- Thread.Sleep in WinRT
Thread.Sleep in WinRT static void Sleep(int ms) { new System.Threading.ManualResetEvent(false).Wa ...
- RTX闪退(打开闪退,收发文件闪退)
之前遇到RTX只要一打开就闪退的情况,覆盖重装了RTX不管用,换了一个位置安装,然后问题解决了 又遇到一个问题,收文件或发文件就闪退,覆盖重装了不管用,换了位置安装还是不管用,清理垃圾·清理注册表不管 ...
- FIX_前缀后缀_未提交
问题 B: FIX 时间限制: 1 Sec 内存限制: 64 MB提交: 38 解决: 11[提交][状态][讨论版] 题目描述 如果单词 X 由单词 Y 的前若干个字母构成,我们称 X 是 Y ...
- OKhttp基本使用介绍
MainActivity.class package com.example.administrator.okhttp3; import android.support.v7.app.AppCompa ...
- 【HTTP】Wireshark过滤规则
参考:http://jingyan.baidu.com/article/454316ab593170f7a6c03a60.html 语句特点:协议.属性 一.IP过滤: 包括来源IP或者目标IP等于某 ...