iOS開發_Foundation架構

來源:互聯網
上載者:User

標籤:

1.Foundation是架構的基礎,和UI無關;UIKit是基礎的UI類庫

2.常用結構體:NSStringFromRange ;NSStringFromPoint;NSStringFromSize;NSStringFromRect;均不是oc對象,存到數組時需轉化為NSValue;

3.NSDate:字串轉化為日期時,轉化後的日期是字串的日期-8H;

4.1.NSString:NSString *[email protected]"OC string";//ObjC字串需要加@,並且這種方式建立的對象不需要自己釋放記憶體;

4.2.NSComparisonResult result2= [@"abc" compare:@"aBc"];//如果是[@"abc" caseInsensitiveCompare:@"aBc"]則忽略大小寫比較

4.3.NSRange range=[@"abcdefabcdef" rangeOfString:@"cde"];//注意如果遇到cde則不再往後面搜尋,如果從後面搜尋或其他搜尋方式可以設定第二個options參數

4.4.1.檔案寫入:[str11 writeToFile:path1 atomically:YES encoding:NSUTF8StringEncoding error:&error1];//automically代表一次性寫入,如果寫到中間出錯了最後就全部不寫入

4.4.2.路徑操作:http://www.cnblogs.com/kenshincui/p/3885689.html

4.5可變字串:注意雖然initWithCapacity分配字串大小,但是不是絕對的不可以超過此範圍,聲明此變數對效能有好處

5.1.[array2 makeObjectsPerformSelector:@selector(showMessage:) withObject:@"Hello,world!"];//執行所有元素的showMessage方法,後面的參數最多隻能有一個

5.2.

[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {        NSLog(@"method3:index %zi is %@",idx,obj);        if(idx==2){//當idx=2時設定*stop為YES停止遍曆            *stop=YES;        }    }];

 5.3.排序:

//方法4 通過描述器定義定序    Person *person4=[Person personWithName:@"Jack"];    Person *person5=[Person personWithName:@"Jerry"];    Person *person6=[Person personWithName:@"Tom"];    Person *person7=[Person personWithName:@"Terry"];    NSArray *array6=[NSArray arrayWithObjects:person4,person5,person6,person7, nil];    //定義一個排序描述    NSSortDescriptor *personName=[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];    NSSortDescriptor *accountBalance=[NSSortDescriptor sortDescriptorWithKey:@"account.balance" ascending:YES];    NSArray *des=[NSArray arrayWithObjects:personName,accountBalance, nil];//先按照person的name排序再按照account的balance排序    NSArray *array7=[array6 sortedArrayUsingDescriptors:des];    NSLog(@"%@",array7);    /*結果:     (         "name=Jack",         "name=Jerry",         "name=Terry",         "name=Tom"     )     */

 6.裝箱拆箱:將基礎資料型別 (Elementary Data Type)轉化為oc對象成為裝箱;反之成為拆箱;NSNumber不能接收結構體,NSValue可以。

6.1.對自訂結構體的裝箱拆箱:

typedef struct {    int year;    int month;    int day;} Date;//NSNumber是NSValue的子類,而NSValue可以封裝任何類型,包括結構體void test1(){    //如果我們自己定義的結構體封裝    Date date={2014,2,28};    char *[email protected](Date);    NSValue *value3=[NSValue value:&date withObjCType:type];//第一參數傳遞結構體地址,第二個參數傳遞類型字串    NSArray *array2=[NSArray arrayWithObject:value3];    NSLog(@"%@",array2);    /*結果:     (        "<de070000 02000000 1c000000>"     )     */        Date date2;    [value3 getValue:&date2];//取出對應的結構體,注意沒有傳回值    //[value3 objCType]//取出封裝內容的類型    NSLog(@"%i,%i,%i",date2.year,date2.month,date2.day); //結果:2014,2,28    }

7.NSNull:我們有時候確實想在資料或字典中儲存nil值而不是作為結束標記怎麼辦呢?這個時候需要使用NSNull,這個類是一個單例,只有一個null方法

[email protected]作為字面量可以裝箱

9.反射:

9.1:[person1 isKindOfClass:[NSObject class]]//判斷一個對象是否為某種類型(如果是父類也返回YES)

9.2:[person1 isMemberOfClass:[NSObject class]]//判斷一個對象是否是某個類的執行個體化對象,結果:0

9.3動態產生一個類:

//動態產生一個類    NSString *[email protected]"Person";    Class myClass=NSClassFromString(className);//根據類名產生類    Person *person2=[[myClass alloc]init]; //執行個體化    [email protected]"Kaoru";    NSLog(@"%@",person2);//結果:name=Kaoru    //類轉化為字串    NSLog(@"%@,%@",NSStringFromClass(myClass),NSStringFromClass([Person class])); //結果:Person,Person    //調用方法    NSString *[email protected]"showMessage:";    SEL mySelector=NSSelectorFromString(methodName);    Person *person3=[[myClass alloc]init];    [email protected]"Rosa";    [person3 performSelector:mySelector withObject:@"Hello,world!"]; //結果:My name is Rosa,the infomation is "Hello,world!".    //方法轉化為字串    NSLog(@"%@",NSStringFromSelector(mySelector)); //結果:showMessage:

 

iOS開發_Foundation架構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.