Object-c中的Extension特性全部在此.

Objective-C 之 Extension 详解 本文全面介绍了Objective-C中的扩展(Extension)特性,包括其定义、核心能力和应用场景。扩展是一种匿名分类,通常定义在.m文件中,用于添加私有属性、方法和重写属性特性。相比分类(Category),扩展具有编译期绑定、自动合成属性等优势,是实现真正私有功能的关键工具。文章详细对比了扩展与分类的区别,并提供了封装内部状态、实现辅助方法、协议私有实现等典型应用场景。最后总结了使用扩展的最佳实践,帮助开发者更好地利用这一特性提升代码封装性和可维护性。 阅读详情


//WLExtensionTest.h
@interface WLExtensionTest : NSObject  
@property NSString *str;  
-(void) log;  
@end  
// WLExtensionTest.m  
@interface WLExtensionTest(){  
    NSString *str;  
}  
@end  
@implementation WLExtensionTest  
@synthesize str;  
  
  
-(void) log{  
    str = @"test";  
    self.str = @"test1";  
    NSLog(@"%@, %@", str, self.str);  
    NSLog(@"%p, %p", self.str, str);  
}  
  
@end
  
  
使用该类的运行结果:  
2012-11-03 15:48:27.986 testExtension[8883:707] 0x475ac, 0x475ac  
2012-11-03 15:48:27.991 testExtension[8883:707] test1 


上面的例子是在测试 Object-c语言Extension的时候的一个例子, 从上面的结果来看,  .m和.h中的str是一个指针.从
apple 文档了解到Extension最常用的方式是:
(1) 在.m中改变.h文件中属性, 也就是对其进行拓展.
(2)Object-c中私有方法的实现.(即只在.m中添加方法)




Objective-C中的Extension与Category:代码编写的增强方式 在Objective-C编程中,我们经常需要对已有的类进行扩展和增强,以满足特定的需求。Extension和Category是两种常用的方式,它们可以在不修改原始类的情况下,为类添加新的方法和属性。本文将详细介绍Extension和Category的使用方法,并提供相应的源代码示例。 阅读详情

相关推荐

在Windows11上安装ubuntu版linux系统并实现桌面图形化(WSL)

在Windows11上安装ubuntu版linux系统并实现桌面图形化(WSL),xfce桌面美化、安装google-chrome

NiKoJJ‘s Blog 1万+

Object-C中继承 ,分类(category),扩展(extension)使用与区别

在对于框架封装的时封装的功能模块大多是通用模块,为了减少耦合和代码冗余对于一些项目里的个性需求功能一般不会封装。但这样会面临在项目实施中,部分功能无法实现或者实现起来很麻烦,这种情况下类的继承,扩展就可以方便的解决以上问题。同时在对同系统类做个性化定制的时候也有很好的效果。为此整理了一下继承,分类,扩展的使用方法。

DARKSang的专栏 1686

DDPG算法实战:用Python一步步实现深度强化学习中的连续动作控制

本文详细介绍了DDPG算法在深度强化学习中的连续动作控制应用,通过Python和PyTorch实现从零构建智能体。内容涵盖环境搭建、网络架构设计、经验回放、OU噪声实现及训练流程优化,帮助开发者掌握DDPG在机械臂控制等场景的核心技术。

weixin_30335575的博客 415

object-c中扩展--extension

扩展和类别相似,定义如下 @interface x现有类 (){ 变量 } //方法 @end 在类别时也可以增加新的变量。 但是扩展可以增加实例变量,也可以使用@property来合成属性;但是定义类的类别时,不允许定义额外的实例变量,也不能使用@property---指的是在@implentation中,不是@interface 实例如下: #import @interfa

前人挖坑,后人种(pen) 647

I-Cache 和 D-Cache

I-Cache 和 D-Cache

liuyuanbin9001 7020

Apifox CLI + Claude Skills:将接口自动化测试融入ai

