oc

Swift 的函数式编程

我们两清 提交于 2021-02-19 01:50:05
Swift 相比原先的 Objective-C 最重要的优点之一,就是对函数式编程提供了更好的支持。 Swift 提供了更多的语法和一些新特性来增强函数式编程的能力,本文就在这方面进行一些讨论。 Swift 概览 对编程语言有了一些经验的程序员,尤其是那些对多种不同类型的编程语言都有经验的开发者, 在学习新的语言的时候更加得心应手。原因在于编程语言本身也是有各种范式的, 把握住这些特点就可以比较容易的上手了。 在入手一门新的语言的时候,一般关注的内容有: 原生数据结构 运算符 分支控制 如果是面向对象的编程语言,其面向对象的实现是怎样的 如果是函数式编程语言,其面向函数式编程的实现是怎样的 通过这几个点,其实只要阅读 Swift 文档的第一章,你就可以对这个语言有一个大概的印象。 比如对于数据结构,Swift 和其他的编程语言大体一样,有 Int, Float, Array, Dictionary 等, 运算符也基本与 C 语言一致等。 本文主要集中于对 Swift 函数式编程方面的特点进行一些盘点,因此在这里假设大家对 Swift 的基本语法已经有所了解。 对于一种编程范式,要掌握它也要抓住一些要点。对于支持函数式编程的语言,其一般的特点可能包含以下几种: 支持递归 函数本身是语言 First Class 的组成要素,且支持高阶函数和闭包 函数调用尽可能没有副作用 ( Side

oc 16进制字符串与10进制的转换 两行代码搞定

别等时光非礼了梦想. 提交于 2021-02-07 22:46:50
下面是一个帐号的转换,需要给渔船设备传递16进制的字符串,之后经设备进行北斗与服务间的通信,下面是转换的方式: NSLog(@"%x",50038); 2016-03-01 22:16:58.861 testStr[3855:369016] 12a401927 因为需要,整好必须是4个子节,然后16进制位8位,所以可以用以下方法进行转换 NSLog(@"%.8x",50038); 2016-03-01 22:22:27.647 testStr[3905:374086] 0000c376 这样的对比就比较明显了,.8x表示不足8位的在前面补0 反之需要对16进制转成10进制进行处理,也很简单,当初用了各种方法,比如单个截取然后转乘100进制,效率低下且容易出错,然而明明有更好的方法可以解决的,下面给出方法 NSLog(@"%ld",strtoul([@"0000c376" UTF8String],0, 16)); 2016-03-01 22:29:57.755 testStr[3978:380678] 50038 原则上16进制转成10进制调用了c语言的函数,具体以下,见下-- strtoul()会将参数nptr字符串根据参数base来转换成无符号的 长整型 数。参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制

Swift 和 OC 混编

不羁的心 提交于 2020-12-24 08:00:02
Swift 中调用OC很简单: XXX-Bridging-Header.h 中 引入 需要访问的 OC 的头文件即可 但是OC调 Swift 需要注意: #import " TestDemo-Swift.h" // ProductName-Swift.h 注意 ProductName 不能包含中文和数字的组合 `-` // 注意: Swift 调用 OC 不会有问题 // 但是 OC 无法访问 Swift 中的特殊语法,例如:枚举! 来源: oschina 链接: https://my.oschina.net/u/2432308/blog/540405

OC语言自学《九》---- OC(面向对象)

被刻印的时光 ゝ 提交于 2020-05-02 07:36:21
定义类和创建对象 创建类 使用 @interface 关键字创建类,并且使类继承 NSObject @interface负责声明、@implementation负责实现 函数和方法的区别 方法 必须以减号或加号开头 减号开头的是对象方法,加号开头的是类方法 实现必须写在@implementation和@end之间 声明必须写在@interface和@end之间 必须由对象调用 归类、对象所有 函数 函数调用不依赖对象 函数内部不能直接通过成员变量名访问对象的成员变量 可以写在文件的任何地方,但不能写在@interface中 可以写在@implementation和@end之间,也可以被方法调用 对象方法与类方法的区别 对象方法 减号开头 只能由对象调用 实例变量不能在类方法中访问 对象方法可以调用类方法 类方法 加号开头 只能由类来调用 应用场合:当方法内部不需要使用成员变量时,就可以改为使用类方法 self关键字 self是指针类型 它指向了方法调用者,谁调用了这个方法就指向谁 用途: 可以利用 self -> 成员变量名 访问当前对象内部的成员变量 [self 方法名]可以调用其他对象方法、类方法,取决于self在什么环境中 self出现在对象方法中,self就代表对象 self出现在类方法中,self就代表类 要避免自己调用自己的方法而发生死循环,例如有个test方法

NSDate时间戳和时间相互转化

烈酒焚心 提交于 2020-04-17 04:24:50
【推荐阅读】微服务还能火多久?>>> 时间戳 -->时间 - (NSString*)CalculateTimeWithStr:(NSString*)str{ NSTimeInterval time=[str doubleValue]+28800;//因为时差问题要加8小时 == 28800 sec NSDate*detaildate=[NSDate dateWithTimeIntervalSince1970:time]; NSLog(@"date:%@",[detaildate description]); //实例化一个NSDateFormatter对象 NSDateFormatter*dateFormatter = [[NSDateFormatter alloc]init]; //设定时间格式,这里可以设置成自己需要的格式 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; // EEEE -> 星期描述 y - year M- month d- day H- hour(24) h - hour(12) m - minute s - second NSString *currentDateStr = [dateFormatter stringFromDate:detaildate]; return

OC 自定义Cordova插件流程

故事扮演 提交于 2020-04-06 05:50:12
博客是程序猿(媛)学习的开放社区,但原创不易,转载注明出处; likiBlog; 博客地址:http://www.cnblogs.com/likiBlog   搞了半个月Cordova插件,但一直没沉下心来仔细弄。为了更好的理解Cordova插件的开发,今天自己写了一个Demo。   1、Cordova 是什么、有什么用? Cordova是Adobe贡献给Apache的一款开源产品,是从PhoneGap中衍生出来。不同的是Codova是开源免费的,而PhoneGap是闭源收费的。 Cordova提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头、麦克  风等。 Cordova支持如下移动操作系统:iOS, Android,ubuntu phone os, Blackberry, Windows Phone, Palm WebOS, Bada 和 Symbian(根据操作系统不同,支持功能有细微差异)。 图例说明一下, 了解Cordova在Hybrid应用所处的位置和发挥的作用。      2、Cordova框架的组成结构。              3、Cordova的调用机制和实现原理。 Cordova的实现原理还是基于WebView截获URL(URL中包含类名和方法名以及参数),然后通过反射机制实现原生代码调用 。   

OC动画:CAAnimationGroup

余生长醉 提交于 2020-04-04 20:35:25
//贝塞尔曲线路径 UIBezierPath *movePath = [UIBezierPath bezierPath]; [movePath moveToPoint:CGPointMake(10.0, 10.0)]; [movePath addQuadCurveToPoint:CGPointMake(100, 300) controlPoint:CGPointMake(300, 100)]; //以下必须导入QuartzCore包   //关键帧动画(位置) CAKeyframeAnimation * posAnim = [CAKeyframeAnimation animationWithKeyPath:@"position"]; posAnim.path = movePath.CGPath; posAnim.removedOnCompletion = YES; //缩放动画 CABasicAnimation *scaleAnim = [CABasicAnimation animationWithKeyPath:@"transform"]; scaleAnim.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity]; scaleAnim.toValue = [NSValue

收集的一些OC知识点

和自甴很熟 提交于 2020-04-04 09:01:46
bool 即是 signed char,在iphone64位是unsigned char。 单例模式在c++和java都有,一般是需要一个不释放的对象,在创建时需要注意多线程的问题,使用synchronized(self)加锁,retainCount使用一个无限制大的数 ,需要重写retain和autorelease,release等函数。 属性: The @property is an Objective-C directive which declares the property. The "retain" in the parenthesis specifies that the setter should retain the input value. 在属性的setter中会retain一下对象 比如: @property (nonatomic, retain) NSString *s01; self.s01 = stringObject; 这个时候stringObject的retainCount会加1; 如果用_s01 = stringObject则stringObject的retainCount不会加1。 OC中的nil是空对象,调用任一方法都不会导致崩溃,所以对象最后释放的时候置为nil可以保证程序的稳定。 cocos2d的一些概念 有ccsence,

OC-字符串、数组、字典总结

回眸只為那壹抹淺笑 提交于 2020-04-03 10:22:46
#import <Foundation/Foundation.h> /* ∆以NSMutable开头的都是可变类型,以NSMutable开头定义的对象都是可以对数据进行修改; NSString //不可变字符串 NSMutableString//可变字符串 NSArray// 不可变数组 NSMutableArray//可变数组 NSDictionary//不可变字典 NSMutableDictionary//可变字典 可变的意思是可以对这个类型定义的变量进行修改或者删除操作 */ int main(int argc, const char * argv[]) { @autoreleasepool { /************************* 总结:字符串 **********************************/ //============== NSString =========================== NSString *str = [[NSString alloc] init]; //初始化===================== NSString *str0 = @"Hello World"; NSString *str1 = [[NSString alloc] initWithFormat:@"%@",str0]; /

OC的@property 和 @synthesize id

a 夏天 提交于 2020-04-02 05:34:31
学习java的JDBC,成员变量的setter和getter,eclipse都能帮我们自动生成;当然xcode这款编译器也很强大,也能自动生成; 1:@property @property是写在类的声明中的,具体写法; @interface Person : NSObject { _age; } @property int age; // 这句话相当于下边的getter和setter,但是注意age没有'_',但是就是为有下划线的age生成的,这样方便了点语法的调用; // - (void)setAge:(int)age; // - (int)age; @end 所以写法:@property (成员变量的类型) 去掉下划线的成员变量名 2:@synthesize:setter和getter方法的实现,在implementation中; @implementation @synthesize age = _age; // 注意格式,等号左边表示实现age的setter和getter,即 setAge 和 age; 等号右边表示访问那个成员变量; // 代替了下面这两个方法; /* - (void)setAge:(int)age { _age = age; } - (int)age { return _age; } */ @end 3:@property