首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Objective-C中构建类方法的NSArray(或NSMutableArray)?

在Objective-C中,要创建一个类方法的NSArray(或NSMutableArray),您需要遵循以下步骤:

  1. 导入所需的框架:
代码语言:objective-c
复制
#import<Foundation/Foundation.h>
  1. 创建一个类,并在其中定义一个类方法,该方法返回一个NSArray或NSMutableArray:
代码语言:objective-c
复制
@interface MyClass : NSObject

+ (NSArray *)myArray;
+ (NSMutableArray *)myMutableArray;

@end
  1. 实现类方法:
代码语言:objective-c
复制
@implementation MyClass

+ (NSArray *)myArray {
    return @[@1, @2, @3];
}

+ (NSMutableArray *)myMutableArray {
    return [NSMutableArray arrayWithObjects:@1, @2, @3, nil];
}

@end
  1. 在其他类中调用这些类方法:
代码语言:objective-c
复制
#import "MyClass.h"

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    NSArray *array = [MyClass myArray];
    NSMutableArray *mutableArray = [MyClass myMutableArray];
}

@end

这样,您就可以在Objective-C中创建一个类方法的NSArray(或NSMutableArray)。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Objective-C中NSArray类的解读

Objective-C中NSArray类的解读     NSArray数组类是Objective-C语言中常用的也是重要的一个类,除了开发中常用到的一些基础功能,NSArray及其相关类中还封装了许多更加强大的功能...NSArray中属性与方法: //获取数组中元素个数 @property (readonly) NSUInteger count; //通过下标获数组中的元素 - (ObjectType)objectAtIndex...:(NSUInteger)index; //初始化方法 - (instancetype)init; //通过C语言风格的数组创建NSArray对象 需要注意,C数组中需要为Objective对象,cnt...; //像数组中追加一个元素 这个方法会返回一个新的数组 - (NSArray *)arrayByAddingObject:(ObjectType)anObject; //像数组中追加一组元素...:(ObjectType __unsafe_unretained [])objects; NSMutableArray中属性与方法: //向数组中追加一个元素 - (void)addObject:(ObjectType

1.3K20

iOS开发之__NSArray0、__NSArrayI、__NSArrayM和__NSPlaceholderArray

Class Clusters 首先说一下Class Clusters(类簇)是抽象工厂模式在iOS下的一种实现,iOS中如NSString、NSArray、NSDictionary以及NSNumber都运作在这一模式下...NSArray的类簇 在《effective objective-c 2.0编写高质量iOS与OS X代码的52个有效方法》中这样写道:系统框架中有许多类簇,大部分collection类都是类族。...例如NSArray与其可变版本NSMutableArray。这样看来实际上有两个抽象基类,一个用于不可变数组,一个用于可变数组。尽管具备公共接口的类有两个,但任然可以合起来算一个类族。...不可变的类定义了对所有数组都通用的方法,而可变类则定义了那些只适用于可变数组的方法。...不过,任然有方法判断出某个实例所属的类是否位于类族中。

