黑马程序员——OC基础---分类(Category)、非正式协议及分类延展

RKNN 端侧部署必看:YOLOv11 Pose 姿态估计模型转换与性能优化实战 随着人工智能技术在边缘计算领域的快速发展,姿态估计作为计算机视觉的重要分支,在智能监控、人机交互、体感游戏等场景中展现出巨大的应用潜力。本文深入研究了YOLOv11 Pose模型在Rockchip RKNN平台上的部署方案,从理论基础、模型转换、平台优化到实际部署进行了全面阐述。通过详细的技术分析和实验验证,证明了RKNN平台能够有效提升YOLOv11 Pose的推理性能,在RK3588硬件平台上实现了高达100 FPS的实时姿态检测,为边缘计算场景下的姿态估计应用提供了高效的解决方案。 阅读详情

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------



分类定义: 

       一些方法的声明和实现(可被子类继承)

 

   作用: 

给类增加新方法(只能增加方法,不能增加实例变量)

 


类别的使用步骤与其他类并没有什么不同 先声明、再实现、最后使用,下面用Person类演示如果声明、实现、使用分类

在现有类Person类上增加分类  

.h文件

#import <Foundation/Foundation.h>

@interface Person : NSObject
//person类原有的属性和方法
@end</span>

.m文件
#import "Person.h"
@implementation Person
//Person类原有的方法的实现
@end</span>

       1)声明一个分类 

         格式:

          @interface待扩展的类名 (分类的名称)      待扩展的类名在本例中即为Person类

 

          @end

 

#import <Foundation/Foundation.h>

@interface Person : NSObject
//person类原有的属性和方法
@end

//给Person类增加新的方法
// 声明一个分类
@interface Person (act)
    -(void)test;
@end</span>


       2)实现这个分类

         格式:

 

          @implementation待扩展的类 (分类的名称)

  

          @end


#import "Person.h"
@implementation Person
//Person类原有的方法的实现
@end

//分类方法的实现
@implementation Person (act)
-(void)test{
    NSLog(@"test");
}
@end</span>



注:分类可以使用原类中已有的实例变量

       3)使用分类中的方法

         和使用类中原有的方法一样

          Person *p = [[Person alloc]init];

          [p test];

       4)分类可以单独提取出来分别写成.h(分类的声明文件)和.m(分类的实现文件),方法为:Source->Object-C File->File Type->Category

  单独文件名命名规范为  带扩展的类名+分类的名称

          如上例即为 Person+act

  如果分类文件单独出来,则在调用分类方法时需先引入分类头文件

       5)分类可以定义实现和原类中同名的方法,调用的时候会使用分类中的同名方法,如果有多个分类都有同名方法,则会调用最后编译的分类中的同名方法

非正式协议    

非正式协议就是给NSObject类或者其子类Foundation框架中的类创建的分类又叫做非正式协议,非正式协议一般不需要进行实现,一般在子类中进行方法的重写。

下面代码即为NSString类的一个非正式协议,计算一个字符串中的数字个数并将个数返回。

   NSString+countNum.h

#import <Foundation/Foundation.h>

@interface NSString (countNum)
-(unsigned int)countNum;
@end
NSString+countNum.m

#import "NSString+countNum.h"

@implementation NSString (countNum)
-(unsigned int)countNum{

    unsigned int count = 0;
    for (int i=0; i<self.length; i++) {
        unichar c = [self characterAtIndex:i];
        if (c<='9'&&c>='0') {
            count++;
        }
    }
    return count;
}
@end


延展Extension       单文件方法为:Source->Object-C File->File Type->Extension

延展是一种特殊的分类,匿名分类,最大的作用是增加私有成员变量与方法。

延展的定义可以写在被扩展类的.h文件中一实现私有

延展的实现必须在被扩展类的@implementation   @end之间实现

   
【100%通过率】华为od机试C卷【出差 / 员工派遣】C++ 实现 某公司部门需要派遣员工去国外做项目。现在,代号为 x 的国家和代号为 y 的国家分别需要 cntx 名和 cnty 名员工部门每个员工有一个员工号 (1,2,3,......),工号连续,从 1开始。部长派遣员工的规则: 阅读详情

相关推荐

Python与PyCharm安装配置教程:从零搭建开发环境

编程入门的第一步是搭建开发环境,而Python解释器与IDE工具的选择常让新手困惑。Python作为解释型语言,负责将代码翻译为机器指令,而PyCharm作为集成开发环境,提供代码编辑、调试与项目管理功能,两者协同工作构成高效开发基础。环境变量PATH的配置是安装过程中的关键环节,正确处理可避免“python不是内部或外部命令”的常见错误。理解pip包管理机制,则能轻松安装第三方库并管理项目依赖。从下载官方安装包到运行第一个Hello World程序,再到利用虚拟环境隔离应用依赖,这套流程适用于Window

benben 685

——黑马程序员——OC中的分类(Category)总结

-----------android培训、java培训、java学习型技术博客、期待与您交流!-----------

yhp1095785221的博客 574

100kHz手持LCR表设计:高频阻抗测量与校准实战解析

