首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Objective C和automake

Objective C和automake
EN

Stack Overflow用户
提问于 2019-10-15 01:07:00
回答 1查看 23关注 0票数 0

我有一个很小的obj程序

标头test.h

代码语言:javascript
复制
#import <Foundation/Foundation.h>

@interface Token : NSObject {
@private
  NSString * literal;
  size_t line;
  size_t column;
}
  @property (readonly) size_t line;
  @property (readonly) size_t column;
  @property (readonly) NSString * literal;
  + (id)newReturnTokenAtLine: (size_t) line column: (size_t) column;
  - (id)initWithLine: (size_t)aLine withColumn: (size_t)aColumn;
@end


@end

test.m中的实现是

代码语言:javascript
复制
#import "test.h"


@implementation Token

@synthesize line;
@synthesize column;
@synthesize literal;


+ (id)newReturnTokenAtLine: (size_t) aLine column: (size_t) aColumn {
    Token * tok = [Token alloc];
    return (Token*)  [tok initWithLine: aLine column: aColumn];
}

- (id) initWithLine: (size_t) aLine withColumn: (size_t) aColumn {
    line = aLine;
    column = aColumn;
    return self;
}
@end

我的问题是,objective C编译器似乎认为initWithLine没有定义

代码语言:javascript
复制
test.m:13:27: error: instance method '-initWithLine:column:' not found (return type defaults to 'id') [-Werror,-Wobjc-method-access]
    return (Token*)  [tok initWithLine: aLine column: aColumn];
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~
./test.h:5:12: note: receiver is instance of class declared here
@interface Token : NSObject {
           ^
1 error generated.

我是不是漏掉了什么明显的东西?

我试着把它放在一个自动设置中。因此,configure.ac

代码语言:javascript
复制
define(MINIOBJC_CONFIGURE_COPYRIGHT,[[
public domain
]])

AC_INIT([miniobjc], [0.0.1])
AC_CONFIG_SRCDIR([test.m])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_AUX_DIR([build-aux])

AM_INIT_AUTOMAKE([foreign serial-tests])

AC_PROG_CC
AC_PROG_OBJC
AC_PROG_LIBTOOL

AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([env],[chmod +x env])

AM_SILENT_RULES

AC_SUBST(OBJCFLAGS)
AC_SUBST(CFLAGS)

AC_OUTPUT

Makefile.am

代码语言:javascript
复制
lib_LTLIBRARIES = libminiobjc.la

libminiobjc_la_SOURCES = test.h test.m
libminiobjc_la_OBJCFLAGS = $(AM_CFLAGS) -Werror=objc-method-access
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-15 04:57:20

在Objective-C中,方法的名称包括所有参数标签和分号。-initWithLine:column:不存在,请改用-initWithLine:withColumn:或替换

代码语言:javascript
复制
- (id) initWithLine: (size_t) aLine withColumn: (size_t) aColumn

通过

代码语言:javascript
复制
- (id) initWithLine: (size_t) aLine column: (size_t) aColumn
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58381223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档