Object Foundation框架 第一课

4个结构体  NSRange,NSPoint,NSSize,NSRect


简单解释:NSRange 字面上就可以看出是范围,比如字符串中的某个字符的起始位置,长度就用到它

                    NSPoint    就是点,也就是座标,注意是二维座标,不是三维

                    NSSize     尺寸大小,包括长度和宽度

                    NSRect   就是区域,point和size构成一个区域,所以Rect就是包含 NSPoint和NSSize


Foundation 框架

 定义了一些基础类,可以用于各种典型的cocoa程序

层次的根是NSObject类,定义了基本的对象属性和行为

的剩余部分由几组


Application 框架


实现图形、事件驱动用户界面所需的对象:窗口,对话框,按键,菜单,滚动条,文本输入框等;

由超过125个类和协议组成。所有的类最终都从Foundation框架的NSObject 类继承而来。

2.NSRange

typedef struct _NSRange {

unsigned int location;

unsigned int length;

}NSRange;


struct _NSRange  = NSRange

含义:

一个结构体,表示相关事物的范围。

location 字段为该范围的起始位置;

length字段为该范围内所含元素个数。

创建方式:

直接给字段赋值

应用c语言的聚合结构赋值机制

使用cocoa提供的快捷函数NSMakeRange()

例子:

对字符串取子串

  1. #import <Foundation/Foundation.h>  
  2.   
  3. int main (int argc, const char * argv[])  
  4. {     
  5.     //输出ipa  
  6.     NSString *homebrew = @"Imperial india pale ale(ipa)";  
  7.       
  8.     NSRange range = NSMakeRange(25, 3);  
  9.     //一下代码等价  
  10.    // NSRange range = {25,3};  
  11.     NSLog(@"beer shortname:%@",[homebrew substringWithRange:range]);  
  12.     return 0;  
  13. }  

结果是 ipa;


3.NSPoint

初始化 NSPoint 使用函数NSMakePoint


NSPoint p = NSMakePoint(10,45);


从一个结构体变量获取座标

float x = p.x;

float y = p.y;


4.NSSize


初始化NSSize


NSSize s = NSMakeSize(10,45)

从一个结构体变量获取width,heigth

float width = s.width;

float height = s.heigth;

5.NSRect

一个结构体,由点,大小组成而成;存储一个矩形的起始点和长度,宽度。

  1. #import <Foundation/Foundation.h>  
  2.   
  3. int main (int argc, const char * argv[])  
  4. {     
  5.     NSRect r1 = NSMakeRect(0, 0, 100, 120);  
  6.       
  7.     NSRect r2 = {0,0,100,120};  
  8.       
  9.     //对结构体最底层的成员赋值  
  10.     NSRect r3;  
  11.     r3.origin.x = 0.0;  
  12.     r3.origin.y = 0.0;  
  13.     r3.size.width = 100.0;  
  14.     r3.size.height = 120.0;  
  15.   
  16.       
  17.     return 0;  
  18. }  

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Q:

常见的数据都是c的struct而不是oc对象?

因为性能,oc对象是通过动态分配,而动态分配是一个代价较高的操作,会消耗大量的时间。

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


6.可变对象和不可变对象


创建一个oc对象后,该对象的内容不可更改,则称该对象为不可变对象。

仅可进行读操作,不能进行写操作;


该对象内容可以更改,则称为可变对象

即可进行读操作,也可进行写操作,还可改变大小。

7.NSString

NSString是不可变的,即一旦创建则不可改变,可对它执行各种读操作,但不能删除,添加字符,也不可改变内容。

NSString是一个对象类型,是NSObject的子类,具有NSObject的所有特性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章