【Objective-C学习-2】OC类

本文探讨了Objective-C与Swift两种编程语言在iOS开发领域的应用与区别,包括其优势、特性和最佳实践,旨在帮助开发者选择合适的语言进行项目开发。

一、类的声明 //Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject {
    /*成员变量声明在类的内部
     *成员变量默认可访问属性为 @Protected
     *OC中自定义的类或系统类对象都必须是一个指针
     */
    NSString *_name;
    NSString *_no;
    int _age;
}

//+ 表示静态方法
+ (id)personWithName:(NSString *)name;

//- 表示动态方法
- (id)initWithName:(NSString *)name;

//get方法
- (NSString *)name;

//set方法,方法名是 setName:
- (void)setName:(NSString *)name;

- (NSString *)no;
- (void)setNo:(NSString *)no;

//方法名是 setName:andNo:
- (void)setName:(NSString *)name andNo:(NSString *)no;

- (int)age;
- (void)setAge:(int)age;

@end


二、类的实现 //Person.m

#import "Person.h"

@implementation Person

+ (id)personWithName:(NSString *)name {
    return [[[self alloc] initWithName:name] autorelease]; //通过静态方法创建的对象,应该自动释放
}

- (id)init {
    return [self initWithName:nil];
}

- (id)initWithName:(NSString *)name {
    if (self = [super init]) {
        _name = [name copy];
    }
    return self;
}

- (void)dealloc {
    [super dealloc];
    NSLog(@"Person dealloc");
}

- (NSString *)name {
    return _name;
}

- (void)setName:(NSString *)name {
    _name = [name copy];
}

- (NSString *)no {
    return _no;
}

- (void)setNo:(NSString *)no {
    _no = [no copy];
}

- (void)setName:(NSString *)name andNo:(NSString *)no {
    _name = [name copy];
    _no = [no copy];
}

- (int)age {
    return _age;
}

- (void)setAge:(int)age {
    _age = age;
}

//重写父类的description方法
//当使用%@打印一个对象的时候调用
- (NSString *)description {
    NSString *str = [NSString stringWithFormat:@"My name is %@, my identify card's number is %@, and I am %d years old.", 
                     _name, _no, _age];
    return str;
}

@end


三、类的使用 //main.m

#import <Foundation/Foundation.h>
#import "Person.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        Person *person = [Person personWithName:@"dave"]; //调用静态方法创建对象
        [person setNo:@"110001"];
        [person setAge:25];
    
        NSLog(@"My name is %@, my identify card's number is %@, and I am %d years old.",
              [person name], [person no], [person age]);
        
        Person *person2 = [[[Person alloc] init] autorelease]; //创建的时候指定autorelease,
                                                               //离开autoreleasepool的时候会自动释放
        [person2 setName:@"john" andNo:@"110002"];
        person2.age = 25; //OC点语法,等效于 [person2 setAge:25]
        
        int age = person2.age; //OC点语法,等效于 [person age]
        NSLog(@"My name is %@, my identify card's number is %@, and I am %d years old.",
              person2.name, person2.no, age);
        
        NSLog(@"%@", person2);
    }
    return 0;
}


【轴承故障诊断】加权多尺度字典学习模型(WMSDL)及其在轴承故障诊断上的应用(Matlab代码实现)内容概要:本文介绍了加权多尺度字典学习模型(WMSDL)在轴承故障诊断中的应用,并提供了基于Matlab的代码实现。该模型结合多尺度分析与字典学习技术,能够有效提取轴承振动信号中的故障特征,提升故障识别精度。文档重点阐述了WMSDL模型的理论基础、算法流程及其在实际故障诊断中的实施步骤,展示了其相较于传统方法在特征表达能力和诊断准确性方面的优势。同时,文中还提及该资源属于一个涵盖多个科研方向的技术合集,包括智能优化算法、机器学习、信号处理、电力系统等多个领域的Matlab仿真案例。; 适合人群:具备一定信号处理和机器学习基础,从事机械故障诊断、工业自动化、智能制造等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①学习并掌握加权多尺度字典学习模型的基本原理与实现方法;②将其应用于旋转机械的轴承故障特征提取与智能诊断;③结合实际工程数据复现算法,提升故障诊断系统的准确性和鲁棒性。; 阅读建议:建议读者结合提供的Matlab代码进行实践操作,重点关注字典学习的训练过程与多尺度分解的实现细节,同时可参考文中提到的其他相关技术(如VMD、CNN、BILSTM等)进行对比实验与算法优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值