在论OC中foundation框架(上)

keil自动分配SDRAM空间设置使用 1.修改.sct文件。 阅读详情

 Foundation框架

    NSString 是一个不可变得字符串,它的所有产生其他字符串方法都是生成一个新的字符串。

        字符串的创建

            1、字面量(常量字符串地址是相同的,它们就是同一个)它存储在常量区中

            NSString *str = @"saas";

            NSString *str1 = @"saas"

            2、快捷的构造方法(存在堆里面) 第二种的运行效率比第三种运行效率高

            NSString *str = [NSString stringWithFormat:@"dsa%d",10];

            3、初始化方法(存放在堆里面)

            NSString *str = [[NSString alloc]initWithFormat:@"adsas%d",10];

     

        字符串的获取

            1、获取字符的长度

             NSString *str = @"dasddas";

             long length = [str length];

            2、获取子串

             NSString *str = @"dasddas";

             NSString *str1 = [str substringFromIndex:3];//从第三个位置开始截取,包含索引的位置。下标是从0开始

 

             NSString *str1 = [str substringToIndex:3];//从第0个位置开始截取,到索引的位置结束。但不包含第索引的位置,下标是从0开始。

             NSRange range = NSMakeRange(2, 4);

 

             NSString *str1 = [str substringWithRange:range];//从第2个字符串的位置开始截,一共截4个字符。

             NSLog(@"%@",str1);

            3、获取某个子串所在父串的区间

             NSRange range = [str rangeOfString:@"dd"];

             if(range.location == NSNotFound){

                NSLog(@"字符串中没有这个子串");

             }

             NSLog(@"%@",NSStringFromRange(range));

 

            4、截取字符串

             NSString *str1 = @"<itheima>IT黑马</itheima>";

             NSRange range = [str1 rangeOfString:@">"];//只会与第一个匹配

             NSString *str2 = [str1 substringFromIndex:range.location+1];

             NSLog(@"%@",str2);

             NSRange range1 = [str2 rangeOfString:@"<"];

             NSString *str3 = [str2 substringToIndex:range1.location];

             NSLog(@"%@",str3);

            

            5、截取单个字符

             NSString *str = @"wsajkl";

             unichar c = [str characterAtIndex:2];

             NSLog(@"%c",c);

 

            6、字符串的判断

             NSString *str1 = @"abc";

             NSString *str2 = @"abc";

             if(str1 == str2){// == 是比较地址 | equal比较的是值

                NSLog(@"相等了");

             }

             NSString *str3 = [NSString stringWithFormat:@"abc"];

             if(str1 == str3){// == 是比较地址 | equal比较的是值

                NSLog(@"相等了");

             }else{

                NSLog(@"看到了没?");

             }

             if([str1 isEqualToString:str3]){// == 是比较地址 | equal比较的是值

                NSLog(@"相等了");

             }else{

                NSLog(@"看到了没?");

             }

 

 

            7、自定义一个比较字符串的方法

            .m

             @implementation NSString (NSString_CZ)

             - (BOOL)myIsEqual:(NSString *)other{

             //判断是否是同一个字符串

             if(self == other){

                return YES;

             }

             //如果长度不同,则内容肯定不同

             if(self.length != other.length){

                return NO;

             }

             //一个一个进行比较

             for(int i = 0 ; i < self.length ; i++){

                unichar c = [self characterAtIndex:i];

                unichar otherC = [other characterAtIndex:i];

                if(c != otherC){

                    return NO;

                }

             }

                return NO;

             }

             @end

 

 

            .h

             @interface NSString (NSString_CZ)

             - (BOOL)myIsEqual:(NSString *)other;

             @end

           main.m

             NSString *str = @"hahahaha";

             NSString *str1 = @"hahahaha";

             if([str myIsEqual:str1]){

                NSLog(@"哈哈相等了");

             }else{

                NSLog(@"我擦么相等");

             }

            

            8、判断前缀

             BOOL isHttp = [str hasPrefix:@"http://"];

             

            9、判断后缀

             BOOL isPng = [str hasSuffix:@".png"];

 

 

            10、compare的用法(主要用在排序中)

             NSString *str = @"hahahaha";

             NSString *str1 = @"hahahaha";

             NSComparisonResult result = [str compare:str1];

             //   NSOrderedAscending = -1L, str < str1

             //   NSOrderedSame,   str == str1

             //   NSOrderedDescending,  str > str1

             if(result ==NSOrderedSame){

                NSLog(@"str == str1");

             }else if(result == NSOrderedDescending){

                NSLog(@"str < str1");

             }else{

                NSLog(@"str > str1");

             }

 

 ///////////////////////////////////////////////////////////////////////

             NSString *str = @"hahahaha";

             NSString *str1 = @"hahahaha";

             NSComparisonResult result =  [str compare:str1 options:NSCaseInsensitiveSearch];

             //    NSCaseInsensitiveSearch = 1, //忽略大小写

             //    NSLiteralSearch = 2,

             //    NSBackwardsSearch = 4,

             //    NSAnchoredSearch = 8,

             //    NSNumericSearch = 64,     //用于数值类型的比较

             if(result ==NSOrderedSame){

             NSLog(@"str == str1");

             }else if(result == NSOrderedDescending){

             NSLog(@"str < str1");

             }else{

             NSLog(@"str > str1");

             }

 

            11、字符串的转换

             转大写

                 NSString *str1 = @"abc";

                 NSString *str3 = [str1 uppercaseString];

            

            转小写

                 NSString *str3 = @"ABC";

                 NSString *str4 = [str3 lowercaseString];

            

            单词首字母大写

                 NSString *str2 = @"abc asdas adasd";

                 NSString *str4 = [str2 capitalizedString];

            

            基本数据类型转字符串

                 NSString *str = [NSString stringWithFormat:@"21312"];

            

            字符串转基本数据类型

                 NSString *str = @"11212";

                 int num = [str intValue];

            

            把C语言字符串转换为OC字符串

                 NSString *oCString = [NSString stringWithCString:"haha" encoding:NSUTF8StringEncoding];

            

            把OC的字符串转换为C语言的字符串

                 NSString *str = @"it\tcast\thaha ";

                 const char *str1 = [str cStringUsingEncoding:NSUTF8StringEncoding];

                 printf("%s",str1);

 

            字符串拼接

                 NSString *str = @"www-itheima-cn";

                 NSString *str1 = [str stringByAppendingString:@"哈哈"];

                 NSLog(@"%@",str1);

 

            字符串替换

                 NSString *str = @"www-itheima-cn";

                 NSString *str1 = [str stringByReplacingOccurrencesOfString:@"-" withString:@"."];

                 NSLog(@"%@",str1);

 

            字符串替换指定的位置

                 NSString *str = @"www-itheima-cn";

                 NSRange range = [str rangeOfString:@"itheima"];

                 NSString *str1 = [str stringByReplacingCharactersInRange:range withString:@"itcast"];

 

            字符串删除指定的位置

                 NSRange range = [str rangeOfString:@"itheima"];

                 NSString *str1 = [str stringByReplacingOccurrencesOfString:@"itheima" withString:@""];

                 NSLog(@"%@",str1);

            字符串去掉空格

                 NSString *str = @"it\tcast\thaha ";

                 NSString *str1 = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

 

            文件操作

             //获取文件路径

             NSString *path1 = [NSHomeDirectory() stringByAppendingString:@"/text.txt"];

             //获取扩展名

             //    path1 =[path1 pathExtension];

             //删除扩展名

             //    path1 = [path1 stringByDeletingPathExtension];

             //添加扩展名

             path1 = [path1 stringByAppendingPathExtension:@"jpg"];

             NSLog(@"%@",path1);

