ios开发取余,为什么要学IOS开发

iOS 函数、指数、对数、取整、取余、绝对数等

1、 三角函数 

成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站建设、做网站、古浪网络推广、微信小程序、古浪网络营销、古浪企业策划、古浪品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供古浪建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com

double sin (double);正弦 

double cos (double);余弦 

double tan (double);正切 

2 、反三角函数 

double asin (double); 结果介于[-PI/2, PI/2] 

double acos (double); 结果介于[0, PI] 

double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2] 

double atan2 (double, double); 反正切(整圆值), 结果介于[-PI, PI] 

3 、双曲三角函数 

double sinh (double); 

double cosh (double); 

double tanh (double); 

4 、指数与对数 

double exp (double);求取自然数e的幂 

double sqrt (double);开平方 

double log (double); 以e为底的对数 

double log10 (double);以10为底的对数 

double pow(double x, double y);计算以x为底数的y次幂 

float powf(float x, float y); 功能与pow一致,只是输入与输出皆为浮点数 

5 、取整 

double ceil (double); 取上整 

用法:向上取整ceil(3.123333)=4 ceilf(3.123333)=4

double floor (double); 取下整 

用法:  向下取整 floor(3.123333)=3

6 、绝对值 

double fabs (double);求绝对值 

double cabs(struct complex znum) ;求复数的绝对值 

7 、标准化浮点数 

double frexp (double f, int *p); 标准化浮点数, f = x * 2^p, 已知f求x, p ( x介于[0.5, 1] ) 

double ldexp (double x, int p); 与frexp相反, 已知x, p求f 

8 、取整与取余 

double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分 

用法:两数整除之后的余数fmod(9, 8)=1.00

double fmod (double, double); 返回两参数相除的余数 

用法:double x, fractpart, intpart;

    x = 8.123456;

    fractpart = modf(x, intpart);

整数部分 = 8.000000

小数部分 = 0.123456

9 、其他 

double hypot(double x, double y);已知直角三角形两个直角边长度,求斜边长度 

double ldexp(double x, int exponent);计算x*(2的exponent次幂) 

double poly(double x, int degree, double coeffs [] );计算多项式 

nt matherr(struct exception *e);数学错误计算处理程序

原作者链接:

ios 开发若干技巧

1.定义函数时,希望传入的参数不为nil,或者为nil时会有警告显示:

如下:

- (instanceype)initWithFoo:(NSString *)foo bar:(NSString *)bar sark:(NSString *)sark

__atttribute__((nonnull(1, 2)));

p.s. index从1开始,不是0,且只对对象生效。

该技巧同样来自,sunnyxx大神的微信,逗比狗~

2.定义函数时,希望子类override该方法时候,必须调用super,否则编译器直接报错。

@interface OldSix:NSObject

- (void)fooWithNothing __attribute__((objc_requires_super));

该技巧同样来自,sunnyxx大神的微信,逗比狗~

wait~~~~~

/*检查子类在重写该方法时有没有调用自己(父类)的实现

*对于一些可以被继承的类,需要子类在重某一调用父类的实现以保证正确的行为,通过在头文件方法的声明末尾添加`NS_REQUIRES_SUPER`

*可以让编译器检查子类方法有调用父类的实现。具体使用方法如下:

* - (void)viewWillAppear:(BOOL)animated NS_REQUIRES_SUPER;

*/

但是根据我的实际测试,发现sunnyxx大神仙的方法,没有任何显示效果,不知道是不是我打开的方式不对还是怎么,

总之,NS_REQUIRES_SUPER的方法亲测可用。

3.误删系统sdk头文件的解决办法

在终端中输入:

$ cd ~/Library/Developer/Xcode/DerivedData/ModuleCache/

$ rm -rf *

4.ARC下打印retainCount

extern uintptr_t _objc_rootRetainCount(id obj);

id test = [NSString new];

NSLog(@"retain count %lu",_objc_rootRetainCount(test));

5.工程报错下,仍然可以编译成功

6.定位方法的调用者

iOS 中常用的几种函数 (向上,向下,四舍五入)取整

2.高斯函数,向下取整

floor(1.0/4)=0;

floor(4.0/4)=1;

floor(5.0/4)=1;

floor(8.0/4)=2;

floor()方法是向下取整,类似于数学中的高斯函数 [].取得不大于浮点数的最大整数,对于正数来说是舍弃浮点数部分,对于复数来说,舍弃浮点数部分后再减1.

3.ceil函数,向上取整。

如:

ceil(1.0/4)=1;

ceil(4.0/4)=1;

ceil(5.0/4)=2;

ceil(8.0/4)=2;

