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()
例子:
對字符串取子串
- #import <Foundation/Foundation.h>
- int main (int argc, const char * argv[])
- {
- //輸出ipa
- NSString *homebrew = @"Imperial india pale ale(ipa)";
- NSRange range = NSMakeRange(25, 3);
- //一下代碼等價
- // NSRange range = {25,3};
- NSLog(@"beer shortname:%@",[homebrew substringWithRange:range]);
- return 0;
- }
結果是 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
一個結構體,由點,大小組成而成;存儲一個矩形的起始點和長度,寬度。
- #import <Foundation/Foundation.h>
- int main (int argc, const char * argv[])
- {
- NSRect r1 = NSMakeRect(0, 0, 100, 120);
- NSRect r2 = {0,0,100,120};
- //對結構體最底層的成員賦值
- NSRect r3;
- r3.origin.x = 0.0;
- r3.origin.y = 0.0;
- r3.size.width = 100.0;
- r3.size.height = 120.0;
- return 0;
- }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Q:
常見的數據都是c的struct而不是oc對象?因爲性能,oc對象是通過動態分配,而動態分配是一個代價較高的操作,會消耗大量的時間。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
6.可變對象和不可變對象
創建一個oc對象後,該對象的內容不可更改,則稱該對象爲不可變對象。
僅可進行讀操作,不能進行寫操作;
該對象內容可以更改,則稱爲可變對象
即可進行讀操作,也可進行寫操作,還可改變大小。
7.NSString
NSString是不可變的,即一旦創建則不可改變,可對它執行各種讀操作,但不能刪除,添加字符,也不可改變內容。
NSString是一個對象類型,是NSObject的子類,具有NSObject的所有特性。