首页
学习
活动
专区
工具
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-CNSArray解读

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

2.8K80

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、能够在一个外部,调用这个延展方法

41230

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方法,才能最终保存数据。...究其原因:是因为UIImageViewAnimationImage属性是一个NSArray类型,而不是NSMutableArray,故一旦完成初始化,其数组大小就已经确定了,数组长度不再可变。

87620

iOS - 关于 KVC 一些总结

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

1.8K10

Objective-C属性(property)特性(attribute)

Objective-C做过开发朋友都知道,里面的属性(可以近似地理解为变量)是用@property关键字定义,然后@property后面的括号,会写上若干「特性(attribute)」,后面跟数据类型...因此,写getter和setter,可算是Objective-C「约定俗成」做法了。...所有有mutable(可变)版本属性类型,NSString, NSArray, NSDictionary等等——他们都有可变版本类型:NSMutableString, NSMutableArray...,已经将原本mutable对象,copy成了immutable对象(NSMutableString变成NSString,NSMutableArray变成NSArray)。...如果设置为null_resettable,则要重写settergetter其中之一,自己做判断,确保真正返回值不是nil。

1.9K30

iOS开发之 Method Swizzling 深入浅出

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

2.3K70

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

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

2.2K50

面经之《招聘一个靠谱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是对象 方法可以调用其他方法 方法不能访问成员变量 方法不定直接调用对象方法 实例方法: 实例方法是属于实例对象

980100

(转)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 *

5.9K40

探寻iOS之协议(protocol)

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

1.6K20

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.1K20

窥探Swift之数组与字典

无论是简单还是复杂程序,数组和字典用处还是比较多,这两者虽然是Swift基础内容,但是也不失其重要性。关于Objc集合请参考之前博客《Objective-C集合》。...在ObjC可以使用NSArray来声明不可变数组,使用NSMutableArray来声明可变数组。...下图是在ObjCNSArray操作后结果,你不能对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有一个子类NSMutableArrayNSMutableArray代表集合元素可变集合,因此,程序可以向集合添加新元素,可以删除集合已有的元素。   ...由于NSMutableArrayNSArray子类,所以继承了NSArray所有方法,此外还提供了一系列可以对数组进行修改方法: 添加集合元素方法:这类方法以add开头 删除集合元素方法

2K80

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

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

1.9K10
领券