基于 Apifox CLI、Claude Code以及Claude Skills组合,实现自然语言触发接口自动化测试。

wwz_0012的博客 597

Object-c 中Extension解析

EXtension(延展)  1、类的延展写在类的.m文件中的作为类的延展  2、延展是给有源代码的(含有.m)类使用的  3、延展只有接口部分没有实现部分。延展是用于管理实例变量和“私有”方法的  4、在延展中声明的方法,在类的实现部分进行实现 延展的定义在类的.m文件“中”定义格式为  :@interface  + 类名() {   //声明相关的类的内部需要使用,但不想对外公开的

图解AI 4196

项目管理-(补充)七种基本质量工具

七种基本质量工具,用于PDCA循环的架构内 解决与质量相关的问题,分为老七工具和新七工具。 1)老七种:刘英只点劣质茶(流程图、因果图、直方图、散点图、帕累托图、控制图、核查表)2)新七种:锯树联亲测动优(矩阵图、树形图、关联图、亲和图、过程决策程序图、活动网络图、优先矩阵)

weixin_42081167的博客 4603

Category

Category

iosfighterlb - HeyYou 442

【Unity】YooAsset + HybridCLR热更

本文介绍了Unity游戏开发中的热更新技术方案,重点对比了资源热更和代码热更的主流工具。资源热更方面分析了Asset Bundle、Addressable和YooAsset的优缺点;代码热更部分比较了xLua、ILRuntime、InjectFix和HybridCLR的性能特点。文章详细演示了HybridCLR+YooAsset的实践方案,包括加载热更新程序集、反射调用热更代码、资源打包部署等完整流程。该方案通过原生运行时实现程序集级热更,具有极低性能损耗和全生命周期适用性,配合YooAsset简化了资源管

欢迎指错||纠正||建议||水评+点赞&&评论&&关注&&转发 2916

Spring AI 实战:第五章、Spring AI本地模型部署之省钱小能手

白嫖的快乐你想象不到经过这番折腾,我们成功实现了零成本使用大模型完全本地运行保障隐私可视化访问Java生态无缝集成但可能有的小伙伴要吐槽,怎么换个底层模型这次就新建一个工程了呢?不能在以前的工程上开发吗?这样也太不优雅了吧~,我知道你很急,但先别急,等下一章节再来解决这个问题。为什么程序员特别喜欢Ollama?因为它就像一只温顺的羊驼——不花钱还能24小时产出代码!

liaokailin的专栏 921

Objective-C 分类和扩展

分类(category) 分类不是类 动态给类添加方法; 或把类中方法按照逻辑分开,优化代码结构; 给类添加方法不会影响子类; 把Framework私有方法公开; 模拟多继承;(protocol 也是解决多继承问题) 使用 Test类的.h和.m 基本使用 #import <Foundation/Foundation.h> @interface Test : NS...

wangchuanqi256的博客 353

天地图下载带审图号(审图号: GS(2024)0650号)的 “行政区划” 数据(含shp文件下载地址)

