Objective-C基础笔记(7)Foundation中的经常使用结构体

一、NSRange

NSRange的定义:

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

NSRanage的使用:

    NSRange range = NSMakeRange(8, 10);

    NSLog(@"location:%zi", range.location);
    NSLog(@"length:%zi", range.length);

    NSString *str = NSStringFromRange(range);
    NSLog(@"%@", str);

二、NSPoint

NSPoint的定义:

typedef CGPoint NSPoint;

struct CGPoint {
  CGFloat x;
  CGFloat y;
};
typedef struct CGPoint CGPoint;

NSPoint的使用:

    NSPoint p;
    p.x = 10;
    p.y = 10;

    p = NSMakePoint(11, 11);

    //常见的方式
    p = CGPointMake(12, 12);

    NSString * str = NSStringFromPoint(p);
    NSLog(@"%@", str);

三、NSSize

NSSize的定义:

typedef CGSize NSSize;

struct CGSize {
  CGFloat width;
  CGFloat height;
};
typedef struct CGSize CGSize;

NSSize的使用:

    NSSize s;
    s.width = 100.1;
    s.height = 100.3;

    s = NSMakeSize(12.3, 16.9);

    s = CGSizeMake(15.3, 19.2);

    NSString *str = NSStringFromSize(s);
    NSLog(@"%@", str);

四、NSRect

NSRect的定义:

typedef CGRect NSRect;

struct CGRect {
  CGPoint origin;
  CGSize size;
};
typedef struct CGRect CGRect;

NSRect的使用:

    NSRect r;
    //r.origin.x = 11;
    //r.origin.y = 13;
    r.origin = NSMakePoint(50, 50);
    r.size = NSMakeSize(60, 60);

    r = NSMakeRect(20, 20, 30, 30);

时间: 2024-08-23 23:13:33

Objective-C基础笔记(7)Foundation中的经常使用结构体的相关文章

【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型

[Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698.html 写作本系列文章时使用的是Unity5.3. 写代码之前: 当然啦,如果Unity都没安装的话肯定不会来学Unity Shaders吧? 阅读本系列文章之前你需要有一些编程的概念. 在VS里面,Unity Shaders是没有语法高亮显示和智能提示的,VS党可以参考一下这篇文章使代码高亮显示

[转]站在OC的基础上快速理解Swift的类与结构体

(阅读此文章前,您已经有一定的Object-C语法基础了!) 2014年,Apple推出了Swift,最近开始应用到实际的项目中. 首先我发现在编写Swift代码的时候,经常会遇到Xcode不能提示,卡顿,直接闪退等问题,尤其是在Swift和OC混编时.(不知道其他开发者是否也有这样的经历,但是我相信这样的问题,很快会得到解决) 然后感觉Swift并不像网上很多朋友说的那样简单.有很多细节问题是值得注意的,甚至有很多思路是颠覆了传统的开发语言的!又有很多特性是结合了其他编程语言的优点! Swif

C语言中的系统时间结构体类型

在C语言涉及中经常需要定时触发事件,涉及到获取系统时间,其结构体类型有多种.Unix/Linux系统下有以下几种时间结构: 1.time_t 类型:长整型,一般用来表示从1970-01-01 00:00:00时以来的秒数,精确度:秒:由函数time()获取: 该类型定义在头文件 /usr/include/sys/time.h 中: #define _TIME_T       typedef   long   time_t;             #endif 函数定义:time_t   tim

《从零开始学Swift》学习笔记(Day 25)——类和结构体定义

原创文章,欢迎转载.转载请注明:关东升的博客  Swift中的类和结构体定义的语法是非常相似的.类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下: class 类名 {     定义类的成员 } struct 结构体名 {     定义结构体的成员 } 从语法格式上看,Swift中的类和结构体的定义更类似于Java语法,不需要像C++和Objective-C那样把接口部分和实现部分放到不同的文件中. 下面来看一个示例: class Employee {     

Swift 2.0学习笔记(Day 25)——类和结构体定义

原创文章,欢迎转载.转载请注明:关东升的博客 Swift中的类和结构体定义的语法是非常相似的.类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下: class 类名 { 定义类的成员 } struct 结构体名 { 定义结构体的成员 } 从语法格式上看,Swift中的类和结构体的定义更类似于Java语法,不需要像C++和Objective-C那样把接口部分和实现部分放到不同的文件中. 下面来看一个示例: class Employee { //定义的类 var no

Linux中表示“时间”的结构体和相关函数

转载于:http://blog.chinaunix.net/uid-25909722-id-2827364.html Linux中表示“时间”的结构体和相关函数 2011-09-13 17:01:13 分类: C/C++ 在Linux系统中,表示“时间”概念的结构体有多个,相关的时间处理函数也有很多,给人以很混乱的感觉.导致了当我们真正要使用这些结构体和函数的时候,却不知道到底该用哪个结构体和哪些函数.有必要加以归纳总结一下.通过查看头文件/usr/include/time.h 和 /usr/i

UNITY3D c#脚本中处理类与结构体的区别

1.在C#中结构体类型定义时,成员是不能初始化的,这样就导致了,定义结构体变量时,变量的所有成员都要自己赋值初始化.但对于类,在定义类时,就可以初始化其中的成员变量,所以在定义对象时,对象本身就已经有了初始值,你可以自己在重新给个别变量赋值.(注意在C++中,类的定义中是不能初始化的,初始化要放在构造函数中) 2.结构体变量 和类对象 进行值传递时,结构体变量进行的就是值传递,而类对象进行的是引用传递,或者说传递的是指针,这样在函数中改变参数值,结构体对象的值是不变的,而类对象的值是变化了. 下

C#中使用反射获取结构体实例

原文:C#中使用反射获取结构体实例 一般用反射获取类对象的实例比较简单,只要类有一个无参构造函数或没有显示声明带参的构造函数即可使用如下代码 static void Main(string[] args) { Type type = typeof(MyObject); object obj = type.GetConstructor(Type.EmptyTypes).Invoke(null); Console.WriteLine(obj); } class MyObject { } 之前我一直没

在OC的基础上快速理解Swift的类与结构体

Swift中,类和结构体都是对数据和方法进行封装的常用做法!首先我们来看看他们的共同之处: 都可以有属性和方法: 都有构造器: 都支持附属脚本: 都支持扩展: 都支持协议. 然后我们来看看他们的不同之处: 类有继承: 结构体有一个自动生成的逐一初始化构造器: 在做赋值操作时,结构体总是被拷贝(Array有特殊处理): 结构体可以声明静态的属性和方法: 从设计模式的角度来分析,类的设计更侧重于对功能的封装,而结构体的设计更侧重于对数据的封装.(汽车与书架来区分类与结构体) 一.构造过程 1. 默认