3

TriggerIO ネイティブ プラグインを作成して上で音声を再生しようとしていますが、オブジェクトにアクセスできません。iPodMusicPlayerself

#import "alert_API.h"

@implementation alert_API

+ (void)play:(ForgeTask*)task text:(NSString *)filename {
    NSURL* url = [[NSBundle mainBundle] URLForResource:@"Rondo_Alla_Turka_Short" withExtension:@"aiff"];
    NSAssert(url, @"URL is valid.");
    NSError* error = nil;


    /* ERROR: /Users/gsquare567/forge-workspace/plugins/audio/inspector/ios-inspector/ForgeModule/alert/alert_API.m:45:13: Member reference type 'struct objc_class *' is a pointer; maybe you meant to use '->'? */
    self->player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];

    /* ERROR: /Users/gsquare567/forge-workspace/plugins/audio/inspector/ios-inspector/ForgeModule/alert/alert_API.m:45:13: Incomplete definition of type 'struct objc_class' */
    if(!self.player)
    {
        NSLog(@"Error creating player: %@", error);
    }


    [task success:nil];
}

@end

プロパティは で定義されていalert_API.hます:

#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>

@interface alert_API : NSObject

@property (nonatomic, strong) AVAudioPlayer* player;
+ (void)play:(ForgeTask*)task text:(NSString *)filename;

@end

playerAPI 全体でプロパティにアクセスできるようにするには、ここで何をする必要がありますか?

ありがとう!

4

1 に答える 1

6

メソッドplay:text:は静的です。つまりself、プロパティを持つインスタンスを参照するのではなく、のクラス オブジェクトを参照しますalert_API。メソッドをインスタンス メソッドに変更することもできます (- (void)の代わりに+ (void))。

- (void)play:(ForgeTask*)task text:(NSString *)filename;

または、メソッドを静的に保ちたい場合は、プレイヤー シングルトンを返す静的メソッドを実装する必要があります。

+ (AVAudioPlayer *)playerInstance;

次に[alert_API playerInstance]、メソッドからプレーヤーにアクセスするために使用します。

于 2013-04-11T14:32:50.100 に答える