首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

成员变量与属性

在上篇文章[Objective-C Runtime] 类与对象详细讲解了Runtime机制对于类和对象相关处理,今天继续讲解一下Runtime在成员变量和属性上的处理方法和策略。...本质上,一个属性一定对应一个成员变量,但是属性又不仅仅是一个成员变量,属性还会根据自己对应的属性特性的定义来对这个成员变量进行一系列的封装:提供 Getter/Setter 方法、内存管理策略、线程安全机制等等...; 相关函数 Runtime 中与成员变量和属性相关的函数有很多,这里罗列出一些常用的方法: Ivar class_getClassVariable(Class cls, const char *name...添加一个属性及对应的成员变量后,我们还能通过 [obj valueForKey:@"propertyName"];获得属性值。 小结 本文主要讨论了Runtime中成员变量与属性相关的内容。...成员变量与属性是类的数据基础,合理使用Runtime中的相关操作能使我们更加灵活地处理与类数据相关开发工作。

1.9K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    WCF技术剖析之十二:数据契约(Data Contract)和数据契约序列化器(DataContractSerializer)

    一、数据契约 一个正常的服务调用要求客户端和服务端对服务操作有一致的理解,WCF通过服务契约对服务操作进行抽象,以一种与平台无关的,能够被不同的厂商理解的方式对服务进行描述。...与数据契约的定义相匹配,WCF采用新的序列化器——数据契约序列化器(DataContractSerializer)进行基于数据契约的序列化于反序列化操作。...Name:数据成员的名称,默认为字段或者属性的名称; Order:相应的数据成员在最终序列化后的XML出现的位置,Order值越小越靠前,默认值为-1; IsRequired:表明属性成员是否是必须的成员...注: 数据契约和数据成员只和是否应用了DataContractAttribute和DataMemberAttribute有关,与类型和成员的存取限制修饰符(public,internal、protected...也就是说,应用了DataMemberAttribute的私有字段或属性成员也是数据契约的数据成员。

    1.7K90

    Objective-C Runtime:深入理解成员变量与属性

    在本文中,着重讲解一下类实现细节的先关内容,主要包括类中的成员变量、属性、方法以及协议与分类的实现。 在讲解成员变量与属性之前,需要了解一下类型编码相关知识。...成员变量与属性 成员变量与属性这一部分有三个方面需要注意:Ivar、objc_property_t基本数据结构和关联对象(Associated Object)。...Nonnull value; /**< The value of the attribute (usually empty) */ } objc_property_attribute_t; 成员变量与属性的联系...本质上,一个属性一定对应一个成员变量,但是属性又不仅仅是一个成员变量,属性还会根据自己对应的属性特性的定义来对这个成员变量进行一系列的封装:提供 Getter/Setter 方法、内存管理策略、线程安全机制等等...添加一个属性及对应的成员变量后,我们还能通过 [obj valueForKey:@"propertyName"];获得属性值。 小结 本文主要讲解了成员变量与属性相关使用,尤其是关联对象的使用。

    79130

    WCF入门(12)

    第12集 Backward compatible WCF contract changes WCF合约改变后的向后兼容性   这一集主要内容来自https://msdn.microsoft.com/en-us...一般来说WCF服务部署到生产环境后,因为客户端的代理类已经生成,所以,服务端不建议再做更改。但总会有避免不了要更改的情况。下面就通过2个表格来对典型的情况做一些说明。...=True) 有异常 移除非必须的成员 没有异常,但是数据丢失, 移除必须的成员 客户端接收到的response不符合客户端的代理类合约定义,所以会获取的异常 修改现有成员的数据类型 看类型是否兼容,不兼容则有异常...原先是不带City属性,下面给他添加IsRequired的属性。...打开EmployeeServiceClient项目,查看里面的Employee定义,因为City属性是后来加的,所以代理类里面不带City属性。

    44010

    WCF技术剖析之十四:泛型数据契约和集合数据契约(上篇)

    一、泛型与数据契约 面向对象通过继承实现了代码的重用,而泛型则实现了“算法的重用”。...两个属性Header和Details表示单据报头和明细列表。...15: } 16: } 注:部分内容节选自《WCF技术剖析(卷1)》第五章:序列化与数据契约(Serialization and Data Contract) WCF技术剖析系列...: WCF技术剖析之一:通过一个ASP.NET程序模拟WCF基础架构 WCF技术剖析之二:再谈IIS与ASP.NET管道 WCF技术剖析之三:如何进行基于非HTTP的IIS服务寄宿 WCF技术剖析之四:...)下配置的BaseAddress无效 WCF技术剖析之七:如何实现WCF与EnterLib PIAB、Unity之间的集成 WCF技术剖析之八:ClientBase中对ChannelFactory

    1.3K90

    谈谈WCF中的Data Contract(4):WCF Data Contract Versioning

    的Order对象,然后这个Order对象又由Service A传导Service B,虽然Service B能过识别Shipping Address成员,但是现在却没有改成员的值了,这显然是有问题的。...其实在WCF中解决这样一个问题的方案简单而直接,那就是在Data Contract中定义一个额外的成员来存储没有在成员列表中定义的信息。...为了一窥Order的ExtensionData属性中保存的内容,我们在Service进行Debug,在QuickWatch中看看它是不是真的保存了不能识别的ShippingAddress: ?...[原创]谈谈WCF中的Data Contract(1):Data Contract Overview [原创]谈谈WCF中的Data Contract(2):WCF Data Contract对Generic...的支持 [原创]谈谈WCF中的Data Contract(3):WCF Data Contract对Collection & Dictionary的支持 [原创]谈谈WCF中的Data Contract

    81160

    WCF版的PetShop之三:实现分布式的Membership和上下文传递

    为此需要自定义MembershipProvider,通过WCF服务调用的形式提供成员资格所有功能的实现。...图2揭示了RemoteMembershipProvider实现的原理:RemoteMembershipProvider通过调用WCF服务MembershipService提供对成员资格所有功能的实现;MembershipService...MembershipProvider包含两种类型的成员:属性和方法,简单起见,我们可以为MembershipProvider每一个抽象方法定义一个匹配的服务操作;而对于所有属性,完全采用服务端(应用服务器...)的MembershipProvider相关属性。...由于RemoteMembershipProvider完全通过调用WCF服务的方式提供对所有成员资格功能的实现,所以进行RemoteMembershipProvider配置时,配置相应的终结点就可以了。

    74360

    WCF技术剖析之二十一: WCF基本的异常处理模式

    由于WCF采用.NET托管语言(C#和NET)作为其主要的编程语言,注定以了基于WCF的编程方式不可能很复杂。...在这里我们更多地关注与应用异常。 首先,我们在不做任何异常处理相关操作的情况下,看看如果在服务端执行某个服务操作的过程中抛出异常后,客户端会得到怎样的结果。我们通过实例的形式来演示这中场景。...再仔细察看具体的属性成员列表,我想很多读者肯定有一种是曾相识的感觉:是不是和System.Exception的属性成员定义很相似。...实际上,ExceptionDetail是WCF专门设计出来用于封装服务端抛出的异常信息的,其个属性HelpLink、InnerException和StackTrace各自和System.Exception...的同名属性向对应,而属性Type表示异常的类型。

    802100

    WCF技术剖析之二十六:如何导出WCF服务的元数据(Metadata)

    WCF定义一个具体的MetadataExporter:WsdlExporter,将基于某个终结点的元数据导出生成基于WSDL的MetadataSet。...MetadataExporter定义了3个与元数据导出相关的方法,其中ExportContract仅仅导出基于某个服务契约相关的元数据,ExportEndpoint则导出某个终结点相关的所有元数据。...静态属性Default代表默认的WS-Policy版本,目前为WS-Policy 1.2。属性Namespace表示相应WS-Policy版本的命名空间。...正是因为WSDL是目前描述Web服务做好的语言,建立WCF终结点与WSDL元素之间的匹配关系,以及基于该匹配关系的元数据导入和导出的实现,是WCF元数据框架体系的一个最为重要的目标。...在第1节对WSDL的介绍中,我们已经谈过了WCF下终结点三要素(地址、绑定和契约)与组成一份完成WSDL文档(基于WSDL 1.1)的5个元素之间的匹配关系,现在我们进行一个简单的总结。

    77360

    OC知识--成员变量(属性,实例变量)的相关知识

    成员变量介绍 1. 成员变量解释 我们把Objective-C中写在类声明的大括号中的变量称之为成员变量(也称为属性,实例变量)。...”_” ,首字母必须大写 必须提供一个参数,参数类型必须与所对应的成员变量的类型一致 形参名称和成员变量去掉下划线相同 举例: 如:如果成员变量为int _size 那么与之对应seter方法声明为...与getter方法的方法名区分开来 可以和一些其他的局部变量区分开来,下划线开头的变量,通常都是类的成员变量。...点语法注意 点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开成相应的方法调用 如果没有setter和getter方法,则不能使用点语法 不要在setter与getter方法中使用本属性的点语法...的属性后面写上要将传入的值赋值给谁和要返回哪个属性的值, 并用等号连接 3.

    2.5K60

    使用反射机制调用属性和私有成员与代理模式的介绍

    使用反射机制调用属性: 通过反射机制可以获得类的属性,获得到的属性同样的可以进行赋值、得值操作,调用getField方法并传递属性的名称可以获得指定的属性,调用getFields方法则可以获得全部属性,...从运行结果可以看出只拿出了公开的属性,私有的属性拿不到。...使用反射机制调用私有成员: 1.调用私有属性 在反射机制里调用私有属性需要通过getDeclaredFields方法或者getDeclaredField方法,前者是获得类里所有的私有属性,后者是获得指定的私有属性...但是使用getDeclaredFields或者getDeclaredField方法获得私有属性之后需要再调用setAccessible方法进行一个调用授权的操作才能对获得到的私有属性进行操作: 代码示例...,用于把对象存储到属性里,接着在重写接口的方法里调用A实现类里的方法,第四步写运行类,在main方法里首先new A类的对象出来,然后new B类的对象并且把A类的对象放进B类的构造器里,最后用B类的对象调用方法

    54110

    Java 静态属性与实例属性的初始化

    类的初始化包括静态属性的初始化和实例属性的初始化,在加载类过程中的准备阶段会给静态属性分配存储空间,并根据属性的类型设置初始值,例如 int 类型静态属性会设置初始值为 0,布尔类型静态属性会设置初始值为...false;实例属性的初始化会在构造实例对象时发生。...这里提到的静态属性不包括静态常量,静态常量会在准备阶段直接赋予指定的初始值。...在加载阶段之后,会在内存中保存一个类的java.lang.Class对象,通过该Class对象来访问类中的各项数据,包括静态属性。...,若父类还没有进行静态初始化,则会先进行父类的静态初始化;在子类实例属性初始化时,若父类还没有进行实例属性初始化,则会先进行父类的实例属性初始化。

    2.4K30

    一个关于解决序列化问题的编程技巧

    如果对DataContractSerializer序列化器的序列化/反序列化规则的有所了解的话,应该知道:对于数据契约(DataContract)基于属性(Property)的数据成员(DataMember...那么,是不是我们要更新Value或者ReadOnly的数据成员(DataMember,不是属性名称)呢?这肯定不是我们想要的解决方案。...四、解决方案二:将数据成员定义在字段上而不是属性上 我们再换一种思维,之所以出现异常是在反序列化的时候调用Value属性的Set方法所致。如果在反序列化的时候不调用这个方法不就得了吗?...那么,如何才能避免对Value属性的Set方法的调用呢?方法很简单,那就是将数据成员定义在字段上,而不是属性上。...基于属性的数据成员在反序列化的时候不得不通过调用Set方法对数据项进行初始化,而基于字段的数据成员在反序列化的时候只需要直接对其复制就可以了。

    70660
    领券