黑馬程式設計師 09 Foundation框架之一

2021-06-28 12:33:25 字數 4568 閱讀 9216

1、nsrange

(1)、型別定義

typedef struct _nsrange  nsrange

注:nsuinteger即為

unsigned long

型別簡單示例:

用nsrange表示字串@"i love oc"

中 love

的範圍,

location = 2 

,length = 4 

用nsrange表示陣列

中12,13,14

的範圍,

location = 2 

,length = 3

(2)、建立結構體

nsrange r1 = ; 

nsrange r2 = ;

以上方法不常用,經常呼叫函式makerange

建立結構體

nsmakerange(nsuinteger loc, nsuinteger len)

例如:nsrange r3 = nsmakerange (2, 4);

(3)、結構體的使用示例

查詢字串love

在str

中的範圍,如果找不到,

length=0

,location=nsnotfound==-1

nsstring *str = @"i love oc";

nsrange range = [str rangeofstring:@"love"];

nslog(@"loc = %ld, length=%ld", range.location, range.length);

2、nspoint/cgpoint

(1)、型別定義

typedef cgpoint nspoint;
struct cgpoint ;
typedef struct cgpoint cgpoint;

注:(2

)、建立結構體

cgpoint p1 = ;

最常用的還是利用函式建立結構體

nsmakepoint(cgfloat x, cgfloat y)

cgpointmake(cgfloat x, cgfloat y)   // 最常用

示例:cgpoint p1 = nsmakepoint(10, 10);

nspoint p2 = cgpointmake(20, 20);// 最常用

原點表示cgpointzero

cgpointzero == cgpointmake(0, 0)

3、nssize/cgsize

(1)型別定義

typedef struct _nssize  nssize;
(2

)、建立結構體

相關函式

nsmakesize (cgfloat w, cgfloat h)

cgsizemake(cgfloat width, cgfloat height)

示例;

nssize s1 = cgsizemake(10, 15);

nssize s2 = nsmakesize(10, 15);

cgsize s3 = nsmakesize(10,15);

cgsizezero == cgsizemake(0, 0)

4、nsrect/cgrect

(1)型別定義

typedef struct _nsrect  nsrect;
(2

)、建立結構體

相關函式

cgrectmack(cgfloat x, cgfloat y, cgfloat width, cgfloat height)

cgmackrect (cgfloat x, cgfloat y, cgfloat w, gfloat h)

示例:

cgrect r1 = cgrectmake(0, 0, 10,15);

cgrect r2 = , };

cgrect r3 = ;

cgrect r4 = ;

cgrectzero

5、結構體轉為字串

一般輸出結構體的成員變數是逐個輸出,如

nslog(@"x=%f, y=%f, width=%f, height=%f", r1.origin.x, r1.origin.y, r1.size.width, r1.size.height);

這種方法比較麻煩,所以將結構體轉為字串,輸出字串

nsstring *str = nsstringfrompoint(p1);

nsstring *str = nsstringfromsize(s3);

nsstring *str = nsstringfromrect(r1);

nslog(@"%@", str);

6、結構體常用函式 (1

)cgpointequaltopoint

比較兩個點是否相同

bool b1= cgpointequaltopoint(cgpointmake(10, 10), cgpointmake(10, 10));

同理還有

cgrectequaltorect(cgrect rect1, cgrect rect2)

cgsizeequaltosize(cgsize size1, cgsize size2)

(2)cgrectcontainspoint

判斷點是否在矩形框中

bool b2 = cgrectcontainspoint(cgrectmake(50, 40, 100, 50), cgpointmake(60, 45));

注:使用這些cgpointequaltopoint

、cgrectcontainspoint

、cgpointzero

等函式要新增

coregraphics框架

1、nsstring : 

不可變字串 (1

)字串的建立

nsstring *s1 = @"jack";

nsstring *s2 = [[nsstring alloc] initwithstring:@"jack"];

nsstring *s3 = [[nsstring alloc] initwithformat:@"age is %d", 10];(2)

c/oc

字串轉換

c語言字串轉為

oc字串

nsstring *s4 = [[nsstring alloc] initwithutf8string:"jack"];

oc字串轉為

c語言字串

const char *cs = [s4 utf8string];

(3)讀取檔案內容

方法一nsstring *s5 = [[nsstring alloc] initwithcontentsoffile:@"/users/yang/desktop/1.txt" encoding:nsutf8stringencoding error:nil]; 

方法二nsurl *url = [[nsurl alloc] initwithstring:@"file:///users/yang/desktop/1.txt"];

nsstring *s6 = [[nsstring alloc] initwithcontentsofurl:url encoding:nsutf8stringencoding error:nil];

補充nsutf8stringencoding :用到中文就可以用這種編碼

url 表示資源路徑,格式:協議頭

://路徑

協議頭包括file://, ftp://

(4)字串的匯出

方法一[@"jack\njack" writetofile:@"/users/yang/desktop/my.txt" atomically:yes encoding:nsutf8stringencoding error:nil];

方法二nsurl *url = [nsurl fileurlwithpath:@"/users/yang/desktop/my2.txt"];

[str writetourl:url atomically:yes encoding:nsutf8stringencoding error:nil];

2、nsmutablestring : 可變字串,繼承自nsstring

常見使用示例

nsmutablestring *s1 = [nsmutablestring stringwithformat:@"my age is 10"];

nsrange range = [s1 rangeofstring:@"is"]; // 獲取

is的範圍

[s1 deletecharactersinrange:range];

nsstring *s2 = [nsstring stringwithformat:@"age is 10"];

// 拷貝乙份

s2的內容,並將新內容拼接到後面賦給s3

黑馬程式設計師學習筆記 OC之foundation框架

2 結構體 nsrange表示範圍的結構體。nspoint cgpoint表示座標點的結構體 nssize cgsize表示寬高的結構體 nsrect cgrect表示座標點 寬高的結構體 3 類字串 nsstring 字串類 nsmutablestring 易變字串類 nsarray 陣列類 ns...

黑馬程式設計師 day09

內部類的訪問規則 1,內部類可以直接訪問外部類的成員,包括私有成員。之所以可以直接訪問外部類中的成員是因為內部類中持有了乙個外部類的引用。格式 外部類名.this。2,外部類要訪問內部類,必須建立內部類物件。訪問格式 1,當內部類定義在外部類的成員位置上,而且非私有可以在外部其他類中直接建立內部類物...

黑馬程式設計師 09物件導向 4 多型

asp.net android ios開發 net培訓 期待與您交流!多型 事物的多種體現形態 體現 父類引用指向自己的子類物件 fu f new zi f.方法 好處 極大提高程式的擴充套件性 前提 必須是類與類之間有關係,繼承 extends 或者是實現 implements 通常存在覆蓋,只能...