Objective-C之Foundation框架的NSObject和反射机制的应用

使用下一代的嵌入式IDE-PlatformIO 教程 1.生成工程 1.1 打开STM32CubeMX: 选择你的MCU,这里我用的是STM32F103RC RCC中开启外部HSE时钟,外部时钟比HSI更稳定些 开启DEBUG 4线 打开串口1用于打印调试信息,波特率115200,校验位0,停止位1 打开串口2用于MODBUS协议,波特率9600,校验位0,停止位1 接入RT-thread:参考官方文档 基于 CubeMX 移植 RT-Thread Nano 根据官方文档,需要1.取消生成HardFault_Handler、PendSV_Handler、Sy 阅读详情

NSObject常用的方法:
所有的OC对象都有这些方法,见demo的代码

反射:
Class的反射
通过类名的字符串形式实例化对象
Class class = NSClassFromString(@"Student");
Student *stu = [[class alloc] init];

类名转换为字符串:
Class class = [Student class];
NSString *className = NSStringFromClass(class);

SEL反射:
通过方法的字符串形式实例化方法
SEL selector = NSSelectorFromString(@"setName:");
[stu performSelector withObject:@"mike"];

方法转变成字符串:
NSStringFromSelector(@selector(setName:));

测试demo代码如下:

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

void nsObject(){
    id stu = [[[Student alloc] init] autorelease];
    //isKindOfClass判断对象是否属于某个类或者子类
    if ([stu isKindOfClass:[Person class] ]) {
        NSLog(@"stu属于Person或者继承自Person");
    }
    //isMemberOfClass判断某个对象是否属于某个类(不包含子类)
    BOOL result = [stu isMemberOfClass:[NSObject class]];
    NSLog(@"%i", result);
   
    //直接调用
    [stu tests];
    //间接调用
    [stu performSelector:@selector(tests)];
    [stu performSelector:@selector(test2:) withObject:@"abc"];
   
    //延迟2秒调用
    [stu performSelector:@selector(test2:) withObject:@"123" afterDelay:2];
}

void reflect(){
    //字符串变class
    NSString *str = @"Student";
    Class class = NSClassFromString(str);
   
    Student *stu = [[class alloc] init];
    NSLog(@"%@",stu);
    
    //class 变字符串
    NSString * name = NSStringFromClass([Person class]);
    NSLog(@"name:%@", name);
   
    //方法的反射
    NSString *method = @"tests";
    SEL selector = NSSelectorFromString(method);
    [stu performSelector:selector];
   
    //将SEL转化为字符串
    NSString *selectorName = NSStringFromSelector(selector);
    NSLog(@"%@", selectorName);
   
    [stu release];
   
}

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        NSLog(@"----nsObject----");
        nsObject();
        NSLog(@"----reflect----");
        reflect();
    }
    return 0;
}
Person.h文件:
#import <Foundation/Foundation.h>
@interface Person : NSObject
@end

Person.m文件:
#import "Person.h"
@implementation Person
@end

Student.h文件;

#import "Person.h"
@interface Student : Person
- (void)tests;
- (void)test2:(NSString *) param;
@end

Student.m文件:

#import "Student.h"
@implementation Student
- (void)tests{
    NSLog(@"excute 'test' method");
}
- (void)test2:(NSString *)param{
    NSLog(@"excete 'test2' method and param is %@",param);
}
@end

基于YOLOv11的水果/商品/食堂/蔬菜/饮料/书籍识别与计价系统,前台+后台管理系统 阅读详情

相关推荐

告别环境配置焦虑:在Win10的Ubuntu子系统里搞定CSAPP实验环境(附32/64位库编译指南)

本文详细介绍了如何在Win10的Ubuntu子系统中搭建CSAPP实验环境,包括WSL 2的安装与配置、32/64位库的编译指南以及高效开发工具链的设置。通过优化WSL性能和使用实用技巧,开发者可以轻松应对CSAPP实验中的环境配置问题,提升学习效率。

weixin_30443813的博客 296

ios_Cocoa框架 “Foundation”和“UIKit”的区别

Cocoa Cocoa不是一种编程语言(它可以运行多种编程语言),它也不是一个开发工具(通过命令行我们仍然可以开发Cocoa程序),它是创建Mac OS X和IOS程序的原生面向对象API,为这两者应用提供了编程环境。 我们通常称为“Cocoa框架”,事实上Cocoa本身是一个框架的集合.

