【问题标题】:syntax error instantiating an object in objective-c在objective-c中实例化对象的语法错误
【发布时间】:2011-07-18 17:41:59
【问题描述】:

我正在使用库 STPrivilegedTask 库,源代码位于 http://www.sveinbjorn.org/STPrivilegedTask 以运行具有 sudo 权限的 NSTask。

这是我用来实例化 STPrivilegedTask 对象的代码,但出现语法错误:

STPrivilegedTask *task2 = [[STPrivilegedTask alloc] initWithLaunchPath: launchPath: arguments];

我收到“实例方法的接收器类型 STPrivilegedTask 未声明方法...”错误。上面的语法有效吗?

谢谢,

【问题讨论】:

    标签: iphone objective-c cocoa xcode4


    【解决方案1】:

    不是 Objective-C 方面的专家,但如果我没记错的话,你应该这样称呼它:

    STPrivilegedTask *task2 = [[STPrivilegedTask alloc] initWithLaunchPath: launchPath
    arguments:arguments];
    

    (假设你的方法中的arguments是你的NSArray)因为方法的声明是:

    - (id)initWithLaunchPath: (NSString *)path arguments:  (NSArray *)args;
                                               ^^^ Part of the method signature
    

    不是

    - (id)initWithLaunchPath: (NSString *)path :  (NSArray *)args;
    

    这是您添加的链接中.m 文件中的一个示例:

    STPrivilegedTask *task = [[[STPrivilegedTask alloc] initWithLaunchPath: path arguments: args] autorelease];
    

    【讨论】:

      【解决方案2】:

      是的,这根本不是该方法的正确名称。

      该方法的选择器是initWithLaunchPath:arguments:。当你调用一个方法时,你在选择器的冒号后面插入参数。因此,假设启动路径存储在名为path 的变量中,而参数存储在名为programArguments 的变量中,您可以这样调用该方法:

      [[STPrivilegedTask alloc] initWithLaunchPath:path arguments:programArguments];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-02
        • 1970-01-01
        • 1970-01-01
        • 2011-12-28
        • 1970-01-01
        相关资源
        最近更新 更多