Foundation kit介绍

本文详细探讨了Objective-C与Swift两种语言在iOS开发领域的应用与区别,包括其核心特性、优缺点以及实际项目中的使用案例。Objective-C作为iOS早期的主要开发语言,至今仍有许多成熟的应用依赖其丰富的库和生态系统;而Swift作为一种更为现代化的语言,引入了类型安全性、性能优化及更简洁的语法,旨在解决Objective-C存在的问题并提供更好的开发体验。文章对比了两种语言在内存管理、错误处理、代码可读性等方面的差异,并提供了如何在现有项目中逐步迁移至Swift的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)结构:

AppKit      UIKit

     Foundation(OC,NS*)

  core Foundation(C,CF*)


(二)数据类型:

1.NSRange:

1.1定义:

typedef struct _NSRange

{

unsigned int location;

unsigned int length;

}NSRange;


1.2用途:

表示事物的范围。location从1开始数,length表示个数。a.字符串里的字符范围。b.数组里的元素范围。


1.3:初始化:

a.NSRange range = {17,4};

b.NSRange range;

   range.location = 17;

   range.length = 4;

c.快捷方式:NSRange range = NSMakeRange(17,4);


2.几何数据类型:以CG开头,来自Core Graphics(C语言实现,用于2d渲染)

struct CGPoint

{

float x;

float y;

} ;//笛卡尔平面中的一个坐标,快捷方式CGPointMake()


struct CGSize

{

float width;

float height;

};//存储长宽,快捷方式CGSizeMake()


struct CGRect

{

CGPoint origin;//起始点

CGSize size;//长宽

};//矩形,快捷方式CGRectMake()


3.字符串

3.1 创建字符串:+ (id) stringWithFormat:(NSString*)format,...;//类方法,工厂方法

NSString* height = [NSString stringWithFormat:@"Your height is %d feet,%d inches",5,11];


3.2长度:-(NSUInteger)length;//实例方法

NSUInteger length = [height length];


3.3字符串比较

//是否相等

- (BOOL)isEqualToString:(NSString*)aString;

不能用==,因为==只是判断指针值,并不判断指针指向的内容是否相同。


//大小比较

- (NSComparisonResult) compare:(NSString*)aString;

enum

{

NSOrderedAscending = -1,

NSOrderedSame,

NSOrderedDescending

};

typedef NSInteger NSComparisonResult;


//不区分大小写的比较

- (NSComparisonResult) compare:  (NSString*)aString

options: (NSComparisonOptions) mask;


掩码如下,可以位运算

NSCaseInsentiveSearch:不区分大小写字符

NSLiteralSearch:进行完全比较,区分大小写

NSNumericSearch:比较字符串的的字符个数,而不是字符串值。


//字符串内是否还包括别的字符串

- (BOOL) hasPrefix: (NSString*) aString;//是否以某个字符串开头

- (BOOL) hasSuffix: (NSString*) aString;//是否以某个字符串结尾

- (NSRange) rangeOfString: (NSString*)aString;//是否包含某个字符串。如果没有找到,range.location=NSNotFound


//可变性

 NSString 一旦创建,便不能改变。你只能进行比较,查找等,但是不能以删除字符或者添加字符等方式改变它。

NSMutableString,它继承自NSString,它是可变的。

+(id)stringWithCapacity:(NSUInteger)capacity;

示例如下:

NSMutableString* string = [NSMutableString stringWithCapacity: 42];

-(void)appendString: (NSString*)aString;//连接字符串 [string appendString: @"hello"];

-(void)appendFormat:(NSString*)format,...;//连接格式化字符串 [string appendFormat: @"human%d",10]

-(void)deleteCharactersInRange: (NSRange)aRange;//删除字符串中的字符。


4.集合:只能存储对象,不能存储基本类型数据如int,float和struct等

4.1 NSArray

NSArray是一个cocoa类,用来存储对象的有序列表。你可以在NSArray中放入任意类型的对象:NSString,Car,Shape,Tire,甚至是其它数组或者字典对象。

限制:NSArray职能存储object-c对象而不能存储c对象(int,float,struct等),同时你也不能在NSArray中存储nil

//创建NSArray

NSArray* array = [NSArray arrayWithObjects:@"one",@"two",nil];

NSArray* array2 = @[@"one",@"two"];


//对象个数

-(NSUInteger)count;


//获取特定索引处的对象

-(id)objectAtIndex:(NSUInteger)index;

array[index]


4.2可变数组NSMutableArray

//初始化:没有字面量初始化方法

+(id)arrayWithCapacity:(NSUInteger) numItems;


//添加

-(void)addObject:(id)anObject;//添加一个对象

-(void)removeObjectAtIndex:(NSUInteger)index;//删除特定索引处的对象, 索引从0开始


4.2枚举

NSEnumerator* enumerator = [array objectEnumerator];

while(id thingie = [enumerator nextObject])

{

NSLog(@"I found %@",thingie);

}

//注

1.nextObjext为nil时会跳出循环,这就是为什么不能在数组里存储nil的原因,因为不知道nil是结束标示还是数组元素。

2.在枚举的过程中不能添加或者删除对象来操作数组,因为会导致枚举器混乱


