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来获取这些成员变量信息
-
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中,我们可以使用反射(Reflection)来获取类型信息,进一步获取其方法列表。 在Swift中,`Mirror`类型提供了一种反射机制。通过`Mirror(reflecting:)`创建一个`Mirror`实例,然后可以遍历其子镜像...
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 ...
在游戏开发过程中,数据管理是至关重要的,而将数据从易于编辑的Excel表格转换为适合游戏运行的Lua脚本格式可以极大地提高效率。这个名为"exporExcelConfig.zip"的压缩包提供了一个Python脚本工具,它能帮助开发者将...
总的来说,JaCoCo-0.8.8.zip是一个强大的工具,用于提升Java项目的测试质量,通过提供详尽的代码覆盖率信息,帮助开发人员确保他们的自动化测试覆盖了足够的代码,从而增强软件的稳定性和可靠性。
androidx-lifecycle-runtime-2.1.0.aar
windowsdesktop-runtime-3.1.28-win-x64
乔瑟通用的“ JSON Web几乎所有内容”-使用本机加密运行时不依赖项的JWA,JWS,JWE,JWT,JWK实施的规格和功能以下规范由jose实现JSON... (单击以展开) ESM模块(导入): npm install jose@npm:jose-node-esm-runtim
Hikari_LLVM15.0.0.zip 支持Xcode14 混淆代码 防止破解 启用伪控制流: -mllvm -enable-bcfobf 启用控制流平坦化: -mllvm -enable-cffobf 启用指令替换: -mllvm -enable-subobf ...启用反class-dump: ...
Microsoft Windows Desktop Runtime实际上也就是.net framework软件,使用该软件能够解决电脑打不开某些软件的问题,如果用户打开某些软件提示缺少必要程序,则需要下载该框架。.NET Framework 是由 Microsoft 开发...
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_...
.NET 是一个免费的、跨平台的、开源的开发者平台,用于构建多种不同类型的应用程序。 .NET is a free, cross-platform, open-source developer platform for building many different types of applications. ...
解决方法 后来经过排查,发现是自己的写法有问题,在@Around的参数中我们使用的是runtime(),这里是有问题的! @Around: 环绕增强,相当于MethodInterceptor. 这里Around的value参数应该写的是上面的签名,而不是...
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
物质运动 由Core Animation驱动的React性运动。 该库包括各种现成的交互。... // Store me for as long as the interactions should take effect. let runtime = MotionRuntime ( containerView : <...runtim
C++运行库,解决了C++开发的项目在另一台没有开发环境上加载不上的问题 网上能找到的都是Microsoft Visual C++ 2010 Redistributable Package (x64) 但是这个装完之后没有任何效果,后经对比发现问题所在,制作了...
- **运行环境:** 项目构建完成后,在runtim目录下生成deploy和local两个目录,分别对应依赖Hadoop和不依赖Hadoop的运行环境。 #### 三、配置文件修改与调试 **1. 修改配置文件** - **位置:** 配置文件位于nutch1.7...
在编程领域,`runtime` 是一个至关重要的概念,特别是在面向对象的编程语言中,如 Objective-C 和 Swift。这里我们主要关注 Objective-C 的 `runtime`,它是一个底层的库,负责管理对象的生命周期、方法调用和其他...
安装顺序: 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年可再发行组件包安装 Visual c + + 库运行在没有安装 Visual c + + ...