阻抗测量是电子元件测试的基础,LCR表通过施加正弦激励并分析电压电流的幅值与相位,即可获取电容、电感、电阻的等效参数。在开关电源、无线充电等高频应用场景中,元件在100kHz下的ESR和阻抗特性尤为关键,传统10kHz手持仪表难以满足需求。本文从自动平衡桥原理出发,探讨如何将台式电桥的核心能力浓缩至手持设备,重点剖析高频寄生参数抑制、模拟链路设计、数字相敏检波算法及开路短路校准方法。通过实测数据验证,在100kHz频率下基本精度可达0.5%以内,为维修现场、产线抽检及硬件调试提供了可携带的精密测量方案。全文

weixin_33910191的博客 398

黑马程序员——OC之Category、Block

------  Java培训、Android培训、iOS培训、.Net培训期待与您交流! ------ http://www.itheima.com Category:可以被翻译为类别、分类、类目等,其作用是:将一个类中的不同方法分到多个不同的文件中存储, 便于对类进行模块化设计、团队合作开发;可以在不修改原来类的基础上, 为这个类扩充一些方法。分类的命名规则:类名+扩展方法,

hope_is_beautiful的博客 377

【微知】关于GB200 NVL72服务器的一些信息?(36CPU72GPU;LPDDR5X 17T;HBM3e 13.5T;5代NVlink 1.8TB; 720P算力FP8;120Kw)

本文仅根据官网介绍分析,存在纰漏仅供参考。

技术札记 5395

数据包络分析(超效率-SBM模型)附python代码

超效率-SBM模型超效率SBMpython代码(部分) 这段时间差不多忙完了,终于有时间可以来经营我的博客了。 上阵子挺多人私信我,原谅我记性不好,可能没有回复全。 这篇文章是超效率的扩展。 超效率SBM SBM本身就是非径向模型(non-radial model),想要了解径向超效率的请自行去前面翻阅。 上篇文章说到super-SBM的一个模型,公式为: 这个模型是分式模型,我们可以通过charnes cooper变换,将其转变成为: python代码(部分) 在编程过程中,本来我以为第一个模型是无

weixin_43217288的博客 3万+

黑马程序员 oc随机 分类与延展

------- android培训、java培训、ios培训、期待与您交流! ---------- 一.分类(Category)  1.类别的作用 在不修改原类的基础上增加类的功能。 团队之间分工合作更加灵活。 2、使用类别的步骤 先声明类别--->实现类别--->使用类别  分类的一般格式为:                 声明部分:    

cpo007的博客 385

MATLAB实战:蓝牙GFSK调制解调全流程解析(附误码率优化技巧)

本文深入解析了蓝牙GFSK调制解调在MATLAB中的全流程实现,包括高斯滤波器设计、调制解调技术及误码率优化技巧。通过实战案例和代码示例,帮助工程师提升蓝牙通信系统的性能表现,特别是在降低误码率方面的有效方法。

weixin_29046035的博客 277

黑马程序员——OC的Category和Protocol

Category一、基本概念 分类的作用:在不修改原有的类的基础上增加新的方法 一个庞大的类可以分模块开发,便于维护 一个庞大的类可以由多个人来编写,更有利于团队合作 使用类别的目的对现有类进行扩展:对自定义的类甚至是框架中的类进行扩展,从而实现项目特殊需求。 作为子类的替代手段:不需要定义和使用一个子类,可以通过类别直接向已有的类中增加方法。 对类中的方法归类:利用category把一个庞大的类划

timehzy的博客 457

别再让电池充不满!用CN3791芯片设计太阳能充电电路,这几个调试坑我帮你踩了

本文详细解析了使用CN3791芯片设计太阳能充电电路时的常见调试问题及解决方案。从RCS电阻的选择到MPPT电压偏差的修正,再到线路损耗和温度补偿的优化,提供了全面的避坑指南。通过实测数据和优化方案,帮助工程师提升锂电池充电效率,确保太阳能充电电路的稳定性和可靠性。

weixin_42528191的博客 241

vue3:最新实现腾讯人脸核身+增强版人脸核身使用方法及示例源码,Vue3如何使用腾讯云慧眼人脸核身,提供人脸核身案例、身份信息核验、活体检测与核身比对等示例代码(后端spring与thinkphp)

