2010-07-23 57 views
1

iPhone/Mac的“播放声音类”: link text如何在Objective-C中包含和调用示例代码方法?

我发现一个可怕的很多伟大的Objective-C类和代码示例这里...等世界各地。

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

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

回答

0

无论你想从哪一个类中调用某个方法,都要将#import "SomeClass.h"放在.h文件的顶部。

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

这是非常基本的,你应该通过The Objective-C Programming Language Guide

+0

我读过......和其他许多...多次。我找不到所有这些只是“清楚地说明”。也许是因为有很多不同的方式来做到这一点......并且没有一种方法是“正确的”。 所以我不必一直使用@class? – Annette 2010-07-23 14:26:07

+0

我设法让事情编译没有任何错误......并且它似乎工作...(所以我知道我99%成功)......但“构建和分析”似乎总是报告内存泄漏这一行:aSound = [[Sound alloc] initWithPath:@“pathtoSound”]; – Annette 2010-07-23 14:28:23

+0

@class与#import:http:// stackoverflow。com/questions/322597/objective-c-class-vs -inport – Kurbz 2010-07-23 14:29:24

1

阅读通常吕秀莲,你可以告诉需要通过查看对象超类

在这种情况下,如果你看一下.H做什么文件,你可以看到@interface声音:NSObject的

声音是这个类的名称,NSObject的是我们的超

的使用initWithPath方法返回本身并做了[超级初始化]这意味着CA lls父母init方法。

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

您可以在代理中拥有一个您管理的属性。

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

然后somwhere在您的代理

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

如果你没有希望它是你可以很容易地在一个.m文件的任何地方创建一个新的Sound对象,像这样的属性。

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

如果你想多种声音,一个声音阵列

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

+0

所以我不需要导入任何东西? – Annette 2010-07-23 14:24:38

+0

什么时候应该使用“自我”。相反:self.aSound = [[Sound alloc] initWithPath:@“pathtoSound”]; – Annette 2010-07-23 14:31:29

相关问题