字符串与文件(只要是file就是绝对路径)

    把字符串写入文件

         NSString *str = @"德玛西亚";

         NSError *error = nil;//用来接收写入失败的内容,记住它是一个二级指针。

         BOOL isTrue =  [str writeToFile:@"/Users/jinpengyao/Desktop/lala.txt" atomically:YES encoding:NSUTF8StringEncoding error:(&error)];

         if (isTrue) {

         NSLog(@"文件写入成功");

         }else{

         NSLog(@"文件写入失败...");

         }

 

    读取文件中的内容

        NSError *error = nil;//用来接收写入失败的内容,记住它是一个二级指针。

        NSString *str1 = [NSString stringWithContentsOfFile:@"/Users/jinpengyao/Desktop/lala.txt" encoding:(NSUTF8StringEncoding) error:(&error)];

        if(error){

            NSLog(@"%@",error);

        }else{

            NSLog(@"%@",str1);

        }

 

 字符串与URL(Uniform Resource Locator)

    URL格式:

        协议头://主机名称(ip|域名)/资源路径

      eg:http://www.itbaima.com/image/haha.png

         file:///Users/jinpengyao/Desktop/lala.txt

    file用于本机,所以它就没有主机名前面的两个//是代表协议。

 

 转换编码方式

        把UTF8编码的字符串,编码称为URL中可以用的字符串

            [str stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

        把URL中可用的字符串,编码称为UTF8中可以用的字符串

            [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

 

 通过URL写入文件

         NSError *error = nil;

         NSURL *url = [NSURL URLWithString:@"file:///Users/jinpengyao/Desktop/lala.txt"];

         BOOL isSuccess = [str writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:(&error)];

         if (isSuccess) {

         NSLog(@"文件写入成功");

         }else{

         NSLog(@"文件写入失败...%@",error);

         }

 通过URL读取文件

     NSError *error = nil;

     NSURL *url = [NSURL URLWithString:@"file:///Users/jinpengyao/Desktop/lala.txt"];

     NSString *string = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:(&error)];

     NSLog(@"%@",string);

NSMutableString 可变字符串,它是NSString的子类

 增改删的操作

    拼接

     NSMutableString *mStr = [NSMutableString stringWithFormat:@"itbaima"];

     for (int i = 0 ; i < 20 ; i++) {

        [mStr appendString:@" itbaima"];

     }

     [mStr substringFromIndex:1];

    

    设置可以容纳多少个字符(子类扩展的方法)capacity表示容量,可以容纳多少个字符。如果字符串超过了这个存储空间,它自己会自动扩展。

        [NSMutableString stringWithCapacity:10];

 

    在指定位置加入字符串

         NSMutableString *mStr = [NSMutableString stringWithFormat:@"itbaima"];

         [mStr insertString:@"德玛西亚" atIndex:3];

         NSLog(@"%@",mStr);

 

    删除指定位置的字符串

         NSMutableString *mStr = [NSMutableString stringWithFormat:@"itbaima"];

         NSRange range = NSMakeRange(1, 3);

         [mStr deleteCharactersInRange:range];

    

    替换指定位置的字符串

         NSRange range1 = [mStr rangeOfString:@"德玛"];

         [mStr replaceCharactersInRange:range1 withString:@"www"];

     ------------------------------------------------------------------------------------------------------------

         NSRange range1 = [mStr rangeOfString:@"德玛"];

        //注意使用range的时候不要超过字符串的长度(超过会有一个越界错误)

         [mStr replaceOccurrencesOfString:@"德玛" withString:@"西亚" options:NSCaseInsensitiveSearch range:range1];

 

 

 

 

 集合类

    特点:用于存储多个OC对象,相当于存储对象的容器。只能存放OC对象不能存放基本数据类型、结构体、枚举。

    

    数组(有序的对象集合,可以存放任意的OC对象)

        特点:1、同一个数组中可以存放不同类型的对象。

             2、同一个对象可以被存入数组中多次。

             3、不能存放基本数据类型,如果硬是要存入的花需要转换成其包装类型。

             4、数组中的元素是有序的。

 

    NSArray创建:

        1、简洁的构造方法

            NSArray *arr= [NSArray array];

          快速创建法:

            NSArray *arr2 = @[@"德玛西亚",@"拉拉阿拉",@"卡卡卡卡"];

        

        2、通过对象方法取出指定元素

            NSString *string = [arr objectAtIndex:0];

           

          快捷方法

            NSString *string = arr[0];

 

        3、获取字符串长度

            long length = [arr count];// arr.count;

 

        4、判断数组中是否包含某个元素(判断是不是包含某个对象,是调用这个对象上的isEqual方法)

            BOOL isContain =  [arr2 containsObject:@"德玛西亚"];

        

        5、数组的遍历

         1、普通的for

             for(int i = 0 ; i < arr2.count ; i++ ){

                NSLog(@"%@",arr2[i]);

             }

 

         2、增强for

             for (id obj in arr2) {

                NSLog(@"%@",obj);

             }

 

         3、通过枚举器

             NSEnumerator *enumer = [arr2 objectEnumerator];

                id obj;

                while(obj = [enumer nextObject]){

                    NSLog(@"%@",obj);

                }

 

         4、通过block

             [arr2 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

              NSLog(@"%@",obj);

             }];

        

         5、让数组中的每一个元素都执行某一个方法

            [array makeObjectsPerformSelector:@selector(方法名)];

 

            [array makeObjectsPerformSelector:@selector(方法名:) withObject:传入的参数];

        

         6、数组中的排序

            1、通过selector方式进行排序

                 1、重写比较方法

                    - (NSComparisonResult)compare:(id)obj{

                        if(self.属性 == obj.属性){

                                return [self.属性 compare:obj.属性];

                        }else if(){

                        return NSOrderedDescending;//降序

                        }else{

                            return NSOrderedAsscending;//升序

                        }

                    }

 

                 2、调用

                    [arr2 sortedArrayUsingSelector:@selector(比较方法)]

 

            2、通过比较器

                arr2 = [arr2 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {

                    return[obj1 compare:obj2];

                 }];

            

            3、属性描述器

                 NSSortDescriptor *desc1 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];

                 NSSortDescriptor *desc2 = [NSSortDescriptor sortDescriptorWithKey:@"key" ascending:YES];

                 arr2 = [arr2 sortedArrayUsingDescriptors:@[desc1,desc2]];

 

         7、数组与字符串

            1、字符串转数组

                 NSString *str = @"1,2,3,4,5,6";

                 //把字符串分割为数组

                 NSArray *arr = [str componentsSeparatedByString:@","];

            2、把数组拼接成字符串

                //把数组组装成字符串

                 NSString *str1 = [arr componentsJoinedByString:@"-"];

                 NSLog(@"%@",str1);

 

        8、数组与文件

          (file) 1、数组写入文件

                    NSArray *array = @[@"a",@"b",@"c",@"d"];

                    BOOL isSuccess = [array writeToFile:@"/Users/jinpengyao/Desktop/lala.txt" atomically:YES];

                 2、从文件中获取数组

                    BOOL isSuccess = NSArray *array1 = [NSArray arrayWithContentsOfFile:@"/Users/jinpengyao/Desktop/lala.txt"];

                    NSLog(@"%@",array1);

          (URL) 都一样的

                 NSURL *url = [NSURL URLWithString:@"file:///Users/jinpengyao/Desktop/lala.txt"];

                 BOOL isSuccess = [array writeToURL:url atomically:YES];

    

 

    NSMutableArray(继承与NSArray)

         //普通创建方式

         NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@"1",@"2",@"3", @"4",@"1",nil];

         //创建的时候该数组可以容乃的元素个数

         NSMutableArray *mArray2 = [NSMutableArray arrayWithCapacity:10];

         //不存在快速创建方式

         //    NSMutableArray *mArray1 = @[@"a",@"b",@"c",@"d"];//错误方法,因为它是一个不可以变数组的定义

         //除非这样

         mArray2.array =@[@"a",@"b",@"c",@"d"];

         //增加指定的元素

         [mArray addObject:@"e"];

         //删除指定的元素,注意只要与指定的元素相同,都会被删除。它是通过isEqual方法进行比较的。

         [mArray removeObject:@"1"];

         //边遍历边删除(注意:不能使用增强的for),所有通过枚举器的方式都不可以在遍历的同时进行删除

         NSMutableArray *temp =[NSMutableArray array];

         for (id obj in mArray) {

            if([obj isEqualToString:@"3"]){

            [temp addObject:obj];

            }

         }

         //删除mArray中的在temp中的元素

         [mArray removeObjectsInArray:temp];

         NSLog(@"%@",mArray);

         //指定位置加入元素

         [mArray insertObject:@"s" atIndex:1];

         NSLog(@"%@",mArray);


