iOS开发_Foundation框架

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.装箱拆箱:将基本数据类型转化为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:
时间: 2024-12-17 06:41:40

iOS开发_Foundation框架的相关文章

iOS开发 网络框架AFNetworking源码(一)

目前iOS开发中使用最多的网络访问框架就是AFNetworking了.作为一个第三方框架,用起来确实比直接使用iOS自带的要方便得多. AFNetworking在github上可以直接下载.地址为:https://github.com/AFNetworking/AFNetworking . 首先先看AFURLConnectionOperation类,继承自NSOperation. @interface  AFURLConnectionOperation :  NSOperation 在这里构建了

iOS开发基础框架

---恢复内容开始--- //appdelegate ////  AppDelegate.m//  iOS开发架构////  Copyright © 2016年 Chason. All rights reserved.// #import "AppDelegate.h"#import "ViewController.h"#import "CYCTabBarViewController.h"@interface AppDelegate () @en

iOS开发-CoreMotion框架

转自: CoreMotion是一个专门处理Motion的框架,其中包含了两个部分 加速度计和陀螺仪,在iOS4之前加速度计是由 UIAccelerometer 类 来负责采集数据,现在一般都是用CoreMotion来处理加速度过程,不过由于UIAccelerometer比较简单,同样有人在使用.加速计由三个 坐标轴决定,用户最常见的操作设备的动作移动,晃动手机(摇一摇),倾斜手机都可以被设备检测到,加速计可以检测到线性的变化,陀螺仪可以更好的检测到偏 转的动作,可以根据用户的动作做出相应的动作,

iOS开发-CoreMotion框架(加速计和陀螺仪)

CoreMotion是一个专门处理Motion的框架,其中包含了两个部分加速度计和陀螺仪,在iOS4之前加速度计是由UIAccelerometer类来负责采集数据,现在一般都是用CoreMotion来处理加速度过程,不过由于UIAccelerometer比较简单,同样有人在使用.加速计由三个坐标轴决定,用户最常见的操作设备的动作移动,晃动手机(摇一摇),倾斜手机都可以被设备检测到,加速计可以检测到线性的变化,陀螺仪可以更好的检测到偏转的动作,可以根据用户的动作做出相应的动作,iOS模拟器无法模拟

iOS开发-基础框架

        Foundation框架为所有的应用程序提供基本系统服务 创建和管理集合,比如数组和字典 访问存储在应用程序里的图片和其它资源 创建和管理字符串 提交和接收通知 创建日期和时间对象 自动发现IP网络上的设备 操作URL流 执行异步代码 UIKit框架提供创建基于触摸用户界面的类 构建和管理你的用户界面 捕获触摸和基于移动的事件 呈现文字和web内容 优化你的多任务程序 创建定制的用户界面元素 Core Data框架管着理应用程序数据模型 在库里存储和接收对象 提供基本的undo/

iOS 开发常用框架以及相关学习资料集合--不断更新

整理了一些开发时常用的一些框架的缩写,方便学习与记忆 有些资料可能时间比较久远了,我尽量挑选的都是最近两年的,里面有的是OC的,有Swift的,都是文章,语言的影响不大. 感谢以下各位博主的分享,如果有侵权的地方可以私信我删除,这是我的微博 http://weibo.com/lfbWb 不定时更新中 前缀 全称 对应库 简单解释 学习资料的链接 NS NextStep or NeXTSTEP Foundation.framework UI User Interface UIKit.framewo

iOS开发——AFNetworking框架使用详解

AFNetworking is a delightful networking library for iOS and Mac OS X.It's built on top of the Foundation URL Loading System, extending the powerful high-level networking abstractions built into Cocoa. It has a modular architecture with well-designed,

ios开发开源框架管理工具Cocoapods安装使用

Cocoapod是一个强大的第三方的开源框架的管理工具,其中的各种开源类库,很多都是持续更新;那么我们在使用的时候就可以使用到最新的类库;由于我们在使用开源框架的时候,也难免会遇到 第三方类库可能会出现的Bug,或者由于苹果的SDK更新,各种框架也需要更新,使用Cocoapods的话就可以一键更新到最新的开源框架了! 首先就是要安装Cocoapos了,安装它需要ruby环境,但是较新的Mac 系统已经为我们安装好了ruby,所以我们现在可以直接安装Cocoapods啦! 安装Cocoapods步

iOS开发 - CoreData框架 数据持久化

Core Data Core Data是iOS5之后才出现的一个框架,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象.在此数据操作期间,我们不需要编写任何SQL语句,这个有点类似于著名的Hibernate持久化框架,不过功能肯定是没有Hibernate强大的. 传统的数据库要把数据写到数据库,而且要写SQL语句 Core Data 就避免了写SQL语句的麻烦了 CoreData的使用步骤 1.创建模型