objective-c初始化问题

本文通过实例演示了如何使用Objective-C实现一个简单的汽车模型,包括汽车的轮胎和发动机的属性设置与获取。代码展示了如何创建类、实例化对象、设置属性,并通过方法调用来展示对象的状态。

main.m

#import <Cocoa/Cocoa.h>

#import "Car.h"

#import "Tires.h"

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

    @autoreleasepool {

        

        Car *car=[[Car alloc]init];

        NSLog(@"%@",car);

        

        Tires *t0=[[Tires alloc]init];

        Tires *t1=[[Tires alloc]initWithPressure:14.4];

        Tires *t2=[[Tires alloc]initWithTresdDegh:25.6];

        Tires *t3=[[Tires alloc]initWithPressure:12.1 andTresdDegh:25.6];

        

        [car SetTires:t0 atIndex:LeftFront];

        [car SetTires:t1 atIndex:leftBack];

        [car SetTires:t2 atIndex:rightFront];

        [car SetTires:t3 atIndex:rightBack];

        

        NSLog(@"%@",car);

        

        

        

        

    }

    return 0;

}


car.h

#import <Foundation/Foundation.h>

#import "Engine.h"

#import "Tires.h"

typedef enum//定义四个轮子的枚举

{

    LeftFront,

    leftBack,

    rightFront,

    rightBack

}TIreIndex;

@interface Car : NSObject

{

    Engine *_engine; //定义发动机的变量类型是Engine型的

    NSMutableArray *_tires;//定义轮子的可变数组 

}


-(void)SetEngine:(Engine*)engine;

-(Engine *)engine;


-(void)SetTires:(Tires*)tires atIndex:(TIreIndex)index;

-(Tires*)tiresindex:(TIreIndex)index;


@end

car.m

#import "Car.h"


@implementation Car

-(id)init

{

    if (self=[super init]) {

        _engine=[[Engine alloc]init];//init的形式初始化轮胎和发动机的变量

        _tires =[NSMutableArray array];

        for (int i=0; i<4; i++) {

            [_tires addObject:[NSNull null]];//用四个空对象占位

        }

    }

    return self;

}



-(void)SetEngine:(Engine *)engine

{

    if (_engine!=engine) {

        [_engine release];//用手动的方式进行内存管理

        _engine=[engine retain];

    }

}



-(Engine*)engine

{

    return _engine;

}



-(void)SetTires:(Tires *)tires atIndex:(TIreIndex)index

{

    if (index<LeftFront||index>rightBack) {

        NSLog(@"Invalid index:(%d) in %s",index,__func__);//做一个判断如果index小于LeftFront的枚举数1或者大于rightBack的枚举数4则输出错误

        return;

    }

    [_tires replaceObjectAtIndex:index withObject:tires];//使用replaceObjectAtIndex方法用tires对象替换可变数组_tires中处于index位置的对象

}




-(Tires*)tiresindex:(TIreIndex)index

{

    if (index<LeftFront&&index>rightBack) {

        NSLog(@"Invalid index:(%d) in %s",index,__func__);//做一个判断满足条件之后返回空

        return nil;

    }

  return [_tires objectAtIndex:index];//不满足条件的话返回可变数组中index位置的对象

}


-(NSString*)description//调用NSObject类中的description方法,

{

    

    NSString*desc=[NSString stringWithFormat:@"I am car:have a%@ \n four's tires \n %@ \n %@ \n %@  \n %@",_engine,[self tiresindex:LeftFront],_tires[leftBack],_tires[rightFront],_tires[rightBack]];

    return desc;

}


@end


Tires.h

#import <Foundation/Foundation.h>

#define kDefautPressure 13.5

#define kDefautTreadDepth 26.4

@interface Tires : NSObject

{

    float _pressure;

    float _tresdDegth;

}


-(id)initWithPressure:(float)pressure;

-(id)initWithTresdDegh:(float)tresdDegh;

-(id)initWithPressure:(float)pressure andTresdDegh:(float)tresdDegh;

-(void)setPressure:(float)pressure;

-(float)pressure;


-(void)SetTresdDegth:(float)TresdDegth;

-(float)TresdDegth;


@end


Tires.m

#import "Tires.h"


@implementation Tires

-(void)setPressure:(float)pressure

{

    _pressure=pressure;

}

-(float)pressure

{

    return _pressure;

}



-(void)SetTresdDegth:(float)TresdDegth

{

    _tresdDegth=TresdDegth;

}

-(float)TresdDegth

{

    return _tresdDegth;

}

#pragma mark-初始化方法

//遍历初始化中调用指定初始化方法 如果用户传进来对应的参数 那么我们就用这个参数 没有传参的  使用默认的参数

-(id)init

{

    return [self initWithPressure:kDefautPressure andTresdDegh:kDefautTreadDepth];

}

-(id)initWithPressure:(float)pressure

{

    return [self initWithPressure:pressure andTresdDegh:kDefautTreadDepth];

}

-(id)initWithTresdDegh:(float)tresdDegh

{

    return [self initWithPressure:kDefautPressure andTresdDegh:tresdDegh];

}

-(id)initWithPressure:(float)pressure andTresdDegh:(float)tresdDegh

{

    if (self=[super init]) {

        _pressure=pressure;

        _tresdDegth=tresdDegh;

    }

    return self;

}

-(NSString*)description

{

    NSString *desc=[NSString stringWithFormat:@"胎压:%.1f     胎纹深度:%.2f",_pressure,_tresdDegth];

    return desc;

}

@end

Engine.h

#import <Foundation/Foundation.h>


@interface Engine : NSObject


@end


Engine.m

#import "Engine.h"


@implementation Engine

-(NSString*)description

{

    return @"apple(ios)  engine";

}

@end







标题基于Python的自主学习系统后端设计与实现AI更换标题第1章引言介绍自主学习系统的研究背景、意义、现状以及本文的研究方法和创新点。1.1研究背景与意义阐述自主学习系统在教育技术领域的重要性和应用价值。1.2国内外研究现状分析国内外在自主学习系统后端技术方面的研究进展。1.3研究方法与创新点概述本文采用Python技术栈的设计方法和系统创新点。第2章相关理论与技术总结自主学习系统后端开发的相关理论和技术基础。2.1自主学习系统理论阐述自主学习系统的定义、特征和理论基础。2.2Python后端技术栈介绍DjangoFlask等Python后端框架及其适用场景。2.3数据库技术讨论关系型和非关系型数据库在系统中的应用方案。第3章系统设计与实现详细介绍自主学习系统后端的设计方案和实现过程。3.1系统架构设计提出基于微服务的系统架构设计方案。3.2核心模块设计详细说明用户管理、学习资源管理、进度跟踪等核心模块设计。3.3关键技术实现阐述个性化推荐算法、学习行为分析等关键技术的实现。第4章系统测试与评估对系统进行功能测试和性能评估。4.1测试环境与方法介绍测试环境配置和采用的测试方法。4.2功能测试结果展示各功能模块的测试结果和问题修复情况。4.3性能评估分析分析系统在高并发等场景下的性能表现。第5章结论与展望总结研究成果并提出未来改进方向。5.1研究结论概括系统设计的主要成果和技术创新。5.2未来展望指出系统局限性并提出后续优化方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值