-------------------------------------------------------------------------------------------

#import "CZPerson.h"


@implementation CZPerson

- (void)addAges{

    self.age += 1;

}

- (void)findPerson:(NSNumber *)age{

    int intAge = [age intValue];

    if(intAge == self.age ){

        NSLog(@"对我今年就是%d岁",intAge);

    }

}

//自定义比较器

- (NSComparisonResult)compare:(CZPerson *)other{

    if(self.age == other.age){//如果self的age等于other的age就在比较name

        return [self.name compare:other.name];

    }else if(self.age > other.age){//如果self的age大于other的age就让它降序

        return NSOrderedDescending;

    }else{//如果self的age小于other的age就让它升序

        return NSOrderedAscending;

    }

}


//如果你想NSLog(@"%@",arr);这样遍历数组,那么就乖点把这个加上。

- (NSString *)description{

    return [NSString stringWithFormat:@"name = %@ ,age = %d",self.name , self.age];

}

@end




////    //通过枚举器遍历数组

////    NSArray *arr = @[@"a",@"b",@"c",@"d"];

////    NSEnumerator *enumerator = [arr objectEnumerator];

////    id obj = nil;

////    while(obj = [enumerator nextObject]){

////        NSLog(@"%@",obj);

////    }

////    NSLog(@"------------");

