4個結構體 nsrange,nspoint,nssize,nsrect
簡單解釋:nsrange 字面上就可以看出是範圍,比如字串中的某個字元的起始位置,長度就用到它
nspoint 就是點,也就是座標,注意是二維座標,不是三維
nssize 尺寸大小,包括長度和寬度
nsrect 就是區域,point和size構成乙個區域,所以rect就是包含 nspoint和nssize
foundation 框架
定義了一些基礎類,可以用於各種典型的cocoa程式
層次的根是nsobject類,定義了基本的物件屬性和行為
的剩餘部分由幾組
實現圖形、事件驅動使用者介面所需的物件:視窗,對話方塊,按鍵,選單,滾動條,文字輸入框等;
由超過125個類和協議組成。所有的類最終都從foundation框架的nsobject 類繼承而來。
2.nsrange
typedef struct _nsrange nsrange;
struct _nsrange = nsrange
含義:乙個結構體,表示相關事物的範圍。
location 欄位為該範圍的起始位置;
length欄位為該範圍內所含元素個數。
建立方式:
直接給字段賦值
應用c語言的聚合結構賦值機制
使用cocoa提供的快捷函式nsmakerange()
例子:對字串取子串
[cpp]view plain
copy
#import
intmain (
intargc,
const
char
* argv)
;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
乙個結構體,由點,大小組成而成;儲存乙個矩形的起始點和長度,寬度。
[cpp]view plain
copy
#import
intmain (
intargc,
const
char
* argv)
; //對結構體最底層的成員賦值
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的所有特性。
Object Foundation框架 第二課
nsstring 這是乙個最常用 oc類 1,既然是oc類,一般情況下是不需要主動釋放記憶體,因為oc類本身已經實現釋放功能 2,如果是 initwith 來建立乙個nsstring 物件,需主動釋放記憶體 3,一般情況下每個initwith 方法都有乙個對應的stringwith 靜態方法,如果是...
誰是第一學習深度學習框架
我的部落格即將入駐 雲棲社群 誠邀技術同仁一同入駐。第乙個深度學習框架該怎麼選 對於初學者而言一直是個頭疼的問題。本文中,來自 deepsense.ai 的研究員給出了他們在高階框架上的答案。在 keras 與 pytorch 的對比中,作者還給出了相同神經網路在不同框架中效能的基準測試結果。目前在...
YII框架學習 第一天
yii這個框架聽比爾說很不錯,寫的很優雅,於是乎,就好奇進入官網進行學習下,大yii框架。首先把自己的php環境配置到最低5.4,因為yii裡面用的全是簡化的陣列形式,這種簡化陣列形式,只有到5.4才支援 我用的5.3於是又重新配置了一套,使用php5.6,apaphe2.4.沒有的可以使用我整理好...