【问题标题】:How do include and call sample code methods in Objective-C?如何在 Objective-C 中包含和调用示例代码方法?
【发布时间】:2010-07-23 00:41:08
【问题描述】:

iPhone/Mac“播放声音类”: link text

我在这里和其他地方发现了很多很棒的 Objective-c 类和代码示例。

我成功创建了 .h 和 .m 文件,但是如何从现有代码中调用它们?

  • 我应该把@class 或#import 语句放在哪里?
  • 如何调用这些方法?
  • 如果我需要播放 2-3 个不同的声音文件怎么办?
  • 为什么要包含代码...而没有任何关于如何在任何地方使用它的信息?

【问题讨论】:

    标签: iphone objective-c class oop


    【解决方案1】:

    通常安妮特,你可以通过查看对象超类来判断需要做什么

    在这种情况下,如果您查看 .h 文件,您可以看到 @interface Sound : NSObject

    Sound 是这个类的名字,NSObject 是我们的超类

    initWithPath 方法正在返回自身并执行 [super init] 意味着它调用父级 init 方法。

    为了让您调用此方法,有两种方法之一。

    你可以在你的委托中拥有一个你管理的属性。

    @class Sound;
    @interface ScanViewController : UIViewController  {
        Sound *aSound;
    }
    @property (nonatomic, retain) Sound *aSound;
    

    然后在你的委托中某处

    - (void) someFunction() {
       aSound = [[Sound alloc] initWithPath:@"pathtoSound"];
    }
    

    如果您不希望它成为一个属性,您可以像这样在 .m 文件的任何位置轻松创建一个新的 Sound 对象。

    Sound *mySound = [[Sound alloc] initWithPath:@"pathtoSound"];
    

    如果您想要多个声音,请将它们存储在声音数组中

    附:不要忘记释放这些对象,因为你已经分配了它们。

    【讨论】:

    • 所以我不用导入任何东西?
    • 什么时候应该使用“self”。相反:self.aSound = [[Sound alloc] initWithPath:@"pathtoSound"];
    【解决方案2】:

    无论您想从哪个类调用方法,请将#import "SomeClass.h" 放在 .h 文件的顶部。

    然后你可以做[SomeClass someMethod]SomeClass *object = [[SomeClass alloc] init],或者任何你想做的事情。

    这是非常基本的,你应该仔细阅读The Objective-C Programming Language Guide

    【讨论】:

    • 我已经读过那篇文章......以及许多其他文章......好几次了。我找不到任何地方都只是“清楚地说明”。也许是因为有很多不同的方法可以做到这一点......而且没有一种方法是“正确的”。所以我不必使用@class 了吗?
    • 我设法让东西编译没有任何错误......而且它似乎工作......(所以我知道我成功了 99%)......但是“构建和分析”似乎总是在这一行报告内存泄漏:aSound = [[Sound alloc] initWithPath:@"pathtoSound"];
    • 关于内存泄漏,你必须在完成后释放对象。
    • 它在我的 file.m dealloc 中发布:[mySound release]; (但是无论如何,当我分配它时,“构建和分析”都会报告泄漏。)我已经做了几次清理工作。而且由于我并没有真正做任何非常棘手的事情......我认为“构建和分析”很容易看到我的“dealloc/release”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多