////    //通过block遍历数组

////    [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

////        NSLog(@"%@",obj);

////    }];

//    

//    CZPerson *person1 = [[CZPerson alloc]init];

//    person1.age = 15;

//    person1.name = @"你好1";

//    CZPerson *person2 = [[CZPerson alloc]init];

//    person2.age = 14;

//    person2.name = @"你好2";

//    

//    CZPerson *person3 = [[CZPerson alloc]init];

//    person3.age = 13;

//    person3.name = @"你好3";

//    

//    CZPerson *person4 = [[CZPerson alloc]init];

//    person4.age = 12;

//    person4.name = @"你好4";

//    

//    CZPerson *person5 = [[CZPerson alloc]init];

//    person5.age = 11;

//    person5.name = @"你好5";

//    

//    NSArray *arr = @[person1,person2,person3,person4,person5];

////遍历数组

////    [arr makeObjectsPerformSelector:@selector(addAges)];

////    for (CZPerson *person in arr) {

////        NSLog(@"name = %@ , age = %d",person.name,person.age);

////    }

//    //使用枚举器变量数组

////    NSEnumerator *enumerator =[arr objectEnumerator];

////    CZPerson *person ;

////    while(person  = [enumerator nextObject] ){

////        NSLog(@"name = %@ , age = %d",person.name,person.age);

