`

swift--runtim获取变量信息

 
阅读更多

2015-08-02 YuLongLi 

首先我们创建一个class,添加如下成员变量

var list = Array<AnyObject>()

var name:String?

var i32 :UInt32?

var number :NSNumber?

var dict = Dictionary<String,AnyObject>()

我们分别通过Property和ivar来获取这些成员变量信息

  1. property获取

 

var count:UInt32 = 0

var properList = class_copyPropertyList(self.classForCoder, &count)

for index in0 ... count-1 {

var item = properList[ Int(index)]

//获取变量名称

var proper_name = property_getName(item)

var properName = String.fromCString(proper_name)!

println("变量名称:" + properName )

//获取属性

var proper_attri = property_getAttributes(item)

var properAttri = String.fromCString(proper_attri)!

println( "变量属性:" + properAttri )

//获取属性value

var proper_attri_value = property_copyAttributeValue(item, proper_attri)

var properAttriValue:String? = String.fromCString(proper_attri_value)

println( "变量属性值:\(properAttriValue)" )

}

2.通过ivar获取

var count:UInt32 = 0

var ivar = class_copyIvarList(self.classForCoder, &count)

for index in0 ... count-1 {

var ivarName = ivar_getName( ivar[ Int(index) ] )

var ivarType = ivar_getTypeEncoding( ivar[ Int(index)])

 

var nEncodingType = String.fromCString(ivarType)!

var nName = String.fromCString(ivarName)!

println(" \(nName) \(nEncodingType) \(index)")

 

}

我们来看一下效果:

我们看到:通过property获取的少了UInt32的变量

然后我们把list设为private的再看一下效果:

我们看到property获取的结果中list木有了

 
 

微信扫一扫
关注该公众号

分享到:
评论

相关推荐

    swift-一种简单的方法来打印几乎所有方法包括私有方法支持arm64架构设备

    在Swift中,我们可以使用反射(Reflection)来获取类型信息,进一步获取其方法列表。 在Swift中,`Mirror`类型提供了一种反射机制。通过`Mirror(reflecting:)`创建一个`Mirror`实例,然后可以遍历其子镜像...

    oracle环境变量.txt

    NLS_LANG SIMPLIFIED CHINESE_CHINA.ZHS16GBK ORACLE_HOME D:\app\Administrator\product\11.2.0\dbhome_1 ORACLE_SID HIS1 TNS_ADMIN D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN ...

    【游戏开发】 phthon导出excel成lua表(可单独,可批量enter直接批量) exporExcelConfig.zip

    在游戏开发过程中,数据管理是至关重要的,而将数据从易于编辑的Excel表格转换为适合游戏运行的Lua脚本格式可以极大地提高效率。这个名为"exporExcelConfig.zip"的压缩包提供了一个Python脚本工具,它能帮助开发者将...

    jacoco-0.8.8.zip

    总的来说,JaCoCo-0.8.8.zip是一个强大的工具,用于提升Java项目的测试质量,通过提供详尽的代码覆盖率信息,帮助开发人员确保他们的自动化测试覆盖了足够的代码,从而增强软件的稳定性和可靠性。

    androidx-lifecycle-runtime-2.1.0.aar

    androidx-lifecycle-runtime-2.1.0.aar

    windowsdesktop-runtime-3.1.28-win-x64

    windowsdesktop-runtime-3.1.28-win-x64

    jose:通用的“ JSON Web几乎所有内容”-JWA,JWS,JWE,JWT,JWK,没有依赖项

    乔瑟通用的“ JSON Web几乎所有内容”-使用本机加密运行时不依赖项的JWA,JWS,JWE,JWT,JWK实施的规格和功能以下规范由jose实现JSON... (单击以展开) ESM模块(导入): npm install jose@npm:jose-node-esm-runtim

    Hikari-LLVM15.0.0.zip 支持Xcode14 混淆代码 防止破解

    Hikari_LLVM15.0.0.zip 支持Xcode14 混淆代码 防止破解 启用伪控制流: -mllvm -enable-bcfobf 启用控制流平坦化: -mllvm -enable-cffobf 启用指令替换: -mllvm -enable-subobf ...启用反class-dump: ...

    Microsoft Windows Desktop Runtim

    Microsoft Windows Desktop Runtime实际上也就是.net framework软件,使用该软件能够解决电脑打不开某些软件的问题,如果用户打开某些软件提示缺少必要程序,则需要下载该框架。.NET Framework 是由 Microsoft 开发...

    解决webpack4+升级webpack5+ vue-pdf不可用问题

    Compiled with problems: × ERROR in ./node_modules/vue-pdf/node_modules/pdfjs-dist/es5/build/pdf.worker.js (./node_modules/vue-pdf/node_modules/worker-loader/dist/cjs.js!./node_modules/vue-pdf/node_...

    .ENT Runtime 5.0.7 win-arm-x64

    .NET 是一个免费的、跨平台的、开源的开发者平台,用于构建多种不同类型的应用程序。 .NET is a free, cross-platform, open-source developer platform for building many different types of applications. ...

    java中的0 can‘t find referenced pointcut runTim

    解决方法 后来经过排查,发现是自己的写法有问题,在@Around的参数中我们使用的是runtime(),这里是有问题的! @Around: 环绕增强,相当于MethodInterceptor. 这里Around的value参数应该写的是上面的签名,而不是...

    jogl_gradle:JOGL的示例Gradle项目

    JOGL与Gradle JOGL的示例Gradle项目。 我发现很难找到如何使用JOGL为项目创建Gradle构建...gluegen-rt:2.3.1:natives-android-aarch64 "runtime " org.jogamp.gluegen:gluegen-rt:2.3.1:natives-android-armv6 "runtim

    antlr-runtime-3.2.jar

    antlr-runtime-3.2.jar

    material-motion-swift:使用Core Animation构建响应运动的工具包

    物质运动 由Core Animation驱动的React性运动。 该库包括各种现成的交互。... // Store me for as long as the interactions should take effect. let runtime = MotionRuntime ( containerView : &lt;...runtim

    Microsoft Visual C++ 2010 X64 Runtime - 10.0.30319

    C++运行库,解决了C++开发的项目在另一台没有开发环境上加载不上的问题 网上能找到的都是Microsoft Visual C++ 2010 Redistributable Package (x64) 但是这个装完之后没有任何效果,后经对比发现问题所在,制作了...

    Nutch1.7二次开发培训讲义

    - **运行环境:** 项目构建完成后,在runtim目录下生成deploy和local两个目录,分别对应依赖Hadoop和不依赖Hadoop的运行环境。 #### 三、配置文件修改与调试 **1. 修改配置文件** - **位置:** 配置文件位于nutch1.7...

    runtime 源码

    在编程领域,`runtime` 是一个至关重要的概念,特别是在面向对象的编程语言中,如 Objective-C 和 Swift。这里我们主要关注 Objective-C 的 `runtime`,它是一个底层的库,负责管理对象的生命周期、方法调用和其他...

    nvidia-docker2的deb包可下载本地安装,含有其依赖包

    安装顺序: libnvidia-container1_1.9.0-1_amd64.deb libnvidia-container-tools_1.9.0-1_amd64.deb nvidia-container-toolkit_1.5.1-1_amd64.deb nvidia-container-runtime_3.5.0-1_amd64.deb ...

    Microsoft Visual C++ 2010 x86 Runtime - 10.0.40219

    在网上找了好久, 都没找到这个独立安装包, 这里跟大共享出来 Microsoft Visual C++ 2010 x86 Runtime - 10.0.40219 Microsoft Visual c + + 2010年可再发行组件包安装 Visual c + + 库运行在没有安装 Visual c + + ...

Global site tag (gtag.js) - Google Analytics