hw的博客 8794

华为AC外置Portal认证方案配置步骤指南

华为AC外置Portal认证方案配置步骤指南

m0_46129105的博客 7671

Objective-C的Foundation框架——框架结构简介

Foundation框架

痴_Pro的博客 2043

FreeSWITCH彩铃与回铃音区别详解:从183/180信令到mod_da2检测模块

本文深入解析FreeSWITCH中彩铃与回铃音的技术差异,从183/180信令机制到mod_da2智能检测模块的实现原理。通过对比SIP协议中的早期媒体传输、回铃音补偿技术及实战案例,帮助开发者掌握VoIP系统中的关键音频处理技术,提升呼叫系统稳定性和用户体验。

tree8的博客 348

Cadence psspxf实战:手把手教你仿真250MHz环形VCO的电源抑制比(附Verilog代码)

本文详细介绍了使用Cadence psspxf仿真器对250MHz环形VCO的电源抑制比(PSRR)进行仿真的全流程。从环形VCO的设计原理、Verilog代码实现,到Cadence环境配置、仿真参数设置,再到结果分析与优化技巧,提供了完整的实战指南。特别适合电路设计工程师学习如何评估和优化VCO的抗电源噪声能力。

weixin_42567752的博客 414

OC学习篇之---Foundation框架中的NSObject对象

前一篇文章讲到了OC中的代理模式:http://blog.youkuaiyun.com/jiangwei0910410003/article/details/41777627,而且前几篇文章就介绍了OC中的类相关知识,从这篇文章开始我们开始介绍Foundation框架。OC中的Foundation框架是系统提供了,他就相当于是系统的一套api,和Java中的一些系统jar很相似,又早起的一批人开发的,内部...

weixin_30678821的博客 155

物联网技术-第2章-物联网技术架构

• 物联网具有很强的异构性• 为实现异构设备之间的互联、互通与互操作,物联网需要以一个开放的分层的可扩展的为框架。

m0_73804764的博客 2976

iOS开发系列—Objective-C之Foundation框架

概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底是谁?它为什么又出现在Objective-C中间呢?今天我们将揭开这层面纱,重点分析在IOS开发中一个重要的框架Foundation,今天的主要内容有: Foundation概述 常用结构体 日...

weixin_33979745的博客 436

CentOS 9 Stream 上安装 MySQL 8.0+

根据提示进行设置,包括设置新的 root 密码、禁用远程 root 登录等。MySQL 在首次安装时会生成一个临时密码。这样就完成了 MySQL 8.0.37 的安装。这将安装最新的 MySQL 8.0 版本。

小强不是坑 1679

43、FMCW雷达高度计仿真

本文介绍了FMCW雷达高度计的波形级建模与仿真过程,重点模拟了着陆和倾斜两种飞行场景以评估其性能。通过结合高程数据和飞行轨迹构建雷达场景,使用自定义信号处理器分析IQ样本并估计高度。结果表明,该高度计在多数情况下满足性能要求,但也存在误差较大的点,提出了地面检测算法优化的潜在方向。

neovim7hacker的博客 135

Foundation5 NSObject和反射,copy语法

NSObject常用方法 Student *stu = [[[Student alloc] init] autorelease]; // isKindOfClass判断对象是否属于某个类 或者 子类 if ( [stu isKindOfClass:[Person class]] ) { // NSLog(@"stu属于Person或者继承自Per

dwt1220 1189

infercnv的实操

摘要: 博主在infercnv分析中遇到执行困难,外包服务不可靠(未按要求使用HMM方法)。通过优化策略(逐样本处理、精简细胞至1000个、固定随机种子)解决了运行问题,但HMM功能仍无法实现。最终参考Cell期刊标准设置阈值完成分析,后续将继续更新进展。该案例凸显了生物信息分析中自主优化的重要性。(150字)

xiaoyusang的博客 308

Objective-C:Foundation框架-常用类-NSObject

NSObject是所有类的基类,其常见用法有: #import <Foundation/Foundation.h> @interface Person : NSObject - (void)test; @end #import "Person.h" @implementation Person - (void)test { NSLog...

asqwzx123123123123的博客 172

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Objective-C反射机制

该文章属于&lt;简书 — 刘小壮&gt;原创,特此感谢:&lt;简书 — 刘小壮&gt; http://www.jianshu.com/p/5bbde2480680