//

////    }

//    

//    

//    //通过block遍历数组,并且当碰到12岁就不遍历了//当遍历到索引值为2的时候就停止遍历

////    [arr enumerateObjectsUsingBlock:^(CZPerson *person, NSUInteger idx, BOOL *stop) {

////        NSLog(@"name = %@ , age = %d",person.name,person.age);

////          if(14 == person.age){

////              *stop = YES;

////          }

////          if(idx == 2){

////          *stop = YES;

////          }

////      }];

//    //让数组里面的所有元素都执行一下方法,

//    [arr makeObjectsPerformSelector:@selector(addAges)];

//    NSNumber *number = [NSNumber numberWithInt:15];

//        [arr enumerateObjectsUsingBlock:^(CZPerson *person, NSUInteger idx, BOOL *stop) {

//            NSLog(@"name = %@ , age = %d",person.name,person.age);

////            if(14 == person.age){

////                *stop = YES;

////            }

//            if(idx == 2){

//                *stop = YES;

//            }

//        }];

//    //让数组里面的所有元素都执行一下,并且根据传入的参数找到合适的东西。

//    [arr makeObjectsPerformSelector:@selector(findPerson:) withObject:number];


////比较器

//        CZPerson *person1 = [[CZPerson alloc]init];

//        person1.age = 15;

//        person1.name = @"你好1";

//        CZPerson *person2 = [[CZPerson alloc]init];

//        person2.age = 12;

//        person2.name = @"你好2";

//    

//        CZPerson *person3 = [[CZPerson alloc]init];

//        person3.age = 13;

//        person3.name = @"你好3";

//    

//        CZPerson *person4 = [[CZPerson alloc]init];

//        person4.age = 16;

//        person4.name = @"你好4";

//    

//        CZPerson *person5 = [[CZPerson alloc]init];

//        person5.age = 11;

//        person5.name = @"你好5";

//        NSArray *arr = @[person1,person2,person3,person4,person5];

//    //通过选择器进行排序

//    //要注意NSArray是一个不可变的数组,之后排好序需要让自己重新指一下被改的地址,不然不会发生任何变化。

////        arr = [arr sortedArrayUsingSelector:@selector(compare:)];

////        NSEnumerator *enumerator =[arr objectEnumerator];

////        CZPerson *person ;

////        while(person  = [enumerator nextObject] ){

////            NSLog(@"name = %@ , age = %d",person.name,person.age);

////    

////        }

//    //使用比较器(bock)进行排序(实质很重写比较器差不多)

////        arr = [arr sortedArrayUsingComparator:^NSComparisonResult(CZPerson *cPerson1, CZPerson *cPerson2) {

////            if(cPerson1.age == cPerson2.age){

////                return [cPerson1.name compare: cPerson2.name];

////            }else if(cPerson1.age > cPerson2.age){

////                return NSOrderedDescending;

