三大特性與數據類型

    //引用Foundation框架
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Student.h"
//程序入口:返回類型 main(相關的參數){
    //函數體

    //return 返回類型參數;
//}
int main(int argc, const char * argv[]) {
    
    //NSLog 爲輸出語法
    NSLog(@" Hello, DA Xiong " );
    
    //引入頭文件#import "Person.h"
    //實例化Person對象newPerson
    Person *newPerson=[[Person alloc]init];
//    設置對象age屬性的值
    [newPerson setAge:1000];
//    獲取newPerson對象age的值,利用對象方法getAge,這個方法因爲有返回值能夠直接打印或者用一個相應類型的變量的接受
    int age=[newPerson getAge];
    NSLog(@"person age:%i",age);
    //類方法調用對象方法
    [Person print];
    
    //---------複習-------
//    實例化對象的步驟:
//    1.建立一個類 2.引入頭文件 #import 「頭文件」 3.實例化對象 類 *對象名=[[類名 alloc]init];
    
//    關於方法
//    方法書寫:
//    方法類型 (返回值類型)方法名 :(參數類型)參數名
//    類方法:  +
//    對象方法: —
//    類方法不可使用類屬性
    
    //------關於繼承
    //子類繼承父類以後可使用父類的屬性和方法
    Student *student=[[Student alloc]init];
    [student setAge:20];
    NSLog(@"student age :%i",[student getAge]);
    [student method];
    
//    子類繼承父類,子類可使用父類的屬性和方法,但父類不能使用子類獨有的方法[newPerson method];
    
    
    Person *person=[[Student alloc]init];
    [person setAge:28];
    NSLog(@"person age:%i",[person getAge]);
    
    //多態形式,父類參數能夠傳入子類對象
    [person printf:student];
     //建立一個不可變的字符串
    NSString *testString = @"jack";
    
    //建立一個實例化後的對象
    NSMutableString *testMuString = [[NSMutableString alloc]init];
    NSMutableString *testMuStringI = [NSMutableString new];
    //建立一個實例化後的對象並給必定變量一個初始的內存空間
    NSMutableString *testMuStringII = [[NSMutableString alloc]initWithCapacity:10];
    //建立一個對象,注意:調用的是類方法建立
    NSMutableString *testMuStringIII = [NSMutableString string];
    //給一個可變的字符串追加一個字符串 append
    [testMuString appendString:@"123"];
    NSLog(@"testMuString append String is: %@", testMuString);
    //給一個可變的字符串修改一個字符串 stringReplacing
    NSString *replaceString = [testMuString stringByReplacingOccurrencesOfString:@"123" withString:@"456"];
    NSLog(@"testMuString replacing String is: %@", replaceString);
    
    //給一個可變的字符串刪除一個字符串
    [testMuString deleteCharactersInRange:NSMakeRange( 1,2 )];
    NSLog(@"testMuString delete String is: %@", testMuString);
    
    //NSArray
    //數組的特色: 有序,類型相同
    //定義一個不可變的數組
    NSArray *testArray = @[ @"1" , @"2", @"3" ];
    //打印數組,取出下標
    NSLog(@"testArray is %@, 下標爲0的數爲:%@", testArray, testArray[0] );
    //建立一個可變的數組
    NSMutableArray *testMuArray = [[NSMutableArray alloc]init];
    //建立一個可變的數組,給予一個初始的內存空間
    NSMutableArray *testMuArrayI = [[NSMutableArray alloc]initWithCapacity:10];
    
    //給數組追加一個元素  add
    [testMuArrayI addObject:@"4"];
    NSLog(@"testMuArrayI addObject is : %@", testMuArrayI );
    
    //修改一個數組下標元素的值
    testMuArrayI[0] = @"1";
    [testMuArrayI setObject:@"2" atIndexedSubscript:0];
    NSLog(@"testMuArrayI modify is : %@", testMuArrayI );
    
    //刪除一個數組裏面的元素
    [testMuArrayI removeObject:@"2"];
    
    //刪除數組的所有元素
    [testMuArrayI removeAllObjects];
    
    NSLog(@"testMuArrayI remove is: %@", testMuArrayI);
    
    //NSDictionary 字典
    //字典一般是以鍵值對的形式存在,key-value,例如 「name」 : "jack" , name爲key,value爲jack
    //記住:數組是有序的,字典是無序
    //注意:不可變的家庭裏 NSString @"",NSArray @[], NSDictionary @{}
    NSDictionary *testDict = @{
            @"name" : @"jack", //鍵值對之間以逗號,分割
            @"age" : @"17" //鍵值對
    };
    NSLog(@"testDict: %@", testDict );
    //建立一個可變的字典
    NSMutableDictionary *testMuDict = [[NSMutableDictionary alloc]init];
    //追加一對鍵值對
    [testMuDict addEntriesFromDictionary: @{ @"mother" : @"rose" }];
    //修改一對鍵值對
    testMuDict[@"name"] = @"daXiong";
    //若是不存在添加一對鍵值對,若是存在修改這個鍵值對
    [testMuDict setValue:@"daDaXiong" forKey:@"name"];
    [testMuDict setValue:@"daDaXiong" forKey:@"nick"];
    NSLog(@"testMuDict: %@", testMuDict );
    //刪除一對鍵值對
    [testMuDict removeObjectForKey:@"nick"];
    //刪除所有鍵值對
    [testMuDict removeAllObjects];
    NSLog(@"testMuDict: %@", testMuDict );
    
    //NSNumber:一般爲封裝基本的數據類型,注意:NSNumber封裝後通常類型爲對象類型 例如 @1 爲對象類型
    //基本的數據類型:int float char double bool
    NSNumber *number1 = @1;
    NSNumber *number2 = @1.1f;
    NSNumber *number3 = @'c'; //注意打印出來C是ASCII
    NSNumber *number4 = @YES;
    
    NSLog(@"number1 is %@ , number2 is %@ ,number3 is %@, number4 is %@", number1, number2, number3, number4 );
    
    //一、遍歷一個字典
//    for (int i=0; i<[testDict count]; i++) {
//        NSLog(@"%@",);
//    }
    //遍歷字典是能夠遍歷字典的鍵經過for 的方式:for ( 變量名 in 字典)。變量名能夠是任何,可是得到的是鍵
    
    
    for (id key in testDict) {
        NSLog(@"dict :%@",key);
        NSLog(@"value :%@",[testDict valueForKey:key]);
        
    }
//    或者咱們經過獲取字典的全部鍵或全部值的方法,得到的數組遍歷獲得所需內容
    NSLog(@"字典的全部值:%@",[testDict allValues]);//返回NSArray,是得到字典全部值
    //在值的數組裏遍歷
    for (id key in [testDict allValues] ) {
        NSLog(@"dict :%@",key);
        //        NSLog(@"value :%@",[testDict valueForKey:key]);
        
    }
    
    
    //二、遍歷一個數組
    for (int i=0;i<[testArray count];i++){
        NSLog(@"數組遍歷元素:%@",testArray[i]);
   
    }
    
    for (NSString *object in testArray) {
         NSLog(@"數組遍歷元素:%@",object);
    }

//--------------    結構體    ----------------
    
    //-----NSRange----描述範圍:參數爲,位置和長度
    NSRange range=NSMakeRange(2, 3);
    NSLog(@"range location:%li, length:%li",range.location ,range.length);
    
    //------NSPoint-----描述位置
    NSPoint point =NSMakePoint(1, 3);
    NSLog(@"point x:%.2f y:%.2f",point.x,point.y);
    
    //----NSSize-----描述大小(寬高)
    NSSize size=NSMakeSize(34, 88);
    NSLog(@"size weight :%.2f height:%.2f ",size.width,size.height);
    
    //------NSRect-----描述位置和大小
    NSRect rect =NSMakeRect(2, 3, 67.3, 23.2);
    NSLog(@"%.2f %.2f %.2f %.2f",rect.origin.x,rect.origin.y ,rect.size.width, rect.size.height);
    
    NSLog(@"",rect);
    
    //-------NSValue 用來封裝結構體,是NSNumber的父類------
    //封裝NSRect
    NSValue *rectValue=[NSValue valueWithRect:rect];
    NSLog(@"Value Rect:%@",rectValue);

//    封裝NSPoint
    NSValue *pointValue=[NSValue valueWithPoint:point];
   
    
    NSArray *arrayWithStruct=@[rectValue,pointValue];
    
    for (int i=0; i<[arrayWithStruct count]; i++) {
        NSLog(@"%@",arrayWithStruct[i]);
        
        NSValue *pointV=arrayWithStruct[1];
        //NSValue 能夠轉化爲響應的結構體類型

        NSPoint po=[pointV pointValue];
        NSRect re=[rectValue rectValue];
        NSLog(@"%.2f",re.size.width);
    }
    
    //經過枚舉的方式得到字典的值
    //---------按值枚舉
    //像字典請求一個枚舉器
    NSEnumerator *enumI=[testDict objectEnumerator];
//    定義接受下一個枚舉元素的變量
    NSString *object;
//    經過循環逐一獲取枚舉元素
    while (object = [enumI nextObject] ) {
        NSLog(@"======%@",object);
    }
    
//  -------------  按鍵枚舉
    //向字典請求一個枚舉器
    NSEnumerator *enumII=[testDict keyEnumerator];
    //    定義接受下一個枚舉元素的變量
    NSString *objectII;
    //    經過循環逐一獲取枚舉元素
    while (objectII = [enumII nextObject] ) {
        NSLog(@"======%@",objectII);
    }
    
    //經過枚舉的方式得到數組的值
//    向數組請求一個枚舉器
    NSEnumerator *enumIII=[testArray objectEnumerator];
    //    定義接受下一個枚舉元素的變量
    NSString *objectIII;
    //    經過循環逐一獲取枚舉元素
    while (objectIII = [enumIII nextObject] ) {
        NSLog(@"======%@",objectIII);
    }
相關文章
相關標籤/搜索