Gcc не включая Object.h - PullRequest
       1

Gcc не включая Object.h

4 голосов
/ 08 февраля 2011

Я только начинаю делать target-c с gcc (пока я использовал только XCode).

#include <objc/Object.h>  
@interface Integer : Object  
{  
int integer;  
}  
- (int) integer;  
-(id) integer: (int) _integer;  
@end


#import "Integer.h"  
@implementation Integer  
- (int) integer  
{  
    return integer;  
}  
- (id) integer: (int) _integer  
{  
    integer = _integer;  
}  
@end

И как только я пытаюсь скомпилировать материал, я получаю это:

main.m: In function ‘main’:  
main.m:8: warning: ‘Integer’ may not respond to ‘+new’  
main.m:8: warning: (Messages without a matching method signature  
main.m:8: warning: will be assumed to return ‘id’ and accept  
main.m:8: warning: ‘...’ as arguments.)  
main.m:8: warning: ‘Integer’ may not respond to ‘+new’

Мне кажется, что включение Object.h не совсем сработало. Я искал тебя включает в себя Object.h и получил это:

find /usr/include/ -name Object.h   
/usr/include//objc/Object.h

Кроме того, в выводе GCC указывается, что компилятор действительно ищет по этому пути.

 #include "..." search starts here:  
 #include <...> search starts here:  
 /usr/local/include  
 /usr/lib/gcc/i686-apple-darwin10/4.2.1/include  
 /usr/include  
 /System/Library/Frameworks (framework directory)  
 /Library/Frameworks (framework directory)  
End of search list.  
GNU Objective-C version 4.2.1 (Apple Inc. build 5664) (i686-apple-darwin10)
        compiled by GNU C version 4.2.1 (Apple Inc. build 5664).  
GGC heuristics: --param ggc-min-expand=150 --param ggc-min-heapsize=131072  
Compiler executable checksum: 84137cc00ce86c64ee80a91a006f61ae  
main.m: In function ‘main’:  
main.m:8: warning: ‘Integer’ may not respond to ‘+new’  
main.m:8: warning: (Messages without a matching method signature  
main.m:8: warning: will be assumed to return ‘id’ and accept  
main.m:8: warning: ‘...’ as arguments.)  
main.m:8: warning: ‘Integer’ may not respond to ‘+new’`\

Что я пропускаю?

Ответы [ 2 ]

4 голосов
/ 08 февраля 2011

Если gcc не может найти Object.h, он выдаст ошибку, указывающую на это. Проблема в том, что Apple удалила большинство методов из Object (или, по крайней мере, интерфейса для него) в Objective-C 2.0. Вместо этого вы должны создать подкласс NSObject и включить платформу Foundation.

0 голосов
/ 08 февраля 2011

Как насчет изменения первой строки на

&#35;include &lt;objc/Object>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...