objective-c - 当我尝试创建 NSSpeechSynthesizer 实例时获取 EXC_BAD_ACCESS

标签 objective-c xcode macos cocoa

我收到“程序收到信号:EXC_BAD_ACCESS”,但我不明白为什么

这是我的界面

#import <Cocoa/Cocoa.h>


@interface AppController : NSObject {
    NSSpeechSynthesizer *speechSynth;
}

和实现

#import "AppController.h"


    @implementation AppController

    - (id)init
    {
        self = [super init];

         // HERE I GET Program received signal: EXC_BAD_ACCESS
         speechSynth = [[NSSpeechSynthesizer alloc] initWithVoice:nil];
        return self;
    }
    @end

我已经包含了 Cocoa 和 AppKit 框架

最佳答案

在更改 iVar 的值之前,您应该始终检查 init 方法中的 self 是否不为 nil:

- (id)init
{
    self = [super init];
    if (self)
    {
        speechSynth = [[NSSpeechSynthesizer alloc] initWithVoice:nil];
    }
    return self;
}

关于objective-c - 当我尝试创建 NSSpeechSynthesizer 实例时获取 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7791683/

相关文章:

ios - 将文本作为字符串共享给另一个应用程序

iphone - 核心数据 - 如何检查托管对象的属性是否已被释放?

objective-c - 在静态单元格上使用 UIDatePicker

objective-c - NSOutlineView显示三个层次

ios - 目标 'Pods' - 在构建阶段删除重复引用

macos - Cocoa 中基于 PopUp 值的控件的条件隐藏

macos - 在 AUHAL 上设置采样率

linux - mac osx 在 sd 卡上显示胖分区,而 windows 不-为什么?

objective-c - 电子表格网格的 NSCell vs NSView?

ios - 如何在旧硬件上测试新应用程序? (Xcode 4.3.2,带有基本 SDK iOS 5.1;测试设备是带有 iOS 4.2.1 的 iPhone 3G)