再探Objective-C.5

本文深入讲解Objective-C的基础知识,包括NSLog使用技巧、面向对象思想、类的定义及实现、对象创建方法等内容,并探讨了面向对象的三大特征及其在实际编程中的应用。

OC基础总结

 1.NSLog的使用:Foundation用于日志输出的函数

   %@  输出对象的占位符,当它输出的对象的时候会调用对象description方法

   %C  Unicode字符

   %c  ASCII

 2.面向对象思想

   1、相对于面向过程

   面向过程:强调的步骤,以动词打头的

   面向对象:强调完成这个事情,所需的对象

   2、面向对象的好处

      1、这种思维方式更加接近现实生活

      2、提高代码灵活性,和可扩展性

      3、提高代码的可维护性

   对象:

     在软件设计阶段:对象就是现实生活中一个个事物

     类的产出: 类就是提取对象共性

              1、这些对象共有的状态特征-》属性

              2、这些对象的行为特征 - 方法

              3、确定类与类之间关系

    编码角度:必须有类才能创建对象

             类是汽车图纸

             对象一个个的汽车实体

   类的设计:

     类就是提取对象共性

     1、这些对象共有的状态特征-》属性

     2、这些对象的行为特征 - 方法

   一个包含三个要素

   1、类名:就是这一类事物的名称

   2、属性:这些对象共有的状态特征

   3、方法:这些对象的行为特征

 

   一个软件的开发:

   产品经理

       需求分析:这个软件需要做什么,不需要做什么

       软件设计:设计出来这个软件中包含哪些类

   项目经理

       分配任务,监督程序员,处理程序员开发中遇到问题

       编码:编码

 

 3.类的定义:

     一类包含两个部分 @interface @end 之间

     类的声明

        0、确定父类:在类名称后通过 来指定自己的父类

        1、声明属性

        2、声明方法

     类的实现:实现声明中方法 @implementation @end 之间

     3.1 定义的格式

         3.2 属性(成员变量)

            @interface @end 之间 大括号中

         3.2.1 成员变量权限控制修饰符

            @private :私有的,只能在本类中访问

            @protected 受保护的(默认),只能在本类和子类中访问

            @public :公共的,可以所有的类中访问

           

            @package:框架中,在框架内部相应与@protected在框架外部,相当于@private(了解)

         3.2.2 属性封装

               封装属性的方法就是为每一个属性提供settergetter方法

               setter方法:

               1、必须是对象方法

               2、必须没有返回值

               3、必须set + 成员名称去掉_首字母大写

               4、必须要一个参数,并且参数类与成员变量的类型一致

               getter方法

                1、必须是对象方法

                2、返回值类必须与成员变量的类型一致

                3、名称必须是成员变量的名称去掉_

                4、必须是空参

         3.2.3 @property

               @property 自动生成setter getter方法的声明和实现,还会生成一个私有成员变量

               格式:@property (是否是原子属性,权限属性类型 属性名称;

               是否是原子属性

                   atomic:原子,默认,在setter方法会给属性加锁

                nonatomic:非原子,不会在setter方法给属性加锁,它的访问速度快

               权限

                  readwrite:可读可写(默认),生成getter getter方法

                  readonly :只读,只生成getter方法

              如何自定义setter方法

              我们自己写一个setter方法,@property会帮我生成getter方法和私有成员变量

              如何自定义getter方法

              我们自己写一个getter方法,@property会帮我生成setter方法和私有成员变量

 

              如果我们自定义了getter setter方法,@property不会帮我们私有成员变量,需要自己写

         3.2.4 点语法

               点语法就是setter getter方法调用的简写形式

               如果.在等号的左边表示调用setter方法

               如果.在等号的右边或没有等号表示调用getter方法

     3.3 方法

         3.3.1 对象方法

             1、在声明和定义时候以-开头

             2、对象方法是隶属于对象的,只能对象调用

             3、对象方法中可以直接访问成员变量

             4、对象方法中可以通过self来调用其他成员方法,也可以通过self使用点语法来访问属性

             5、对象方法中可以调用类方法,但是调用类方法的时候需同过类名,不通过self调用

         3.3.2 类方法

             1、在声明和定义时候以+开头

             2 类方法是隶属于类的,只能类对象或类名称调用

             3 类方法中不可以直接访问成员变量

             4 类方法中不可以通过self来调用其他成员方法,可以通过形参和创建一个对象的方式,来访问这个对象的对象方法

             5 类方法中可以调用类方法

         3.3.3 self关键字

            1self用在对象方法中,表示调用这个方法的那个实例对象

            2self如果在类方法中,表示类对象

            3、无论self在什么样的方法中,谁调用这个方法,self就是谁

         3.3.4 super

            1、调用父类的方法

            重写:在子类中实现父类中同名的方法

            使用场景:1、如果我们重写父类,还想使用父类中该方法的功能这时候就使用supper来调用父类这个方法

                    2、在我们自定义init方法时候,首先要调用父类的init方法

 

         3.3.5 description方法

              1description对象方法:当我们通过NSLog输出一个实例对象的时候会调用对象上这个方法

              2description类方法,当我们通过NSLog输出一个类对象的时候会调用类对象上这个方法

         3.3.6 初始化方法

              1NSObject 默认实现一个init方法,什么都没有干,仅仅是把自己地址给返回了

              2、什么时候需要重写父类init方法:当我们每次创建对象的时候,都给对象中属性提供同样的默认值的时候,就可以重写父类init方法

              3、如何重写父类init方法

                 1、首先是对象方法

                 2、返回值类必须是instanctype id类型

                 3、方法名称必须是init

                 4、方法内部必须先调用父类的初始化方法

                 5、判断父类是否初始化成功

                 6、如果父类初始化成功了才可以初始化自己的成员变量

                 7、必须返回指向字节的指针

              4、如何自定义初始方法

                 0、必须提供方法声明和实现

                 1、首先是对象方法

                 2、返回值类必须是instanctype id类型

                 3、方法名称必须是initWith开头

                 4、方法内部必须先调用父类的初始化方法

                 5、判断父类是否初始化成功

                 6、如果父类初始化成功了才可以初始化自己的成员变量

                 7、必须返回指向字节的指针

 4.对象的创建

   1、通过类new方法创建

      1、给实例对象在堆中开辟存储空间

      2、把所有成员变量初始化为0

      3、返回指向该对象指针

   2、通过 [[类名 alloc] init];

   3、通过工厂方法(快捷的构造方法)

 5.对象与函数\方法

   1、对象只可作为方法或函数的形参

   2、当对象在方法传递是地址传递

   3、对象可以作为方法的返回值

   4、对象可以作为方法或函数参数在其中进行连续的传递

   5、方法或函数内部可以调用对象上的方法和访问对象上其有权限访问的属性

 

 6.对象与对象之间的常见关系

     6.1依赖关系:当A类的一个对象作为B的方法形参或局部变量的时候,B 依赖与A

     6.2关联关系: 就是hasA关系,B类中有一个成员变量是A类的实例对象,B 拥有一个 AB hasA A;

 7.面向对象的三大特征

     7.1[抽象]:类是对象抽象,父类子类抽象

     7.2 封装:

        功能封装:就是把同一类功能封装到一个类中供外界访问

        数据的封装:类可以一个事物的所有状态特征封装成属性

        属性封装:给每一个属性提供getter setter方法

        当我们把东西都封装起来后,外界调用的时候,就无需关系你内部的做的,是用起来就比较方便

     7.3 继承:A 类继承 B类,那么A类就拥有了B类中所有成员变量和方法

         注意点:

              1、子类中不可以有与类同名成员变量,哪怕这个成员变量在父类中私有的也不可以

              2OC单继承

              3OC多层继承

         优点:代码复用

         缺点:高耦合

         OC中的基类是 NSObject

     7.4 多态:同一指针指向不同的对象的时候,表现出来不同的形态

         1、必须有继承

         2、子类必须重写父类方法

         3、必须是父类指针指向子类对象

         优点:简化代码

              提高代码的灵活性

 

 8.其他关键字

 #includeC语言提供预编译指令,它把所包含的文件内容拷贝过来

 #import:它功能与#include一样,但它可避免重复包含

          OC中只能#import导入头文件,不能导入实现文件

 #import "" 导入自己写的头文件

 #import <> 导入系统或框架中头文件

 @class:作用防止循环导入

         告诉编译器它后面这个东西是个类,它不知道这个类中有什么东西(属性,方法)

         @class 都用在头文件中

 nil:如果一个类中有成员变量是对象类型的,那么它在初始化的就被初始化为nil

 OC中可以给nil发送任何消息,都不会报错,当你给nil发送消息的时候,它什么都不做

 OC中通过nil来清空指针

 

 9.Foundation中数据类型

 BOOL:逻辑类型,只有真和假两个值

 YES 为真

 NO  为假

 BOOL 可以定义变量

      可以作为形参

      可以作为返回值类型

 NSObject * 对象类型

 静态的数据类型:

   优点:编译时的检查

        代码提示准确

 id:动态类型

    优点: 在没有继承的时候,可以使用多态的特性

    缺点:不会进行编译时的检查,如果你调用它所指向的对象上不存在的方法就再运行时报错

          代码提示不准确

 10. NSString类简介

     1、创建

        1、通过字面量方式

          NSString * str1 = @"小黑"

        2、通过初始化方法

        //   C语言的字符转换为OC字符串

        NSString *str2 = [[NSString alloc] initWithUTF8String:"C字符串"];

 

        3、通过类方法

        NSString *str3  [NSString stringWithFormat:@"格式化字符串",参数]

     2、计算长度

        [str length] : 计算字符串中有几个字符

【EI复现】基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)内容概要:本文围绕“基于深度强化学习的微能源网能量管理与优化策略”展开研究,重点利用深度Q网络(DQN)等深度强化学习算法对微能源网中的能量调度进行建模与优化,旨在应对可再生能源出力波动、负荷变化及运行成本等问题。文中结合Python代码实现,构建了包含光伏、储能、负荷等元素的微能源网模型,通过强化学习智能体动态决策能量分配策略,实现经济性、稳定性和能效的多重优化目标,并可能与其他优化算法进行对比分析以验证有效性。研究属于电力系统与人工智能交叉领域,具有较强的工程应用背景和学术参考价值。; 适合人群:具备一定Python编程基础和机器学习基础知识,从事电力系统、能源互联网、智能优化等相关方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①学习如何将深度强化学习应用于微能源网的能量管理;②掌握DQN等算法在实际能源系统调度中的建模与实现方法;③为相关课题研究或项目开发提供代码参考和技术思路。; 阅读建议:建议读者结合提供的Python代码进行实践操作,理解环境建模、状态空间、动作空间及奖励函数的设计逻辑,同时可扩展学习其他强化学习算法在能源系统中的应用。
皮肤烧伤识别作为医学与智能技术交叉的前沿课题,近年来在深度学习方法推动下取得了显著进展。该技术体系借助卷积神经网络等先进模型,实现了对烧伤区域特征的高效提取与分类判别,为临床诊疗决策提供了重要参考依据。本研究项目系统整合了算法设计、数据处理及模型部署等关键环节,形成了一套完整的可操作性方案。 在技术实现层面,首先需要构建具有代表性的烧伤图像数据库,涵盖不同损伤程度及愈合阶段的临床样本。通过对原始图像进行标准化校正、对比度增强等预处理操作,有效提升后续特征学习的稳定性。网络架构设计需充分考虑皮肤病变的区域特性,通过多层卷积与池化操作的组合,逐步抽象出具有判别力的烧伤特征表示。 模型优化过程中采用自适应学习率调整策略,结合交叉熵损失函数与梯度下降算法,确保参数收敛的稳定性。为防止过拟合现象,引入数据扩增技术与正则化约束,增强模型的泛化能力。性能验证阶段采用精确率、召回率等多维度指标,在独立测试集上全面评估模型对不同烧伤类型的识别效能。 经过充分验证的识别系统可集成至医疗诊断平台,通过规范化接口实现与现有医疗设备的无缝对接。实际部署前需进行多中心临床验证,确保系统在不同操作环境下的稳定表现。该技术方案的实施将显著缩短烧伤评估时间,为临床医师提供客观量化的辅助诊断依据,进而优化治疗方案制定流程。 本项目的突出特点在于将理论研究与工程实践有机结合,既包含前沿的深度学习算法索,又提供了完整的产业化实施路径。通过模块化的设计思路,使得医疗专业人员能够快速掌握核心技术方法,推动智能诊断技术在烧伤外科领域的实际应用。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值