vue3接入腾讯人脸核身,腾讯云人脸核身Vue3+后端代码,H5人脸核身,vue3 H5如何使用腾讯人脸核身sdk,vue3+thinkphp腾讯人脸核身,Spring Boot接入腾讯云人脸核身教程,hinkphp腾讯人脸核身,vue3人脸核身插件接入流程,vue+spring boot实现腾讯人脸核身,vue3接入腾讯云【增强版人脸核身接入】,vue3 h5微信公众号网页腾讯云慧眼人脸核身,tvue3接入人脸核身SDK,vue3+typescrip+vite接入慧眼实名认证,vue3腾讯云活体人脸核身(

✅ 精选推荐文章 4120

黑马程序员——OC基础学习(五)---分类(Category),代码块Block和protocol代理设计模式

分类(Category),代码块Block和protocol代理设计模式知识总结

fighting__bj的博客 892

【ESP32设备通信】-LoRa通信

在本文中,我们将使用 Arduino IDE 将 ESP32 与 LoRa SX1278 (Ra-02) 模块连接起来。 我们将创建一个真实的示例项目,通过 LoRa 无线打开/关闭 LED 进行演示。

视觉与物联智能 1891

黑马程序员——OC学习之分类category的使用

category作为oc中的一种语法,可以为某个具体的类添加额外的方法,并且不用改变原本类的代码,非常方便,但是不可以为类添加成员变量。 以为NSString类添加一个计算字符串中数字字符个数的功能为例,在xcode6.1中为某个类添加分类方法步骤如下: 1.新建分类文件,选择Objective-C File: 2.File填写分类名称,File Type选择Category,C

gissinghxu的专栏 488

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

黑马程序员—IOS基础之OC—ARC和Category

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! —— 第一章 ARC 一、ARC概念及原理 在引入ARC内存管理之前我们先引入指针的概念 1、指针分类 (1)强指针,如果不做任何说明OC中得指针默认为强指针,关键字strong。 (2)弱指针,__weak关键字修饰的指针为弱指针。 2、概念及原理(1)概念:ARC是自动内存管

Dnorsunshine的博客 663

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

黑马程序员——OC基础——category、description和SEL

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------ 下面我们学习category,也就是分类的定义和用法。 有时候我们需要在不改变类的模型的前提下给它添加一些方法,我们应该怎么办呢?有两种方式可以实现,那就是继承和分类。继承我们已经学习过了,下面我们来学习什么是分类。 那么分类的格式是什么呢? 分类也需要有类的实现和声

liu01991的博客 715

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

黑马程序员----oc加强笔记----分类(Gategory)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

gaopanmdj的博客 1568

黑马程序员---OC基础---Block、分类Category、协议protocol

黑马程序员---OC基础---Block、分类Category、协议protocol

Josh Pell的博客 805

黑马程序员_OC中的分类(Category)的使用

分类(Category)是OC中特有的语法

suiyuan78223的专栏 698

黑马程序员_OC中的分类(category)

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- 在编写面向对象的程序的时候,我们经常想为现有的类添加一些新的行为。例如,你设计了一种新的类型轮胎,因此需要创建Tire类的子类并添加一些有趣的功能。为已经存在的类添加行为时,通常采用创建子类的方法。但是,有时创建子类并不方便。比如,

conpgy的专栏 735

黑马程序员----OC学习笔记之category,extension,protocol

协议、类目

NT_Xiaocai的博客 548

黑马程序员——Objective--C笔记Category、block

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一.分类(Category) 1.Category有很多种翻译: 分类 \ 类别 \ 类目 (一般叫分类),也就是一些方法的声明和实现 2.作用:在不修改类的源代码的前提下,给类增加新的功能 3.使用的步骤: 此处是声明一个类 @interface   Person :NSObj

meimei6_6的博客 421

黑马程序员---OC Category

类别的作用 在不修改原有的类的基础上增加新的方法 一个庞大的类可以分模块开发 一个庞大的类可以由多个人来编写,更有利于团队合作 使用类别的目的 1)对现有类进行扩展: 可以扩展Cocoa touch框架中的类,在类别中增加的方法会被子类所继承,而且在运行时跟其他的方法没有区别。 2)作为子类的替代手段:不需要定义和使用一个子类,可以通过类别直接向已有的类里增加方法。 3)对类中的方法

yanyanren1的博客 310

黑马程序员---OC学习笔记之分类(Category)延展

1、类的延展的概念 延展类别又称为【扩展Extendsion】 是Category的一个特例 其名字为匿名(空) 例如 @interface MyClass(){//扩展 float value; } 这种写法的类别叫做【匿名类别】,又叫类扩展,所谓的扩展,其实就是一个类添加额外的成员变量,方法或者合成属性   2、延展的实现 【可以在延展中,定义实例变量】 【不能使用@im

chunhuayun的专栏 460

黑马程序员13——OC语言之Category

1.Category概念  OC提供了一种与众不同的方式—Category,可以动态的为已经存在的类添加新的行为(方法,不能添加成员变量)。  这样可以保证类的原始设计规模最小,功能增加在逐步扩展。  使用Category对类进行扩展时,不需要创建子类。  Category使用简单的方式,实现了类的相关方法模块化,把不同的类方法分配到不同的分类文

miaoran2014的专栏 662

黑马程序员 -- OC语言 Category 类深入 描述

------- android培训、.Net培训、IOS培训、碧空海的技术博客,期待与您交流!---------- 第四讲 Category 类深入 描述  A.Category分类的使用方法; 在Xcode中编译,编译器会自动建立.m和.h文件,并且在.m中是类的实现如下; @implemention 类名 各种方法的实现,,,,,, 例如; 对象方法 -         

bikonghai01的专栏 641
上一篇: 黑马程序员——OC基础---协议
下一篇: 黑马程序员——Foundation---NSMutableArray
abuzzworld
博客等级 码龄18年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值