////            }else{

////                return NSOrderedAscending;

////            }

////        }];

////        NSEnumerator *enumerator =[arr objectEnumerator];

////        CZPerson *person ;

////        while(person  = [enumerator nextObject] ){

////            NSLog(@"name = %@ , age = %d",person.name,person.age);

////            

////        }

//    //通过属性描述器进行排序

//    NSSortDescriptor *desc1 = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];

//    NSSortDescriptor *desc2 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];

//    arr = [arr sortedArrayUsingDescriptors:@[desc1,desc2]];

////    NSEnumerator *enumerator =  [arr objectEnumerator];

////    CZPerson *person ;

////    while(person = [enumerator nextObject]){

////        NSLog(@"name = %@ ,age =%d",person.name ,person.age);

////    }

//    [arr enumerateObjectsUsingBlock:^(CZPerson *person, NSUInteger idx, BOOL *stop) {

//        NSLog(@"%@",person);

////        if(idx == 2){

////            *stop = YES;

////        }

//        if(person.age == 12){

//            *stop = YES;

//        }

//    }];



【人工智能】提示词避坑指南:为什么大模型越让它“禁止”,它越要“唱反调”? 和 AI 沟通就像和聪明但直脑筋的工科生说话—— 阅读详情

相关推荐

UDS诊断ISO14229新手入门篇

这个命令的格式稍微复杂一点。sub-function = 0x06 用于读取某个 DTC 及其相关的环境数据,此时 parameter 为 4 个 byte,前三个 byte 用于标识我们要读取的 DTC,第四个 byte 用于标识要读取的环境数据的范围,UDS 规定使用 FF 来表示读取所有的环境数据,各厂家可以要根据自己的需求定义其他的值来代表要读取的环境数据的范围。环境数据包括 DTC 状态,优先级,发生次数,老化计数器,时间戳,里程等,厂家还可以根据自己的需求定义一些此 DTC 产生时的测量数据。

weixin_45387165的博客 1970

OC笔记之foundation框架

对 Objective-C 中foundation框架的学习总结

aa2002aa的博客 969

RKNN3588——YOLOv8的PT模型转RKNN模型

1. 首先克隆rknn修改后的ultralytics版本项目到本地主要是修改了源码的ultralytics/nn/modules/head.py和ultralytics/engine/exporter.py两个文件。2. 使用修改后的ultralytics对pt模型进行模型转换,此处的format=rknn代表支持rknn后续的转换,而不是用onnx,一定要注意!!!

张飞飞的博客 7165

OC语言学习——Foundation框架(上)

NSString代表字符序列不可变的字符串,而NSMutable代表字符序列可变的字符串。

2402_86720949的博客 1268

魔百和CM211-1刷Armbian全流程:从安卓盒子到Linux服务器的完美变身

本文详细介绍了如何将魔百和CM211-1机顶盒刷入Armbian系统,实现从安卓盒子到Linux服务器的完美变身。涵盖硬件兼容性验证、固件选择、刷机流程、系统优化及常见问题解决,特别适合技术爱好者低成本搭建家庭NAS或开发环境。

weixin_30329623的博客 237

三极管自激升压电路设计 - 从参数计算到实践验证

本文详细解析了三极管自激升压电路(焦耳小偷电路)的设计原理与实践方法。通过剖析自激振荡机制与三极管电流关系,指导读者完成从核心参数计算、关键元件选型到面包板搭建调试的全过程。文章重点阐述了如何利用电感、三极管等基础元件实现低压直流到高压的转换,是理解开关电源与电磁能量转换的绝佳实践项目。

weixin_29250573的博客 364

