A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© unnamed 中级黑马   /  2015-7-8 13:07  /  1385 人查看  /  2 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

1.结构体



NSPoint和CGPoint的关系:
typedef CGPoint NSPoint;  

NSSize和CGSize的关系:
typedef CGSize NSSize;

NSRect和CGRect的关系:
typedef CGRect NSRect;  

NSRange:
//NSRange r1 = {6, 6}; // 开发中不用  
//NSRange r2 = {.location = 6, .length = 6};//开发中不用  
//NSRange r3 = NSMakeRange(6,6); // 掌握  
// 查找某个字符串在str中的范围

// 如果找不到,length=0,location=NSNotFound== LONG_MAX ,%i输出为-1,%ld输出为能表示点最大整数


// @"i love you"  // 求you的范围

str =@” I love you”;  
NSRange range = [str rangeOfString:@"you"];  
NSLog(@"loc = %i, length=%ld", range.location, range.length);  

NSPoint/CGPoint:
创建一个点常用方法:

CGPoint p1 = NSMakePoint(10, 10);  
CGPoint p2 = CGPointMake(20, 20);// 最常用  

NSString : 不可变字符串

void stringCreate()  
{  
    /*
     1.字符串的创建
     */  
    NSString *s1 = @"jack";  

    //NSString *s2 = [[NSString alloc] initWithString:@"jack"];  

    NSString *s3 = [[NSString alloc] initWithFormat:@"age is %d", 10];  

    // C字符串 --> OC字符串  
    NSString *s4 = [[NSString alloc] initWithUTF8String:"jack"];  
    // OC字符串 --> C字符串  
    const charchar *cs = [s4 UTF8String];  

    // NSUTF8StringEncoding 用到中文就可以用这种编码  
    NSString *s5 = [[NSString alloc] initWithContentsOfFile:@"/Users/a002/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];  
}  


NSMutableString : 可变字符串

NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];  
NSLog(@”%@s1”);  
// 拼接内容到s1的后面  
[s1 appendString:@" 11 12"];  
NSLog(@”%@s1”);  

// 获取is的范围  
NSRange range = [s1 rangeOfString:@"is"];  
[s1 deleteCharactersInRange:range];  
NSLog(@”%@s1”);  


NSURL :
// URL : 资源路径

    // 协议头://路径

    // file://

    // ftp://

// NSURL *url = [[NSURLalloc] initWithString:@"file:///Users/a002/Desktop/1.txt"];  
// NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"]; 从网页上读取  
   NSURL *url = [NSURL fileURLWithPath:@"/Users/a002/Desktop/1.txt"];  

    NSString *s6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];  
    NSLog(@"s6=\n%@", s6);  

NSArray :不可变数组

NSArray的创建

NSArray *array2 = [NSArray arrayWithObject:@"jack"];      
// nil是数组元素结束的标记  
NSArray *array3 = [NSArray arrayWithObjects:@"jack", @"rose", nil nil];<strong>  
lt;/strong>  

快速创建一个NSArray对象
NSArray *array4 = @[@"jack", @"rose", @"4324324"];  
NSArray中元素的访问
NSLog(@"%@", [array3 objectAtIndex:1]);     
//array3[1];  
NSLog(@"%@", array3[0]);  




NSMutableArray : 可变数组

错误写法:

// @[] 只是创建不可变数组NSArray  
//错误写法  
    NSMutableArray *array = @[@"jack", @"rose"];  

可变数组的基本使用

void use()  
{  
    NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil nil]; // nil是数组元素结束的标记  

    // 添加元素  
    [array addObject:[[Person alloc] init]];  

    [array addObject:@"jack"];  

    // 删除元素  
    //[array removeAllObjects];  
    // 删除指定的对象  
    // [array removeObject:@"jack"];  
    [array removeObjectAtIndex:0];  

    // 错误写法  
    // [array addObject:nil];  


    NSLog(@"%@", array);  

    NSLog(@"%ld", array.count);  
}  


遍历数组3种方式:

Person *p = [[Person alloc] init];  

NSArray *array = @[p, @"rose", @"jack"];  

方式一:
[objc] view plaincopy
for (int i = 0; i<array.count; i++)  
{  
  NSLog(@"%@", array[i]);  
}  

方式二:

id obj代表着数组中的每一个元素
int i = 0; for (id obj in array) { // 找出obj元素在数组中的位置 NSUInteger i = [array indexOfObject:obj]; NSLog(@"%ld - %@", i, obj); //i++; if (i==1) { break; } }
方式三:

[array enumerateObjectsUsingBlock:  

// 每遍历到一个元素,就会调用一次block  
// 并且当前元素和索引位置当做参数传给block  
^(id obj, NSUInteger idx, BOOLBOOL *stop)  
{  
     NSLog(@"%ld - %@", idx, obj);  


     if (idx == 0)  
     {  
         // 停止遍历  
         *stop = YES;  
     }  

}];  


NSSet\NSMutableSet
NSSet和NSArray的对比

共同点

* 都是集合,都能存放多个OC对象

* 只能存放OC对象,不能存放非OC对象类型(基本数据类型:int、char、float等,结构体,枚举)

* 本身都不可变,都有一个可变的子类



不同点

* NSArray有顺序,NSSet没有顺序

set的基本使用

void test()  
{  
    NSSet *s = [NSSet set];  

    NSSet *s2 = [NSSet setWithObjects:@"jack",@"rose", @"jack2",@"jack3",nil];  

    // 随机拿出一个元素  
    NSString *str =  [s2 anyObject];  

    NSLog(@"%@", str);  

    //NSLog(@"%ld", s2.count);  
}

NSMutableDictionary
     字典  

     key ----> value

     索引 ----> 文字内容

     里面存储的东西都是键值对

*  无序

*  快速创建(不可变):@{key1 : value1,  key2 : value2}

*  快速访问元素:字典名[key]


注意:字典不允许有相同的key,但允许有相同的value(Object)


字典的遍历:

NSDictionary = @{@"name1": @"David",  name2: @"Jhon"}  
NSArray *keys = [dict allKeys];  

方式一:

for (int i = 0; i<dict.count; i++)  
        {  
            NSString *key = keys[i];  
            NSString *object = dict[key];  


            NSLog(@"%@ = %@", key, object);  
    }

方式二:

   [dict enumerateKeysAndObjectsUsingBlock:  
    ^(id key, id obj, BOOLBOOL *stop) {  
        NSLog(@"%@ - %@", key, obj);  

        // *stop = YES;  
}]


2 个回复

倒序浏览
点赞。。。还没有学到,不过应该是重点
回复 使用道具 举报
好详细,还没学到,先膜拜下,话说中间那几个表情是闹哪样?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马