ios开发for循环,ios循环引用怎么解决

ios 快速获取数组中的最大值、最小值

在开发过程中,经常会用到NSArray,然后找出数组中的最大值、最小值,很多时候我们一般用for循环来封装一个算法求最值,虽然可以但是还是不够快速。其实Apple底层可我们封装了一个十分好用的API,可以通过valueForKeyPath方法来设置你想要获取的一些数组。

创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的鹿城网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

NSMutableArray* array = [NSMutableArray array];

for (int i = 0; i 10; i++) {

CGFloat num = arc4random() % 100 + 1;

[array addObject:[NSNumber numberWithFloat:num]];

}

CGFloat maxValue = [[array valueForKeyPath:@"@max.floatValue"] floatValue];

CGFloat minValue = [[array valueForKeyPath:@"@min.floatValue"] floatValue];

min、max是NSArray的私有属性,通过.语法是拿不到的,会报错的。类似这种私有属性还有

@”@avg.floatValue” (获取平均值), 

@”@count.floatValue”(获取数组大小) 

@"@sum.floatValue"(求和)

还可以去重

NSArray *array = @[@"a", @"wechat", @"qq", @"msn", @"wechat"];

NSArray *deleltNewA = [array valueForKeyPath:@"@distinctUnionOfObjects.self"];

iOS开发之UIFont字体大全和自定义字体

在开发过程中很多App为了美观经常需要使用一些自定义的字体,其实苹果本身也是支持很多字体的,下面就记录一下查看所有字体并设置的方法,其实挺简单的。

知道设置字体的方法了,就需要找出苹果本身支持的所有字体了,一个for循环就可以搞定了。

下面是所有的效果,可以在下面直接找需要的字体

不过发现这些效果对中文好像没什么效果,这就需要自定义字体了

1.将准备好的字体拉入项目中

2.打开Build Phases—Copy Bundle Resources,确保刚添加的字体文件在列表中,否则需要手动加到这里

3.编辑”项目名-Info.plist”文件

找到Fonts provided by application ,将加入的字体名连同扩展名填在这里

4.利用上面那个for循环打印出所有字体,并找到刚刚加入的字体

5.现在就可以使用了[UIFont fontWithName:@"chenweixun-yingxing" size:16];

ios开发如何通过for循环向一个数组里添加数据

用循环语法

这个添加属于动态添加,需要用这个数组 nsmutablearray 具体用法。百度一下。

iOS开发循环引用

-- :表示弱引用。

- :表示强引用。

循环引用可以简单理解为对象A引用了对象B,而对象B又引用了对象A:A - B - A,此时双方都同时保持对方的一个引用,导致任何时候双方的引用计数都不为0,双方始终无法释放就造成内存泄漏。

当然不只是两个对象之间相互引用会形成循环引用,多个对象之间相互引用最终形成环同样会形成循环引用。

例如:A-B-C-....-X-B。

循环引用对 app 有潜在的危害,会使内存消耗过高,导致内存泄漏,性能变差和 app 闪退等。

block 、 delegate 、NSTimer

self.tableView.delegate = self;

如果 delegate使用strong修饰就会构成循环引用:self - tableView - delegate - self。

所以在定义delegate属性时使用weak便能解决这一问题:self - tableView -- delegate - self。tableView和delegate之间不是强引用,所以构不成循环。

规避delegate循环引用的杀手锏也是简单到哭:定义delegate属性时请用assign(MRC)或者weak(ARC),千万别手贱玩一下retain或者strong。

(1)并不是所有block都会产生循环引用,block是否产生循环引用是需要我们去判断的,例如

(2)self - reachabilityManager - block - self,才会产生循环引用,并且XCode给出了循环引用warning,例如

(3)解决block循环引用的方法是使用__weak修饰self,然后在block里使用被修饰后的weakSelf来代替self:

1、合适的时机启动和销毁 NSTimer

解决 NSTimer 的循环引用,我们首先会想到的方法应该是在 OneViewController dealloc 之前就销毁 NSTimer,这样循环就被打破了。

最简单的方法就是在 viewWillAppear 中启动 NSTimer,然后在 viewWillDisappear 中销毁 NSTimer,成对出现,绝对没有问题。

2、Effective Objective-C ”中的52条方法

计时器保留其目标对象,反复执行任务导致的循环,确实要注意,另外在dealloc的时候,不要忘了调用计时器中的 invalidate方法。

ios开发 怎么设置for in 循环索引

for循环的话主要分为两种,一种是你说的三个条件的,用索引来遍历对象(List,数组,Dictionary等等);另一种就是图上这种for(var i in Object),这种就是直接遍历Object下的子元素集合了,范围自然默认为集合的容量了,也就不需要其他条件了


网站栏目:ios开发for循环,ios循环引用怎么解决
本文路径:http://ybzwz.com/article/dsddgod.html