ios - 在 @implementation 中使用 'self'

标签 ios objective-c trigger.io

我正在尝试通过制作 TriggerIO native 插件在 iPodMusicPlayer 播放语音音频,但是我无法访问 self 对象。

#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

我需要在这里做什么才能在我的 API 中访问 player 属性?

谢谢!

最佳答案

您的 play:text: 方法是静态的,这意味着 self 不引用具有该属性的实例,而是引用 alert_API< 的类对象。您可以将方法更改为实例方法(- (void) 而不是 + (void)):

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

或者如果你想让方法保持静态,你将不得不实现一个返回玩家单例的静态方法:

+ (AVAudioPlayer *)playerInstance;

然后使用 [alert_API playerInstance] 从您的方法访问播放器。

关于ios - 在 @implementation 中使用 'self',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15951441/

相关文章:

ios - 此 bundle 无效 info.plist 中所需的 key 设备

ios - 在 UILabel 中垂直对齐文本(注 : Using AutoLayout)

c++ - 单词的 SQL 哈希表

trigger.io - 使用 Parse.com 和带有 trigger.io 的高级定位推送通知

ios - 我在 Trigger.io 的 iOS 配置中缺少哪一步?

android - 如何使用 Phonegap 跟踪设备位置(iOS 和 Android)设备

iphone - 如何实现系统相机app的缩小动画效果?

iphone - 转换字符串日期格式

ios - 如何在 View 中制作特定 CGRect 的 UIImage

trigger.io - 如何在 iOS 中调试 Trigger.io?