4.3 快速枚举


5. 字典

5.1 NSDictionary

//初始化:同样以nil作为结束

+(id)dictionaryWithObjectsAndKeys:(id)firstObject,...;

@{key:value,...}

eg:

Tire* t1 = [Tire new];

Tire* t2 = [Tire new];

Tire* t3 = [Tire new];

Tire* t4 = [Tire new];

NSDictionary* tires = [NSDictionary dictionaryWithObjectsAndKeys:t1,@"first",t2,@"second",t3,@"third",t4,@"fourth"];

NSDictionary* tires = @{@"first",t1,@"second",t2,@"third",t3,@"fourth",t4};


//查找,如果找不到则返回nil

- (id) objectForKey: (id) akey;

tires[key];


5.2 NSMutableDictionary

//初始化:没有字面量初始化方法

+ (id)dictionary;

+ (id)dictionaryWithCapacity: (NSUInteger) numItems;


//增加,如果key已存在,那么值会被替换

- (void) setObject:(id)anObject forKey:(id)aKey;


//删除

-(void) removeObjectForKey:(id)aKey


6.其它数值

因为NSArray和NSDictionary职能存储对象,而不能直接存储任何基本类型的数据。所以如果想用NSArray和NSDictionary处理基本类型的数据,可以把基本类型封装成对象。

6.1 NSNumber

//初始化   获取基本类型值

+ (NSNumber* )numberWithChar: (char)value; -(char) charValue;

+ (NSNumber* )numberWithInt: (int)value; -(int) intValue;

+ (NSNumber* )numberWithFloat: (float)value; -(float) floatValue;

+ (NSNumber* )numberWithBool: (BOOL)value; -(BOOL) boolValue;

-(NSString*)stringValue;

...

NSNumber* number;

number = @'X';//字符型

number = @12345;//整型

number = @YES;//布尔型


6.2 NSValue,NSNumber的基类

//初始化 获取值

+(NSValue*) valueWithBytes:(const void*)value objCType: (const char*)type;//参数为要封装的数据的地址 -(void)getValue:(void*)buffer;


6.3 NSNull ,可以放在集合里

//初始化

+ (NSNull*)null

eg:

jack家里没有电话:

id homePhone = [contact setObject:[NSNull null] forKey: @"home phone"];

查找jack电话:

if(homePhone == [NSNull null])

{

//没有电话的行为定义

}


内容概要:本文档提供了关于“微型车间生产线的设计与生产数据采集试验研究”的毕业设计复现代码,涵盖从论文结构生成、机械结构设计、PLC控制系统设计、生产数据采集与分析系统、有限元分析、进度管理、文献管理和论文排版系统的完整实现。通过Python代码和API调用,详细展示了各个模块的功能实现和相互协作。例如,利用SolidWorks API设计机械结构,通过PLC控制系统模拟生产流程,使用数据分析工具进行生产数据的采集和异常检测,以及利用进度管理系统规划项目时间表。 适合人群:具有机械工程、自动化控制或计算机编程基础的学生或研究人员,尤其是从事智能制造领域相关工作的人员。 使用场景及目标:①帮助学生或研究人员快速搭建和理解微型车间生产线的设计与实现;②提供完整的代码框架,便于修改和扩展以适应不同的应用场景;③作为教学或科研项目的参考资料,用于学习和研究智能制造技术。 阅读建议:此资源不仅包含详细的代码实现,还涉及多个学科领域的知识,如机械设计、电气控制、数据分析等。因此,在学习过程中,建议读者结合实际操作,逐步理解每个模块的功能和原理,并尝试调整参数以观察不同设置下的系统表现。同时,可以参考提供的文献资料,深入研究相关理论和技术背景。
本次的学生体质健康信息管理网站,按照用户的角色可以分为教师与学生,后台设置管理员角色来对学生的信息进行管理。,设计如下: 1、后台管理系统 后台管理系统主要是为该系统的管理员提供信息管理服务的系统,具体包括的功能模块如下: (1)管理员信息管理 (2)教师信息管理 (3)学生信息管理 (4)健康信息统计(图形化进行健康,亚健康等学生的信息数量统计) 2、教师角色的功能模块设计 教师角色所需要的功能模块主要包括了如下的一些内容: (1)个人资料修改 (2)学生体质健康管理:录入相关数据,包括但不限于身高、体重、肺活量、视力等生理指标以及运动能力、身体成分、骨密度等健康指标,并且设置健康,亚健康状态 (3)学生健康建议:根据体质信息,进行学生健康的建议 (4)健康预警:对健康出问题的学生,进行健康预警 (5)饮食和锻炼情况管理,查看 3、学生角色 学生角色可以通过该信息网站看到个人的基本信息,能够看到教师给与学生的健康建议等,功能模块设计如下: (1)个人资料修改 (2)我的健康建议查看 (3)我的健康预警 (4)饮食和锻炼情况管理,记录平时的饮食和锻炼情况 完整前后端源码,部署后可正常运行! 环境说明 开发语言:Java后端 框架:ssm,mybatis JDK版本:JDK1.8+ 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:eclipse/idea Maven包:Maven3.3+ 部署容器:tomcat7.5+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值