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的所有特性。

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