ceil()方法是向上取整, 括号内是double类型

这两个函数都是math.h库里面的,直接使用就行,ios不需要再次倒入头文件,类似这个数学函数还有很多,如

1、 三角函数

double sin (double); 正弦

double cos (double);余弦

double tan (double);正切

2 、反三角函数

double asin (double); 结果介于[-PI/2, PI/2]

double acos (double); 结果介于[0, PI]

double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2]

double atan2 (double, double); 反正切(整圆值), 结果介于[-PI, PI]

3 、双曲三角函数

double sinh (double);

double cosh (double);

double tanh (double);

4 、指数与对数

double exp (double);求取自然数e的幂

double sqrt (double);开平方

double log (double); 以e为底的对数

double log10 (double);以10为底的对数

double pow(double x, double y);计算以x为底数的y次幂

float powf(float x, float y); 功能与pow一致,只是输入与输出皆为浮点数

5 、取整

double ceil (double); 取上整

double floor (double); 取下整

6 、绝对值

double fabs (double);求绝对值

double cabs(struct complex znum) ;求复数的绝对值

7 、标准化浮点数

double frexp (double f, int *p); 标准化浮点数, f = x * 2^p, 已知f求x, p ( x介于[0.5, 1] )

double ldexp (double x, int p); 与frexp相反, 已知x, p求f

8 、取整与取余

double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分

double fmod (double, double); 返回两参数相除的余数

9 、其他

double hypot(double x, double y);已知直角三角形两个直角边长度,求斜边长度

double ldexp(double x, int exponent);计算x*(2的exponent次幂)

double poly(double x, int degree, double coeffs [] );计算多项式

nt matherr(struct exception *e);数学错误计算处理程序

iOS SideTable

下:

●spinlock_t slock : 自旋锁,用于上锁/解锁 SideTable。 ●RefcountMap refcnts :以DisguisedPtrobjc_object为key的hash表,用来存储OC对象的引用计数(仅在未开启isa优化 或 在isa优化情况下isa_t的引用计数溢出时才会用到)。 ●weak_table_t weak_table : 存储对象弱引用指针的hash表。是OC weak功能实现的核心数据结构。

除了三个成员外,苹果为SideTable还写了构造和析构函数:

// 构造函数

SideTable() {

memset(weak_table, 0, sizeof(weak_table));

}

通过析构函数可以知道,SideTable是不能被析构的。

最后是一堆锁的操作,用于多线程访问SideTable, 同时,也符合我们上面提到的StripedMap中关于value的lock接口定义:

SideTables是一个64个元素长度的hash数组,里面存储了SideTable。SideTables的hash键值就是一个对象obj的address。 因此可以说,一个obj,对应了一个SideTable。但是一个SideTable,会对应多个obj。因为SideTable的数量只有64个,所以会有很多obj共用同一个SideTable。

先来说一下最外层的SideTables。SideTables可以理解为一个全局的hash数组,里面存储了SideTable类型的数据,其长度为64。

SideTabls可以通过全局的静态函数获取:

可以看到,SideTabls 实质类型为模板类型StripedMap

可以知道, StripedMap 是一个以void *为hash key, T为vaule的hash 表。 hash定位的算法如下:

把地址指针右移4位异或地址指针右移9位,为什么这么做,也不用关心。我们只要关心重点是最后的值要取余StripeCount,来防止index越界就好。

iOS开发交流技术群: 563513413 ,不管你是大牛还是小白都欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

StripedMap的所有T类型数据都被封装到PaddedT中:

之所以再次封装到PaddedT (有填充的T)中,是为了字节对齐,估计是存取hash值时的效率考虑。

接下来,这些PaddedT被放到数组array中:

然后,苹果为array数组写了一些公共的存取数据的方法,主要是调用indexForPointer方法,使得外部传入的对象地址指针直接hash到对应的array节点:

接下来是一堆锁的操作,由于SideTabls是一个全局的hash表,因此当然必须要带锁访问。StripedMap提供了一些便捷的锁操作方法:

可以看到,所有的StripedMap锁操作,最终是调用的array[i].value的相关操作。因此,对于模板的抽象数据T类型,必须具备相关的lock操作接口。

因此,要用StripedMap作为模板hash表,对于T类型还是有所要求的。而在SideTables中,T即为SideTable类型,我们稍后会看到SideTable是如何符合StripedMap的数据类型要求的。

本文名称:ios开发取余,为什么要学IOS开发
链接地址:https://www.cdcxhl.com/article36/dsdissg.html

成都网站建设公司_创新互联,为您提供建站公司网站排名网站设计公司微信公众号网站营销网站导航

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都seo排名网站优化