Objective-C 语言学习总结

本文介绍了Objective-C编程中的实用技巧,包括#import与#include的区别、类方法与实例方法的使用、成员变量的作用域、属性特点、多态的概念及其实现方式、指针变量的实际类型判断方法、类别和协议的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       当看书的时候发现什么都重要,都要记住,可是要自己静下心来写一下总结的时候,突然发现没什么好写的,一切似乎都变得容易了,我知道这是在欺骗自己的懒惰行为,过几天肯定会忘记,为了安抚一下自己,还是写一下吧。

       当我们代码写到一定量时,可能会写出很多自己认为不错的函数或者宏,如果以后在其他的项目中我们想使用这些东西,可以使用#import包进来,作用类似于C语言里面的#include,但#import更加优秀,系统自动判断重复导入的问题,而#include需要程序员手动判断。

      +代表类方法,使用类名来调用,必有一个类型为id的参数,-代表实例方法,使用对象来调用。其中self和super不能出现在类方法中,因为类方法的调用者是类本身,而不是对象,如果self和super出现在方法中,就不知道他们代表谁了。

          可以给对象赋值为nil,不可以给基本类型赋值为nil。通过把基本类型强制转换为id类型则可以。

         @private类成员只能在本类中使用

         @package成员可以在该类和该类实现的同一个映像中使用 。同一个映像指的是该类编译后生成的同一个框架或同一个执行文件。

         @protected成员可以在该类或者该类的子类中使用。

         @public成员可以在任意地方使用。

    成员的属性特点:

        assign:指定对属性简单的赋值,引用计数不加1,主要适用于基础数据类型。

       atomic(nonatomic):线程访问是否安全,是否为原子操作(某一时间,该对象只能被一个线程访问,其它线程不能访问),可以避免多线程并发破坏数据的完整性。atomic虽然可以保护数据的完整性,但会造成性能的下降,因此在大多数单线程的操作下,一般都使用的是nonatomic。

      copy:当调用setter方法给成员变量赋值时,会将赋值的对象赋值一个副本,再将该副本赋值给成员变量,防止原成员变量的赋值被修改。常适用的情况是,当前成员变量为可变类型或者其子类为可变类型,被赋值的对象有可能在赋值之后被修改,如果程序不希望该赋值影响setter方法设置的成员变量的值,此时考虑使用copy指示符。例如NSString 类(因为它的子类NSMutableString为可变类)。

      kvc键值编码:体现了动态编译时,格式为【对象 setvalue:属性值 forKey:属性名】。【对象 valueForKey:属性名】。或者是【对象 setValue:属性值 forKeyPath:属性路径(其它对象的属性值)】。

     kvo键值监听:【被监听对象 addObsever:对象(监听器) forKeyPath:监听的属性 options:被监听对象的行为 context:上下文(一般为nil).

     kvo编程的步骤:1.未被监听对象注册监听器。

                                2.从写监听器的observeValueForKeyPath:ofObject:change:context方法。

    多态:objective c的指针类型的变量有两个,一个是编译时的,一个是运行时的,如果编译时的类型和运行时的类型不一致,则就出现了多态。例如A是B的父类,多态发生的情况为A *a = [[B alloc]init]  ;可以看出 A*a说明编译时为父类类型,[[B alloc]init]运行时为子类B的类型。此时出现了多态。假如A中有方法 m,B中有方法m 、n,[ a m]此时的行为为子类B中m的行为。这就是相同类型的变量调用同一个方法时出现不同的行为特征,这就是多态。当a调用n方法时[a n] 应为父类中没有定义n方法,则此行代码就会在编译时出错。

      判断指针变量的实际类型:

                                 1.-(BOOL)isMemberOfClass:class 判断传入的对象是否为该类的实例

                                 2.-(BOOL)isKindOfClass:class 判断传入的对象是否为该类或者该类子类的实例

                                 3.-(BOOL)isSubclassOfClass:class 判断传入的对象是否为该类子类的实例

     == 和isEqual方法:==判断两个对象是否为同一个对象(两个指针类型的变量指向同一个地址),对于基础类型只要值相等就可以了。isEqual是NSObject提供的一个实例的方法,判断标准和==一样,所以用该方法来判断对象时,一般需要从写该方法,由于NSString已经从写了该方法,所以只要两个字符串包含的来那个字符序列一样,即返回真。

      类别(category):为一个类扩展方法,不需要访问原有类的源代码,动态地位现有类添加方法,而且可以类定义模块化。格式为     已有类 (类别名)。

      协议(protocol)与委托(delegate):协议制定了一种规范,实现该协议时必须实现该协议中的某些方法,格式为 @protocol 协议名 <父协议1,父协议2......>

      @optional :可以实现也可以不实现.

      @required:必须要实现的方法。

       暂时就到这里吧,随意总结的,肯定会有很多的错误,只是代表现阶段的理解。

内容概要:本文针对国内加密货币市场预测研究较少的现状,采用BP神经网络构建了CCi30指数预测模型。研究选取2018年3月1日至2019年3月26日共391天的数据作为样本,通过“试凑法”确定最优隐结点数目,建立三层BP神经网络模型对CCi30指数收盘价进行预测。论文详细介绍了数据预处理、模型构建、训练及评估过程,包括数据归一化、特征工程、模型架构设计(如输入层、隐藏层、输出层)、模型编译与训练、模型评估(如RMSE、MAE计算)以及结果可视化。研究表明,该模型在短期内能较准确地预测指数变化趋势。此外,文章还讨论了隐层节点数的优化方法及其对预测性能的影响,并提出了若干改进建议,如引入更多技术指标、优化模型架构、尝试其他时序模型等。 适合人群:对加密货币市场预测感兴趣的研究人员、投资者及具备一定编程基础的数据分析师。 使用场景及目标:①为加密货币市场投资者提供一种新的预测工具和方法;②帮助研究人员理解BP神经网络在时间序列预测中的应用;③为后续研究提供改进方向,如数据增强、模型优化、特征工程等。 其他说明:尽管该模型在短期内表现出良好的预测性能,但仍存在一定局限性,如样本量较小、未考虑外部因素影响等。因此,在实际应用中需谨慎对待模型预测结果,并结合其他分析工具共同决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值