如何实现Mac Developer Library中的方法

时间:2013-09-05 02:01:00

标签: objective-c

我是Objective C编程的新手,只需要检查我将如何实现我在Mac Developer Library中找到的东西。 例如,我在Mac Developer Library中找到了这段代码:

- (BOOL)containsObject:(id)anObject

我需要执行此方法的步骤吗?

  1. 在.h文件中添加

    -(BOOL)containsObject:(id)anObject;

  2. 然后在.m文件中实现它;

    - (BOOL)containsObject:(id)anObject
    {
       //What do I place here to search my array with the objects?
       return YES;
    }
    

    有人可以帮我一个例子,我会如何搜索一组数字并使用这种方法吗?

    这是我的阵列:

    NSArray *first;
    
    first = [NSArray arrayWithObjects:1,2,3,4,5, nil];
    

2 个答案:

答案 0 :(得分:1)

关于第一个问题,你可以做到这一点。为您提供更好的视觉理解的一个例子是:

YourClassName.h

#import <Foundation/Foundation.h>

@interface YourClassName : Subclass  //replace subclass with something like NSObject or whatever you need
{

}

- (BOOL)containsObject:(id)anObject;

@end

和...

YourClassName.m

#import "YourClassName.h"

@implementation YourClassName

- (BOOL)containsObject:(id)anObject
{
    //Insert function body here
}

@end

至于你的第二个问题,我对使用NSArray或使用这个奇怪的功能加载它并不是很熟悉。我的建议是使用(NSArray)anObject而不是(id)anObject,因为您可以将数组直接加载到函数中并在那里创建搜索参数。我不确定你在containsObject中究竟找到了什么对象。你看到它是否包含这个数字?如果值包含数组?指出一点,我可以为你找到一个更好的答案

修改

我想到你可能只是在寻找数组内部的数字,因为你是Objective-C的新手。要完成你想要的,你有几个选择。两者都需要改变你的功能。第一个就是将功能改为:

- (BOOL)containsObject:(int)object fromArray:(int*)array length:(int)length;

在YourClassName.h中。现在,您始终可以将参数更改为不同的数据类型,但这适用于整数。您也可以在没有长度参数的情况下执行此操作,但我认为它为我们节省了一些代码(个人偏好)。在.m文件中:

- (BOOL)containsObject;(int)object fromArray:(int*)array length:(int)length
{
    for(int i = 0; i <= length; i++)
    {
        if (array[i] == object)
        {
            return YES;
        }
    }
    return NO;
}

第二个是没有长度选项和更多代码

答案 1 :(得分:1)

您的意思是“实施” - 如编写您自己的版本 - 或“使用”?你好像从前者开始,以后者结束......

你如何使用它?以你的榜样为例,纠正:

NSArray *first = [NSArray arrayWithObjects:@1, @2, @3, @4,@ 5, nil];

@1等是创建NSNumber 对象的简写 - 您只能将对象引用而不是原始值放入NSArray。简写有效地扩展到[NSNumber numberWithInt:1]等。

现在使用containsObject:

BOOL containsTheAnswerToEverything = [first containsObject:@42];

如果数组包含代表42的BOOL和其他YES,则会将NSNumber变量设置为NO

你如何实现它?您可以在一个循环中检查数组的每个元素,将每个元素与您要查找的对象进行比较,您将在C中使用相同的算法(您似乎知道)。

如果你问如何定义一个类,那么你应该阅读Objective-C,但你的第2点是正确的大纲。

HTH