//
// Person.h #import <Foundation/Foundation.h> @interface Person : NSObject - (void)say; - (void)sayWithName:(NSString *)name;
@end
//
// Person.m #import "Person.h" @implementation Person -(void)say
{
NSLog(@"加油");
} - (void)sayWithName:(NSString *)name
{
NSLog(@"%@ 加油", name);
}
@end
//
// main.m
// NSArray遍历 #import <Foundation/Foundation.h>
#import "Person.h" int main(int argc, const char * argv[]) { NSArray *arr = @[@"lnj", @"lmj", @"jjj"];
// 常规遍历
for (int i = ; i < arr.count; ++i) {
NSLog(@"arr[%i] = %@", i, arr[i]);
} // 如果是OC数组可以使用OC中的增强for循环来遍历
// 逐个取出arr中的元素, 将取出的元素赋值给obj
// 注意: obj的类型可以根据数组中元素的类型来写, 不一定要写NSObject
for (NSString *obj in arr) {
NSLog(@"obj = %@", obj);
} // 使用OC数组的迭代器来遍历
// 每取出一个元素就会调用一次block
// 每次调用block都会将当前取出的元素和元素对应的索引传递给我们
// obj就是当前取出的元素, idx就是当前元素对应的索引
// stop用于控制什么时候停止遍历
[arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if (idx == ) {
*stop = YES;
}
NSLog(@"obj = %@, idx = %lu", obj, idx);
}]; Person *p1 = [Person new];
Person *p2 = [Person new];
Person *p3 = [Person new];
Person *p4 = [Person new]; NSArray *arr2 = @[p1, p2, p3, p4];
[arr2 enumerateObjectsUsingBlock:^(Person *obj, NSUInteger idx, BOOL *stop) {
[obj say];
}]; // 如果使用OC数组存储对象, 可以调用OC数组的方法让数组中所有的元素都执行指定的方法
// 注意点: 如果数组中保存的不是相同类型的数据, 并且没有相同的方法, 那么会报错
// [arr makeObjectsPerformSelector:@selector(say)]; // withObject: 需要传递给调用方法的参数
[arr2 makeObjectsPerformSelector:@selector(sayWithName:) withObject:@"lnj"];
return ;
}

oc71--NSArray2的更多相关文章

  1. iOS - Swift Array 数组

    前言 public struct Array<Element> : CollectionType, MutableCollectionType, _DestructorSafeContai ...

  2. [OC Foundation框架 - 8] NSArray排序

    1.派生 voidarrayNew() { NSArray*array = [NSArrayarrayWithObjects:",nil]; NSArray*array2 = [arraya ...

  3. 假数据自我添加测试--NSArray object

    一.列表假数据 //在.h文件里面定义node所包含实体类---1 struct listTestNode { NSString *image; NSString *name; }; //在.m实现文 ...

  4. 06-UIKit(tableView数据模型)

    目录: 一.UIPageControl 二.table view数据模型 三.反向传值给TableView并更新 回到顶部 一.UIPageControl在页面下显示点 1 重要属性 .numberO ...

随机推荐

  1. Java———较大二进制文件的读、写

    由于项目需要,需要对二进制文件进行读写.转换. 文件说明:由其他程序得到的二进制文件,文件内容为:包含23543个三角形.13270个顶点的三角网所对应的721组流速矢量(u.v)文件,通俗些说,一条 ...

  2. swift Hashable Equatable

    /// You can use any type that conforms to the `Hashable` protocol in a set or /// as a dictionary ke ...

  3. 前端零基础快速入门JavaScript

    JavaScript代码可以直接嵌在网页的任何地方,不过通常我们都把JavaScript代码放到<head>中: <html><head> <script&g ...

  4. CAD把当前图上数据保存为一个二进流对象(com接口VB语言)

    主要用到函数说明: MxDrawXCustomFunction::WriteBinStreamEx 把当前图上数据保存为一个二进流对象,详细说明如下: 参数 说明 LPCTSTR pszPasswor ...

  5. CAD梦想看图6.0安卓版 20181022更新

    下载地址: http://www.mxdraw.com/ndetail_10109.html 1. 保存上次的文件浏览位置和绘制颜色 2. 调整工具条按钮位置和文字 3. 增加测量距离和面积时的捕捉功 ...

  6. 如何在MONO 3D寻找最短路路径

    前段时间有个客户说他们想在我们的3D的机房中找从A点到B点的最短路径,然而在2D中确实有很多成熟的寻路算法,其中A*是最为常见的,而这个Demo也是用的A*算法,以下计算的是从左上角到右下角的最短路径 ...

  7. 一只小蜜蜂(hdoj 2044,动态规划递推)

    Problem Description 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数.其中,蜂房的结构如下所示. Input 输入数据的第一行 ...

  8. C++ string 是否以‘\0’结尾 讨论

    转载https://blog.csdn.net/qq_31930499/article/details/80374310 之前在某篇文章中看到,C语言字符串是以’\0’结尾的,但是C++string类 ...

  9. UVA - 820 Internet Bandwidth(最大流模板题)

    题目: 思路: 直接套最大流的模板就OK了,注意一下输出的格式. 代码: #include <bits/stdc++.h> #define inf 0x3f3f3f3f #define M ...

  10. SpringBoot yaml的配置及使用

    application.yml配置如下 person:     lastName: hello     age:      boss: false     birth: //     maps: {k ...