Вопрос по ios – iOS: как определить публичные методы?

10

Как я могу определить метод, который может быть вызван из любого места, в каждом классе viewcontroller?

У меня есть метод, который приносит мне файл json, и я хочу, чтобы он был повторно использован, так как в моем приложении есть несколько вызовов json.

Вы можете мне помочь?

одиночкаen.wikipedia.org/wiki/Singleton_pattern Evan Mulawski
петух117 правильно. Вы имеете в виду статический метод. Пожалуйста, имейте в виду, что все методы общедоступны в Objective-C. Вы можете, однако, "скрыть" метод или вызвать предупреждение компилятора, объявив методы в расширении класса. Тем не менее, они не являются частными. Oh Danny Boy

Ваш Ответ

4   ответа
2

так как это способ создания (по существу) другого объекта с методами, которые можно вызывать из любого файла, который включает этот объект.

Помните также, что target-c также является просто C. Вы можете включить файлы .c, которые просто содержат подпрограммы ANSI-C, которые также могут быть вызваны.

Вы всегда можете также реализовать объекты C ++. Таким образом, вы можете предоставить защищенные / приватные переменные только с доступом к функции. XCode имеет возможность компилировать объекты C ++ в ваш код Objective-C. Я постараюсь найти некоторые ссылки, но вот пост о теме (без примера кода) на StackOverflow.stackoverflow.com/questions/406753/…
Я вижу, что моя проблема с методами классов заключается в том, что мой возврат всегда вызывает ошибку, поскольку он не может использовать переменные экземпляра. Есть ли способ использовать переменные класса? О синглетонах, я думаю, я хотел бы прочитать об этом. Синглтоны отличаются от протоколов? Я пришел из внешнего интерфейса, и я в xcode примерно месяц назад. Так что немного сложнее делать более сложные вещи. Большое спасибо за помощь, ребята! 88fsantos
ТКС человек! я прочитаю это 88fsantos
3

Например:

 + (void) Name: (NSString  *) str{

 }
4

что вы думаете о статическом методе, который будет определен с помощью "+" условное обозначение.

+ (String) yourFunctionName:(NSInteger)someValue .....

Тогда вы можете вызвать его в любом месте с именем класса:

[YourClassName yourFunctionName:5];

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

6

EDIT

Создайте новую пару файлов .h .m и в файле .h:

@interface UIViewController(JSON)
-(void) bringJSON;
-(void) fetchData:(NSData*) data;


@ end

Тогда в .m файле:

@implementation UIViewController(JSON)

-(void) bringJSON {

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

[NSData dataWithContentsOfURL:yourURL];

[self performSelectorOnMainThread:@selector(fetchData:)
withObject:data waitUntilDone:YES];

});

}


-(void) fetchData:(NSData*) data {

//parse - update etc.

}


@end

Если я просто предполагаю, что вы будете возвращать NSArray, вы можете поместить туда любой метод и расширить все UIViewControllers. Метод takeJSON будет доступен для всех UIViewControllers и его подклассов.

уууууууууууууууууууууууууууууу,, а, кажется, это действительно круто Я дам ему попробовать! 88fsantos
TKS A LOT! Вы решили мою проблему! Было бы очень трудно стать разработчиком IOS без этого сообщества 88fsantos
Я рад, что это помогло вам. То же самое, я узнал больше от сообщества, чем я узнал из книг или онлайн-учебников :)
Как я могу вернуть свой JSON, только когда он загружен? : S Если я положу его внутрь de & quot; dispatch_get_main_queue & quot; это ошибка. 88fsantos
см редактировать пожалуйста

Похожие вопросы