`
blessdyb
  • 浏览: 235775 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Objective-C中NSValue的使用

阅读更多

        我们在C/C++开发中常会用到结构体来帮助我们简单封装基本数据类型,在Objective-C中我们也可以使用结构体来完成数据类型的封装。同时,Cocoa Touch还提供了一个NSValue来帮助我们更好地在开发中使用结构体。

        我们可以使用NSValue来辅助我们实现一些简单数据结构的封装。比如我们定义了一个简单的结构体类型

 

 

  typedef  struct {

             int id,

             float  height,

             unsigned char  flag

}MyTestStruct;
 

        此时,我们就可以使用MyTestStruct这个结构体来很容易地封装数据。如

 

 

    MyTestStruct   myTestStruct;

        myTestStruct.id=1;

        myTestStruct.height=23.0;

        myTestStruct.flag='A';

        NSValue *value = [NSValue valueWithBytes:&myTestStruct objCType:@encode(MyTestStruct)];
 

 

        在我们想取出*value 中的数据时,可以使用如下方式:

 

 

MyTestStruct  theTestStruct;

[valeu getValue:&theTestStruct];
 

 

之后就可以对theTestStruct的操作来取得其中的数据。

 

        对于NSValue 类的使用,还有一个地方就是我们在iPhone显示点或者其它几何图形时。比如我们想取得用户在屏幕上的点击轨迹,此时首先我们想到的就是使用CGPoint这个结构体来保存每一次点击的数据。此时,我们就可以使用NSValue类别中的+valueWithCGPoint:来帮助我们来为CG Framework提供数据。

 

 

 

 

 

分享到:
评论

相关推荐

    [Objective-c程序设计].杨正洪等.扫描版

    3.2 在面向对象的编程中使用间接24 3.2.1 过程式编程24 3.2.2 实现面向对象编程29 3.3 学习有关的术语33 3.4 Objective-C中的OOP34 3.4.1 @interface部分34 3.4.2 @implementation部分38 3.4.3 实例化对象40 3.4.4 ...

    从C&C++过渡到Objective-C

    Objective-C是一种强大的面向对象编程语言,它在Apple的生态系统中占据着核心地位,主要用于iOS、macOS以及其他Apple平台的应用程序开发。如果你已经掌握了C和C++的基础,过渡到Objective-C将会是一个自然且有益的...

    ObjectiveC 最经典最全的基础库

    根据给定的文件信息,以下是对Objective-C中最经典、最全面的基础库的深入解析,主要聚焦于几个核心类:NSString、NSMutableString、NSArray、NSMutableArray、NSDictionary、NSMutableDictionary以及NSValue。...

    iOS8-Swift-ObjectiveC混编开发Framework

    Swift的结构体和枚举不能直接在Objective-C中使用,因为它们不是Objective-C对象。然而,可以定义一个Objective-C兼容的类作为桥接,或者使用NSValue和NSManagedObject等Objective-C类来封装Swift值类型。 此外,...

    Object C调用c++例子

    然而,有时我们需要在Objective-C项目中使用C++代码,这时就需要理解如何进行跨语言调用。以下是一个关于"Objective-C调用C++"的知识点详解。 1. **Objective-C与C++的兼容性**: Objective-C是C语言的超集,因此...

    在 iOS 上绘制多个图层 的工具_Objective-C_代码_下载

    本教程将深入探讨如何使用Objective-C来创建一个可以绘制多个图层的工具。这个工具可以帮助开发者实现复杂的图形用户界面,例如绘图应用或者数据可视化。 首先,我们需要了解Core Graphics框架,它是iOS中用于2D...

    swift和OC混合编程实例源代码

    2. **桥接头文件**:每个Swift项目都会有一个桥接头文件(通常命名为`ProjectName-Bridging-Header.h`),在这里你可以声明希望在Objective-C中使用的Swift类和函数。 3. **访问控制**:Swift的访问控制规则会影响...

    test_c_plusplus

    4. **C++对象的桥接**: 通过`NSValue`或`Boxing`技术,可以将C++对象封装到Objective-C的对象中,从而在Objective-C代码中使用。 5. **内存管理**: C++遵循其自己的内存管理规则(例如,智能指针),而Objective-C...

    objc-distance:Objective-C 中图层距离的模板

    在iOS开发中,Objective-C是一种广泛使用的编程语言,特别是在构建用户界面时。"objc-distance: Objective-C 中图层距离的模板"这个项目可能是为开发者提供一个工具或模板,用于计算和处理图形用户界面中图层之间的...

    iOS开发总结

    在Objective-C中代码混编涉及将C语言代码嵌入到Objective-C程序中,而代码中的字符串换行则常用反斜杠 "\" 来实现。此外,不要在代码中调用[super release],因为它是自动完成的。判断一个字符串是否包含另一个字符...

    IOS 开发总结

    - NSValue类:说明了如何使用NSValue类来表示其他值,如结构体或C语言数据类型。 - 判断对象等价性:介绍了如何判断两个对象是否相等。 - nil的操作:解释了在Objective-C中nil的特殊行为和用途。 2. iOS特定...

    DBSCAN:Objective-C Implementation of Density-Based Spatial Clustering of Applications with Noise (基于密度的聚类算法)

    具有噪声的基于密度的应用程序空间聚类的 Objective-C 实现 基于速度的算法 效果图 用法: NSArray points = @[[ NSValue valueWithCGPoint: CGPointMake ( 60 , 40 )], [ NSValue valueWithCGPoint: ...

    kv0的原理和使用

    - **属性类型**:KVO不支持基本数据类型的属性,只能用于Objective-C对象或者使用`NSValue`封装的基本类型。 ### KVO的例子 在实际应用中,KVO常用于界面的实时更新。例如,一个模型对象的属性值改变时,对应的界面...

    ios瀑布流布局文件

    对于Storyboard创建的UICollectionView,你还可以在Swift或Objective-C代码中设置布局属性,如设置列数、间距等。例如,你可以通过以下代码设置列数: ```swift let layout = collectionView.collectionViewLayout ...

    获取键盘高度

    本篇将详细介绍如何在Objective-C中动态获取键盘的高度,并提供相关的编程实践。 一、键盘通知与观察者模式 在iOS中,系统提供了键盘显示和隐藏的通知,我们可以利用这些通知来获取键盘的高度。首先,我们需要导入...

Global site tag (gtag.js) - Google Analytics