首页 > 系统相关 >obj c car 各类已拆分(此程序不符合内存管理规则)

obj c car 各类已拆分(此程序不符合内存管理规则)

时间:2023-02-21 16:34:31浏览次数:42  
标签:Engine index obj Tire int car engine 内存 import


xcode4.2

未了把代码看清楚,拆分

main.m:


//
// main.m
// carDemo
//
// Created by Wunderman on 12-1-3.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Engine.h"
#import "Tire.h"
#import "Car.h"

int main (int argc, const char * argv[])
{

@autoreleasepool {

// insert code here...
NSLog(@"Hello, World!");
Car *car = [[Car alloc] init];

Engine *engine = [[Engine alloc] init];
[car setEngine: engine];
int i;
for (i=0; i<4; i++) {
Tire *tire = [[Tire alloc] init];
[tire setIndex: i];
[car setTire:tire
atIndex:i];
}
[car print];
}
return 0;
}


//
// Engine.h
// carDemo
//
// Created by Wunderman on 12-1-3.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Engine : NSObject
@end


//
// Engine.m
// carDemo
//
// Created by Wunderman on 12-1-3.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import "Engine.h"

@implementation Engine
- (NSString *) description {
return (@"I am a engine. Vrooom");
}
@end


//
// Tire.h
// carDemo
//
// Created by Wunderman on 12-1-3.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Tire : NSObject {
int index;
}
- (int) index;
- (void) setIndex : (int) i;
@end


//
// Tire.m
// carDemo
//
// Created by Wunderman on 12-1-3.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import "Tire.h"

@implementation Tire
- (int) index {
return index;
};
- (void) setIndex : (int) i {
index = i;
}

- (NSString *) description {
//return (@"I am a tire. i'am in %d", index);
NSString* sFormat = [[NSString alloc] initWithFormat: @"I am a tire. i'am in %d", index];
NSString* string = [[NSString alloc] initWithString: sFormat];
return string;
}

@end


//
// Car.h
// carDemo
//
// Created by Wunderman on 12-1-3.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
@class Engine;
@class Tire;

@interface Car : NSObject {
Engine *engine;
Tire *tires[4];
}
//engine's get set
- (Engine *) engine;
- (void) setEngine : (Engine *) newEngine;

//tire's get set
- (Tire *)tireAtIndex: (int) index;
- (void) setTire: (Tire *) tire
atIndex: (int) index;

- (void) print;
@end


//
// Car.m
// carDemo
//
// Created by Wunderman on 12-1-3.
// Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import "Car.h"

@implementation Car
- (Engine *) engine {
return engine;
}

- (void) setEngine:(Engine *) newEngine {
engine = newEngine;
}

- (Tire *)tireAtIndex: (int) index {
if (index >3 || index < 0) {
NSLog(@"bad index %d", index);
exit(1);
}
return tires[index];
}

- (void) setTire: (Tire *) tire
atIndex: (int) index {
if (index >3 || index < 0) {
NSLog(@"bad index %d", index);
exit(1);
}
tires[index] = tire;
}

- (void) print {
NSLog(@"%@", engine);
NSLog(@"%@", tires[0]);
NSLog(@"%@", tires[1]);
NSLog(@"%@", tires[2]);
NSLog(@"%@", tires[3]);
}
@end


 

 

 

 

 

 

 


标签:Engine,index,obj,Tire,int,car,engine,内存,import
From: https://blog.51cto.com/u_21817/6076709

相关文章

  • jvm内存泄露分析方法
         场景:使用监控工具发现内存使用不断增加,则有可能存在内存泄露,内存泄露可以使用jmap工具进行分析。jmap命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆......
  • 来一波骚操作,Java内存模型
    文章整理自博学谷狂野架构师什么是JMM并发编程领域的关键问题线程之间的通信线程的通信是指线程之间以何种机制来交换信息。在编程中,线程之间的通信机制有两种,共享......
  • 简单理解js之ActiveX控件 new ActiveXObject
    ActiveX控件切记:ActiveX是微软的东西,故只有IE才支持!ActiveX控件,它一些可重用的软件组件或对象,通过使用ActiveX控件,可以很快地在网址、台式应用程序、以及开发工具中加入......
  • 来一波骚操作,Java内存模型
    文章整理自博学谷狂野架构师什么是JMM并发编程领域的关键问题线程之间的通信线程的通信是指线程之间以何种机制来交换信息。在编程中,线程之间的通信机制有两种,共享......
  • redis探秘:选择合适的数据结构,减少80%的内存占用,这些点你get到了吗?
    ​redis作为目前最流行的nosql缓存数据库,凭借其优异的性能、丰富的数据结构已成为大部分场景下首选的缓存工具。由于redis是一个纯内存的数据库,在存放大量数据时,内存的占用......
  • 文件监听,内存溢出了
    为什么做了文件监听功能,内存溢出了?忙于做项目,现在简单贴一些代码和分析原因。项目里面有一个配置文件,做了监听,这个是放数据的。红线部分是文件修改 这个是文件监听的......
  • 内存泄漏
    避免内存泄露的几种方式记数法:使用new或者malloc时,让该数+1,delete或free时,该数-1,程序执行完打印这个计数,如果不为0则表示存在内存泄露一定要将基类的析构函数声明为虚函......
  • 查看sap object type的类型
    1:进入到object,点击Goto下面的objectdirectory   查看到类型为SUSO  2:使用ZDEP查看改object在哪些地方使用了。  3:根据component过滤结果 ......
  • Lecture 2. Fundamental Concepts and ISA - Carnegie Mellon - Computer Architectur
     并不只有冯诺依曼模型,按照控制流顺序执行指令还有dataflow模型,按照数据流顺序执行指令  冯诺依曼模型和数据流模型的编程语言的一个对比     ......
  • 用百分比显示Windows内存使用率
    在之前的篇幅​​简单聊聊AzureVM的内存指标​​里已经提过了​,Windows并没提供内置的方式来让你直接通过百分比的形式展示内存使用率,这样对于告警的设置来说就不太灵活了......