3K80
  • oc深坑測试题及其答案

    B、Objective-C一个完整的类分为interface和implementation两块 C、Objective-C对象使用new分配内存,用delete释放 D、Objective-C协议分为非正式协议和正式协议...中的方括号“[]”的作用,下列说法错误的是: 答案:(D) A、用于通知某个对象该做什么 B、方括号内第一项是对象,其余部分是你须要对象运行的操作 C、在Objective-C中通知对象运行某种操作...41、 下面说法正确的是: 答案:(C) A、求数组的内容的个数用length方法 B、字典是依据其位置来索引数据的 C、协议中定义的方法默认是必须实现的 D、定义类目必需要拿到自己类的源码...B、在要求确认协议的类必须实现协议中的方法时,能够使用@required。 C、一个协议能够被多个类确认。 D、协议中声明的方法。默认是@optional的。...要调用扩展的方法,既能够用父类,也能够用子类 B、用类目能够扩展一个类,能够直接用该类或该类的实例对象,去调用该类目扩展的方法 C、延展就是类目 D、能够在一个类的外部,调用这个类延展的方法

    45030

    Objective-C中的集合类

    下面详细的介绍Objective-C中的集合类以及每个集合类的用法,学过其他面向对象编程语言的小伙伴们看到OC的集合类会有种莫名的亲切感,理解起来问题不大,可以类比Java中的集合类去学习...在Objective-C中的集合类中主要包括不可变的数组--NSArray,  可变的数组--NSMutableArray,   不可变的字典--NSDictionary,    可变的字典--NSMutableDictionary...NSArray也是OC中的一个对象,使用NSArray也需要进行实例化,前面的博客在类的初始化中提到了便利初始化函数和便利构造器,在NSArray中也少不了这两样东西我们可以通过NSArray的便利初始化函数或者便利构造器进行...                字典的遍历方法是通过字典里的-(NSArray *)allKeys获取所有的key存入数组中然后通过遍历数组获取key对应的value,封装成函数如下: 1 2 3 4...OC中的集合类中是不能放基本数据类型的,那么我们如何把基本数据类型封装成对象呢?

    1.1K70

    【IOS】IOS开发问题解决方法索引(三)

    编写自文档化的代码 http://kb.cnblogs.com/page/47707/ 4 objective-c与js交互 如何在Objective-C的类里面声明私有方法. http...://hi.baidu.com/shiqyn/item/52887ff19d3df61aa729885f Objective-C中的类本身并没有私有方法这个概念,声明在 .h 文件中的方法都是公有的。..... } // 方法实现 @end 在上面这个例子中,test 就是 Hello 类的“私有方法”了。...11 objective-csetter方法调用时机 在保存类成员的数据时,需要使用self.***的操作来调用setter方法,才能最终保存数据。...究其原因:是因为UIImageView的AnimationImage属性是一个NSArray类型,而不是NSMutableArray,故一旦完成初始化,其数组大小就已经确定了,数组长度不再可变。

    91820

    iOS - 关于 KVC 的一些总结

    ② 数组运算符:根据运算符的条件,将符合条件的对象以一个NSArray实例返回。 ③ 嵌套运算符:处理集合对象中嵌套其他集合对象的情况,并根据运算符返回一个NSArray或NSSet实例。...备注: @max和@min根据右键路径指定的属性在集合中搜索,搜索使用compare:方法进行比较,许多基础类 (如NSNumber类) 中都有定义。...嵌套运算符 处理集合对象中嵌套其他集合对象的情况,并根据运算符返回一个NSArray或NSSet实例。...注意: 因为Swift中的所有属性都是对象,所以这里仅适用于Objective-C属性。 当进行赋值如setValue:forKey:时,如果key的数据类型是非对象类型,则value就禁止传nil。...我们可以在消息接收者类中实现validate:error:的方法来自定义逻辑返回YES或NO。

    1.9K10

    Foundation framework in iOS

    objective-c不像CSharpe有一个标准库 他的标准有很多,想象一下近40年前的编程语言 他都经历了什么,因为早期objective-c的一套工具库是乔老头子出走时Next-step公司写的,...NSArray是不可变的,NSMutableArray是可变的。二者在类型上是不同的。如果需要操作数组还是用NSMutableString,这个版本的array。...中,我们就需要将这些数据类型或结构体包装成OC对象,以便集合能访问到。...文件和目录操作,IOS文件操作,NSFileManager使用文件操作: objective-c通过使用NSFileManager类来管理和操作文件、目录,NSFileManager,文件或目录是使用文件的路径名的唯一标示...NSFileManager对象通过defaultManager方法来创建实例 列如: NSFileManager *fm = [NSFileManager defaultManager]; 删除某个文件

    6910

    iOS开发之 Method Swizzling 深入浅出

    继承 我们可以使用继承的方式来解决这个问题。创建一个基类,在这个基类中添加统计方法,其他类都继承自这个基类。 然而,这种方式修改还是很大,而且定制性很差。...Selector是一个在运行时被注册(或映射)的C类型字符串。Selector由编译器产生并且在当类被加载进内存时由运行时自动进行名字和实现的映射。...该方法的第一个参数指向调用方法的自身(即内存中类的实例对象,若是调用类方法,该指针则是指向元类对象(metaclass)。第二个参数是这个方法的名字selector,该方法的真正参数紧随其后。...类名 真身 NSArray __NSArrayI NSMutableArray __NSArrayM NSDictionary __NSDictionaryI...) 注:对于 Swift 的自定义类,因为默认并没有使用 Objective-C 运行时,因此也没有动态派发的方法列表,所以如果要 Swizzle 的是 Swift 类型的方法的话,是需要将原方法和替换方法都加上

    2.4K70

    16道面试官必问你必须会的iOS面试题

    题目 8:给你一个嵌套的 NSArray 数据,实现一个迭代器类,该类提供一个 next() 方法,可以依次的取出这个 NSArray 中的数据。...我们再来看看继承关系,由于类方法的定义是保存在元类 (metaclass) 中,而方法调用的规则是,如果该类没有一个方法的实现,则向它的父类继续查找。...所以,为了保证父类的类方法可以在子类中可以被调用,所以子类的元类会继承父类的元类,换而言之,类对象和元类对象有着同样的继承关系。...NSObject 的元类中定义了类方法,例如 +(id)alloc 方法 和 + (void)load 、+ (void)initialize 方法。...NSObject 的元类继承自 NSObject 类,所以 NSObject 类是所有类的根,因此 NSObject 中定义的实例方法可以被所有对象调用,例如 - (id)init 方法 和 - (void

    2.7K50

    面经之《招聘一个靠谱的iOS》import CYLBlockExecutor.himport CYLBlockExecutor.himport CYLNSObject+RunAtDeallo

    就是复制一个不可变 NSArray 的对象;2、使用了 atomic 属性会严重影响性能 ; 第1条的相关原因在下文中有论述《用@property声明的NSString(或NSArray,NSDictionary...【注:深浅拷贝的概念,在下文中有介绍,详见下文的:用@property声明的 NSString(或NSArray,NSDictionary)经常使用 copy 关键字,为什么?...这个概念已经定型,并且经由“属性”这一特性而成为 Objective-C 2.0 的一部分。 而在正规的 Objective-C 编码风格中,存取方法有着严格的命名规范。...(或NSArray,NSDictionary)经常使用copy关键字,为什么?...类方法: 类方法是属于类对象的 类方法只能通过类对象调用 类方法中的self是类对象 类方法可以调用其他的类方法 类方法中不能访问成员变量 类方法中不定直接调用对象方法 实例方法: 实例方法是属于实例对象的

    1K100

    探寻iOS之协议(protocol)

    任何其他类都能够选择遵守这个协议并实现其中的一个或多个方法,从而利用这个行为。如果协议遵守者实现了协议中的方法,那么声明协议的类就能够通过遵守者调用协议中的方法。...总结: 协议能够声明方法,协议遵守者实现协议中的方法,声明协议的类通过遵守者调用协议中的方法; protocol不能定义成员变量,但是能够声明属性,因为属性=成员变量+setting方法+getting...因为这个协议中定义了一些基本的方法,由于我们使用的所有类都继承NSObject这个基类,而这个基类遵守了这个协议,那么也就实现了其中的那些方法,这些方法当然可以由NSObject及其子类对象调用...本段一开始便说道:中的方法在NSObject基类中实现了,那么无需再关心实现了,直接调用中的方法吧。...例如NSArray,在定义的时候需要申明支持NSCopying和NSMutableCopying协议,在NSArray中实现- (id)copyWithZone:(NSZone *)zone,在NSMutableArray

    1.7K20

    (转)iOS开发之UICollectionViewController系列(三) :UICollectionView自定义瀑布流

    我们需要在UICollectionViewLayout的子类中实现相应的布局方法,因为UICollectionViewLayout是虚基类,是不能直接被实例化的,所以我们需要新建一个布局类,这个布局类继承自...在该函数中具体调用的函数如下所示: Objective-C #pragma mark -- 虚基类中重写的方法 /** * 该方法是预加载layout, 只会被执行一次 */...Objective-C /** * 该方法为每个Cell绑定一个Layout属性~ */ - (NSArray *)layoutAttributesForElementsInRect...Objective-C /** * 求CellY数组中的最大值并返回 */ - (CGFloat) maxCellYArrayWithArray: (NSMutableArray *...Objective-C /** * 求CellY数组中的最小值的索引 */ - (CGFloat) minCellYArrayWithArray: (NSMutableArray *

    6.1K40

    iOS框架·Masonry源码深度解析及学习启示:设计模式与链式编程思想

    但是,如2.3节中的链式语法.top,该方法返回的newConstraint实际是其子类--MASViewConstraint类的实例,故而可调用子类MASViewConstraint实现的equalToWithRelation...如2.3.1节所述,MASConstraintMaker.m 中设置了 MASViewConstraint 类 newConstraint 对象的 MASConstraintDelegate 代理为“self...关于 install ,是基类 MASConstraint 的抽象方法,方法体由MASViewConstraint 或 MASCompositeConstraint 实现。...是一门动态语言,它使用了一种动态的消息发送机制,即对象(object)或类(class)调用方法。...而OC中的点语法则只能通过setter和getter方法作用于类的属性,而不能作用于某个方法。想实现链式语法,只能通过类似block属性的getter方法。

    1.2K20

    窥探Swift之数组与字典

    无论是简单还是复杂的程序,数组和字典的用处还是比较多的,这两者虽然是Swift的基础内容,但是也不失其重要性。关于Objc的集合类请参考之前的博客《Objective-C中的集合类》。...在ObjC中可以使用NSArray来声明不可变数组,使用NSMutableArray来声明可变数组。...下图是在ObjC中对NSArray操作后的结果,你不能对NSArray中的元素进行修改,也就是说你对NSArray的操作权限只有读的权限,没有写的权限。...其实Swift中数组移除的方法名和用法和Objective-C中移除可变数组中的元素的方式极为相似。下方截图中是经常使用的移除方法,用法都没有什么难理解的地方,在此就简单的聊上一嘴。...二、Swift中的字典(Dictionary) Swift中字典和Objective-C中的字典除了语法不一样外,用法也是大同小异的。字典中存放的就是Key和Value也就是键值对。

    1.9K90

    OC学习13——Foundation框架中的集合

    NSArray分别提供了类方法和实例方法来创建NSArray,两种创建方式基本类似,只是类方法以array开头,实例方法以init开头。...来创建NSArray   参考NSArray类的文档,可以看到NSArray集合的方法大致包含如下几类: 查询集合元素在NSArray中的索引,即下标 根据索引值取出NSArray集合中的元素 对集合元素整体调用方法...该方法可额外传入一个参数,用于控制遍历的选项,如反向遍历。...NSArray有一个子类NSMutableArray,NSMutableArray代表集合元素可变的集合,因此,程序可以向集合中添加新元素,可以删除集合中已有的元素。   ...由于NSMutableArray是NSArray的子类,所以继承了NSArray中的所有方法,此外还提供了一系列可以对数组进行修改的方法: 添加集合元素的方法:这类方法以add开头 删除集合元素的方法:

    2.1K80

    iOS - 老生常谈内存管理(三):ARC 面世

    大多数情况下,我们会在dealloc方法中移除通知或观察者对象等。 在MRC下,我们可以手动调用dealloc。但在ARC下,这是禁止的,否则编译不通过。...如NSString的stringWithContentsOfFile类方法,其参数NSError **使用的是__autoreleasing修饰符。...在《从 MRC 说起 —— 你不持有通过引用返回的对象》章节中也说到,Cocoa 中的一些方法指定通过引用返回对象(即,它们采用ClassName **或id *类型的参数),常见的就是使用NSError...幸运的是,迁移到ARC的代码很少开始泄漏,因为属性已经声明是否retain。 Q: block 是如何在 ARC 中工作的?...当你迁移项目到ARC或创建一个ARC项目时,所以Objective-C源文件的默认编译器标志将设置为-fobjc-arc,你可以使用-fno-objc-arc编译器标志为指定的类禁用ARC。

    2.2K10
    领券