黑马程序员————OC中Foundation框架知识总结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一个框架(Framework)就是一个软件包,它包含多个类。Mac 操作系统提供了几十个框架,从而帮助软件开发人员迅速地在Mac 系统上开发应用程序。在这些框架中,有一 些称为基础框架。基础框架就是为了所有程序开发提供基础的框架,其中的类包括:字符串(NSString)、数字(N

whymerain的专栏 594

【OpenAI】Python:(1) 基于 Gym-CarRacing 的自动驾驶项目 | 前置知识介绍 | 项目环境准备 | 手把手带你一步步实现

本篇是关于多伦多大学自动驾驶专业项目 Gym-CarRacing 的博客。GYM-Box2D CarRacing 是一种在 OpenAI Gym 平台上开发和比较强化学习算法的模拟环境。它是流行的 Box2D 物理引擎的一个版本,经过修改以支持模拟汽车在赛道上行驶的物理过程。由于内容比较多所以分多次更新,本篇是关于前置知识介绍,以及项目环境准备的。

有道无术, 术尚可求。有术无道, 止于术。 5053

Oc语言学习 —— Foundation框架总结

因为我们的NSString是不可变的,所以我们只能通过一些方法来在我们原来的字符串后面追加或初始化我们的字符串来间接修改我们的对象,例如:这两种方法都是对象不改变,将新生成的字符串重新赋值给str指针变量。

2402_86720949的博客 1113

TC3XX - MCAL知识点(十三):IOM EB-tresos配置说明及代码浅析

输入输出监视器(IOM)驱动程序作为比较单元,检查系统外设输出的正确操作,这些输出可以作为监视功能的输入。监控功能需要通过配置IOM硬件来实现。它向SMU生成全局系统事件。IOM驱动程序初始化并控制微控制器的IOM单元。驱动程序还为用户提供初始化和设置IOM内部单元的阈值的服务。它还应该提供重置IOM内核的服务。应该提供该服务来组合单个或多个本地事件,以生成单个全局系统事件。IOM驱动程序严重依赖于初始化和配置。软硬件关系如下图缩写解释LAM逻辑分析模块ECM事件组合模块FPC。

梦想技术家 1798

YOLOv11改进策略【卷积层】| CVPR-2024 PKI Module 获取多尺度纹理特征,适应尺度变化大的目标

PKI Module是。

Limiiiing的博客 2705

OC语言学习——Foundation框架回顾及考核补缺

setByAddingObject:向集合中添加一个新元素,返回添加元素后的新集合setByAddingObjectsFromSet:使用NSSet集合向集合中添加多个新元素,返回新集合setByAddingObjectsFromArray:使用NSArray集合向集合中添加多个新元素,返回新集合allObjects:返回集合中所有元素组成的NSArrayanyObject:返回集合中的某个元素。(但是并不保证随机返回集合元素)。containsObject:判断集合是否包含指定元素。

2402_86720949的博客 1564

高效与灵活相结合:Verilog编写的跨时钟域循环缓冲控制器解析

循环缓冲区,也被称作循环队列、环形缓冲区,是一种数据结构,其主要特性是使用一个固定大小的缓冲区作为数据的存储空间,这个缓冲区在逻辑上被视作是首尾相接的。虽然Verilog是一种常用的硬件描述语言,被广泛应用在FPGA和ASIC设计中,但是在描述循环缓冲区时,它并没有提供一种直接且灵活的方式来指定循环缓冲区的参数,如字长、缓冲区深度、缓冲区数量等。这给硬件设计带来了一定的不便。同时,该控制器的设计也充分考虑了硬件资源的利用率,通过优化的算法和数据结构,使得在实现高性能的同时,也能够有效地节省硬件资源。

qq_38334677的博客 1220

OC语言学习——Foundation框架(下)

OC集合类可以用于存储数量不等的多个对象,并且可以实现常用的数据结构,例如栈和队列等,除此以外,OC集合还可以用来保存具有映射关系的关联数组。OC的集合大致上可以分为三种体系:NSArray 代表有序、可重复的集合,很像一个数组NSSet 代表无序、不可重复的集合NSDictionary 代表具有映射关系的集合。

2402_86720949的博客 1162

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

OC 学习笔记2 Foundation框架

oc 学习笔记2 Foundation框架 文章目录oc 学习笔记2 Foundation框架框架Foundation框架Foundation框架里的类 框架 一个框架相当于一个软件包,它包含了多个类。而在mac操作系统中提供了几十个框架。 Foundation框架 这是mac中的基础框架,里面为所有程序开发提供了基础所需要使用的类。 例如:数字对象(NSNumber);字符串对象(NSStrin...

weixin_43900761的博客 366

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

oc笔记——Foundation框架

面向对象的三大特征: 封装,继承,多态; 多态是源于动物学概念,基于继承。 static可以声明全局变量 (一个汉子占三个字节) Foundation框架介绍 cocoa 介绍 --编写oc语言的工具包,由Foundation kit 和app kit 俩部分组成,前者是基础工具库,后者主要ui库/枚举。 Foundation作用 --Foundation框架主要定义类一些...

weixin_34125592的博客 144

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【oc】Foundation框架(下)--数组、集合、字典概述

OC集合类可以用于存储数量不等的多个对象,并且可以实现常用的数据结构,例如栈和队列等,除此之外,OC集合还可以用来保存具有映射关系的关联数组。NSSet集合类相当于一个罐子,在这里面添加的对象是无序的,所以元素不可重复NSArray集合像一个数组,是个有序,可重复的集合NSDictionary集合也像一个罐子,每项数据由key,value两个值组成,可据每项元素key值访问value(value可以重复,key不可以)

2401_86200358的博客 496

——黑马程序员——OC中Foundation框架NSString用法总结

-----------android培训、java培训、java学习型技术博客、期待与您交流!-----------

yhp1095785221的博客 635

黑马程序员——OC中Foundation框架

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流!—-Foundation框架一、Foundation框架基本认识<1>.正如其名,Foundation框架是其他所有IOS框架的基础<2>.Foundation框架包含了很多开发中常用的数据类型a.结构体 b.枚举 c.类 <3>.要想使用Foundation中的数据类型,包含它的主文件即可#import <Foundat

pangetzp_41904129的专栏 509

OC学习之——Foundation框架

OC集合类可以用于存储数量不等的多个对象,并且可以实现常用的数据结构,例如栈和队列等,除此之外,OC集合还可以用来保存具有映射关系的关联数组。NSArray代表有序、可重复的集合,很像一个数组NSSet代表无序、不可重复的集合代表具有映射关系的集合在实际编程里,面向的是NSArray(及其子类NSMutableArray)、NSSet(及其子类NSMutableSet)、NSDictionary(及其子类NSMutableDictionary)编程,程序创建的也可能是它们的子类的实例。

m0_73348697的博客 1089

OC学习:Foundation框架之常用结构体

在iOS开发中所有框架中Foundation框架是最基础的框架,Foundation框架里面包含了常用的类和数据类型。 使用Foundation框架只要包含它的主头文件即可,主头文件里面包含了框架中所有内容的头文件。 Foundation框架中常用的结构体:NSRange、NSPoint\CGPoint、NSSize\CGSize、NSRect\CGRect 使用CGPoin

iOS开发的学习笔记 823

OC系列之Foundation框架

一 Foundation框架介绍 框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合。 Foundation框架中的类Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组,字典和集合,其他功能包括处理日期和时间、内存管理、处理文件系统、存储(或归档)对象、处理几何数据结构(如点和长方形) Foundation框架提供了非常多好用的类, 比如 NSStri

IOS开发进阶之路 1447

OC foundation框架

概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底是谁?它为什么又出现在Objective-C中间呢?今天我们将揭开这层面纱,重点分析在IOS开发中一个重要的框架Foundation,今天的主要内容有: Foundation概述常用结构体

CQYCCCCC的博客 616

OC Foundation框架简介

1)什么是框架? 框架是由许多类、方法、函数、文档按照一定的逻辑组织起来的集合,以便使研发程序变得更容易在OS X下的Mac操作系统中大约有80个框架为所有程序开发奠定基础的框架称为Foundation框架 Foundation框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组,字典和集合,其他功能包括处理日期和时间、内存管理、处理文件系统、存储(或归档)对象、处理几何数据结构

HanXujie的博客 538

OC中Foundation框架知识总结

一个框架(Framework)就是一个软件包,它包含多个类。Mac 操作系统提供了几十个框架,从而帮助软件开发人员迅速地在Mac 系统上开发应用程序。在这些框架中,有一 些称为基础框架。基础框架就是为了所有程序开发提供基础的框架,其中的类包括:字符串(NSString)、数字(NSNumber)、数组(NSArray)、字典(NSDictionary)、 集合(NSSet)等,所有的基础框架上

why_not_的专栏 760

30天学会OC-09:Foundation框架

摘要:本文介绍了Objective-C中Foundation框架的核心类使用方法。主要内容包括:1) NSString和NSMutableString类用于字符串处理,涵盖创建、比较、分割等操作;2) NSArray和NSMutableArray类用于数组操作,支持元素增删查改;3) NSDictionary和NSMutableDictionary类实现键值对存储。文中提供了各类的创建方式、常用方法及代码示例,帮助开发者掌握Objective-C基础数据结构的基本操作。这些类是Foundation框架的基础

smileKH的博客 1261
上一篇: OC中的内存管理(kazuki Sakamoto)(上)
下一篇: Foundation框架(下)
PY-J
博客等级 码龄14年 7粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值