在科研投稿论文过程中,多数期刊杂志要求我们制作涉及国界的图件,必须使用自然资源部地图技术审查中心发布的标准地图底图。如地理学报、地理科学等期刊的投稿指南中写到:非标准底图本刊不予发表!(如图1.1所示)如果一定要用,凡涉国界图件(国内部分地区、全国、世界部分地区、全球)必须使用自然资源部标准地图服务系统标准地图底图(http://bzdt.ch.mnr.gov.cn/)(如图1.1所示)或国家测绘局地理信息局标准地图底图(如图1.2所示),所用底图边界要完全无修改(包括南海诸岛位置)。

JData_Engineer的博客 2302

Objective-C——扩展(Extension)详解

我在上一篇博客中详细讲解了Category类别《Objective-C——类别(Category)详解》,而扩展和类别又十分的相似。我们今天就来深入学习扩展。       Objective-C 2.0之后增加了Extension,所谓的扩展,其实为一个类添加额外的方法或者属性,这些方法和属性是私有的。而我们又常常把Extension成为匿名的Category。类扩展是在.m文件中声明私有方法非

乞力马扎罗的雪CYF的博客 5605

VC中sqlite的使用

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

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Object-C Category和Extension的区别

参考:http://stackoverflow.com/questions/3499704/difference-between-category-and-class-extension

yasi_xi的专栏 6942

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Pytorch C++/CUDA Extension

Pytorch C++/CUDA Extension

weixin_42930699的博客 2564

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Objective-C 的 Category 与 Extension

目录Category(分类)Extension(扩展)Category 与 Extension 的区别其他 Category(分类) Category 简介 Category 是 Objective-C 2.0 之后添加的语言特性,其主要作用是为已经存在的类添加方法(无论工程中是否有该类的源码)。 Apple 的 SDK 中就大面积的使用了Category 这一特性。比如UIKit中的UIView。apple把不同的功能API进行了分类,这些分类包括UIViewGeometry、UIViewHier

Airths 的博客 772

iOS 中的Category 和 Extension

iOS 中的Category 和 Extension 的特点及用法 Category(分类): category即oc中通常称为分类/类别,主要作用有以下几点: 为已有的类添加方法,扩展功能; 可以实现多个开发者共同开发同一个类。 为单一的类文件减小文件大小。 可以将类的功能进行分类,不同的功能可以放在不同Category中。 按功能需求选择性加载不同的Category; 声明私有方法。 模拟o...

黎明的博客 1854

objective-C中category与extension的探究——关于extension(类扩展)的实验和总结

本文通过实验说明了objective-C中extension的本质到底是什么,实际上它只是能够将类的源声明分割成多个部分的一种工具,仅此而已。

duziteng124的博客 535

Object基础语法Category、Extension、Protocol

需要使用int类型的变量的时候,可以像写C的程序一样,用int,也可以用NSInteger,但更推荐使用NSInteger,因为这样就不用考虑设备是32位的还是64位的。  可以看如下定义: #if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 t

zhaojian3513的专栏 507

c++ properties_借助C/C++ Extension实现VSCode C++代码补全

在VSCode C/C++ IntelliSense领域,目前有两位实力相当的选手,它们分别是基于微软闭源技术的C/C++ Extension和开源方案clangd。根据我目前体验,它俩的特性可以总结如下:表1 C/C++ Extension vs clangd本文将介绍如何借助C/C++ Extension实现对C++项目的完美索引。(本文是上篇介绍clangd的续作,大家可以把两篇文章结合起来...

weixin_39789525的博客 1378

Swift 创建扩展(Extension)

本文介绍Swift 如何创建扩展(Extension)

wyz670083956的博客 1044

Objective-C的category与extension原理深入讲解

Objective-C的category与extension原理深入讲解 一、category与extension原理与区分 extension是在一个类的.m文件里实现,是一个类组成的一部分。可以声明一些不严谨的私有属性和方法。(为什么说不严谨呢?因为属性可以通过KVC访问到,方法可以通过消息机制发送!) category是在runTime运行期加载的,extension和类一样都是在编译期...

weenaHome的博客 383

【openGauss/MogDB编写自定义extension】

例如openGauss的函数不支持PARALLEL语法等,有些opengauss不支持的不可以使用,这个需要注意。

小怪兽的博客 1326

Objective-C语言——Extension延展

打开Xcode -> 选择IOS -> Application -> Single View Application -> 然后按next 2.如果你创建了工程那快捷键(com-shift-N) -> 选择IOS -> Application -> Single View Application -> 然后按next 在Xcode 按快捷键com+N 在左面找到iO

相信以分享、学习的心态定会让自己强大起来!! 461
上一篇: iOS应用程序的状态:
下一篇: Object-c中的Category特性全部在此.
deep_explore
博客等级 码龄16年 54粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值