iOS开发程序媛 224

jre9下载 jdk9

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

NSobject官方介绍(转)

概述: NSObject协议组对所有的Object-C下的objects都生效。 如果objects遵从该协议,就会被看作是first-class objects(一级类)。 另外,遵从该协议的objects的retain,release,autorelease等方法也服从objects的管理和在Foundation中定义的释放方法。一些容器中的对象也可以管理这些objects,比...

a2614555的博客 194

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

黑马程序员——foundation框架之NSNull,NSObject和反射

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------- NSNull就是表示

zya7016322的专栏 550

Objective-C 反射机制

该文章属于<简书 — 刘小壮>原创,特此感谢:<简书 — 刘小壮> http://www.jianshu.com/p/5bbde2480680 了解反射机制 Objective-C语言中的OC对象,都继承自NSObject类。这个类为我们提供了一些基础的方法和协议,我们可以直接调用从这个类继承过来方法。当然,本篇文章中讲到的反射方法,就在NSObject和Fo...

weixin_30484739的博客 67

ObjectC----NSObject常用方法和OC反射机制

NSObject常用方法: ======================================================================= OC反射机制: 转载于:https://www.cnblogs.com/NSNULL/p/4756719.html

aqokgik84582的博客 140

iOS 开发--Objective-C 反射机制

了解反射机制 Objective-C语言中的OC对象,都继承自NSObject类。这个类为我们提供了一些基础的方法和协议,我们可以直接调用从这个类继承过来方法。当然,本篇文章中讲到的反射方法,就在NSObject和Foundation框架中。 反射机制涉及到的东西比较多,这篇文章只从OC层面来讲反射机制,不涉及runtime部分,以后会写文章来专门讲runtime的。 获取Cla...

weixin_30340775的博客 69

反射机制

Class对象其实本质上就是一个结构体,这个结构体中的成员变量还是自己,这种设计方式非常像链表的数据结构。

CatStarXcode的博客 338

Foundation框架(15)——NSObject的常用方法、OC中的反射

// // main.m // Foundation(15) // // Created by Mac on 15-1-24. // Copyright (c) 2015年 vxinyou. All rights reserved. // #import #import "Student.h" #pragma mark NSObject的常用方法 void o

liu537192的专栏 493

object-C 之 foundation--NSDate & NSObject &反射

void dateCreate(){     //返回的是当前时间(now)     NSDate *date=[NSDate date];     //返回的时间会比当前时间快10秒     // now: 11:12:40->date:11:12:50     date=[NSDate dateWithTimeIntervalSinceNow:10];  

327

Alpha 对象检查器:深入 iOS 运行时对象分析的强大工具

Alpha 对象检查器是 iOS 调试框架 Alpha 的核心功能之一,它提供了**运行时对象分析**的强大能力,让开发者能够实时查看和修改应用中的任何对象。无论您是新手还是经验丰富的 iOS 开发者,这个工具都能显著提升调试效率 🚀。 Alpha 是下一代 iOS 调试框架,它通过**运行时反射机制**让您能够深入探索应用中的对象结构、属性和方法。对象检查器作为 Alpha 框架的重要组成部

gitblog_00979的博客 883

JS中关于(function( window, undefined ) {})(window)写法的理解

在jquery中我们经常看到以下这段代码: ;(function ( $, window, document, undefined ){ //函数体内具体代码 })(jQuery, window,document); 首先说说非常值得提倡的几点: 1、代码最前面的分号,可以防止多个文件压缩合并以为其他文件最后一行语句没加分号,而引起合并后的语法错误。 2、匿名函数(function()

技术人宝哥 4997

jquery的find用法

<br />1:children及find方法都用是用来获得element的子elements的,两者都不会返回 text node,就像大多数的jQuery方法一样。 <br />2:children方法获得的仅仅是元素一下级的子元素,即:immediate children。 <br />3:find方法获得所有下级元素,即:descendants of these elements in the DOM tree <br />4:children方法的参数selector 是可选的(optionall

技术人宝哥 4113
上一篇: Objective-C之Foundation框架NSNumber、NSNull、NSValue、NSDate用法介绍
下一篇: Objective-C之语法copy、mutablecopy以及自定义复制功能
技术宝哥
博客等级 码龄16年 331粉丝 222原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值