Как я могу получить метод для возврата случайного объекта типа NSObject - PullRequest
2 голосов
/ 27 августа 2011

Я, как учебное упражнение Objective CI, должен написать метод, который возвращает Random NSObject.
Подход, который я пытался использовать, состоял в том, чтобы попытаться получить список всех объектов времени выполнения и итерацию и получить NSObject и вернуть это.

Во-первых, я не уверен, что это лучший подход. Во-вторых, код, который я использую, основан на этой и objc_getClassList ссылке, но в Xcode4 я получаю ошибку времени компиляции

warning: Semantic Issue: Implicit declaration of function 'objc_getClassList' is invalid in C99
warning: Semantic Issue: Implicit declaration of function 'classIsSubclassOfClass' is invalid in C99

Я попытался добавить следующие заголовки, но безрезультатно

#import <objc/runtime.h>
#import <objc/objc-class.h>
#import <objc/objc-runtime.h>

но ни то, ни другое мне не помогло, и предупреждение до сих пор есть.

Итак, можно ли мне помочь с этими двумя вещами
1- Это правильный подход, а что, если не достичь того, чего я пытаюсь достичь
2- Как я могу получить этот код чтобы не выдавать предупреждения в Xcode 4.

Ответы [ 2 ]

2 голосов
/ 27 августа 2011

Ну, objc_getClassList объявлено в objc/runtime.h, поэтому, включая или импортируя, следует это сделать.

Для другой части вам просто нужно объявить вашу функцию перед ее использованием. На верхнем уровне файла или в файле, который вы затем включаете, вы помещаете заголовок функции без тела:

BOOL classIsSubclassOfClass( const Class aClass, const Class subclass );

Это позволяет компилятору узнать о функции; Затем вы можете #include эту декларацию в любом файле, для которого требуется использовать функцию, при этом определяя ее (т. е. заполняя тело) где угодно.

0 голосов
/ 27 августа 2011

Итак, вы хотите получить класс, любой класс, который наследуется от NSObject?

Я не думаю, что это правильный подход вообще.Я не вижу необходимости получать какой-либо случайный класс.Что бы вы сделали с ним?

Может быть, вы хотите добавить подмножество известных классов, которые могут использоваться в массиве.А затем выберите один случайным образом из этого массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...