Я хочу писать в объекты пользовательского интерфейса, на экране, вне ViewController, как ?? - PullRequest
1 голос
/ 23 июля 2011

Что такое «подходящее средство» записи в объекты пользовательского интерфейса на экране представления вне объекта ViewController ... с помощью совершенно другого объекта?

Подумав немного ... я установил указатель на "self" в "viewDidLoad" и передал его. Это просто место памяти, и с тех пор оно мне не раз помогало. Как кто-то указал, чтобы быть осторожным и использовать 64-битное целое или длинное при этом для 64-битных машин. Это был хороший совет. Но большинству людей не нравится идея использования указателя. Так что же лучше?

(я опубликовал свое решение, но оно было удалено ... хотя это было рабочее решение, оно было отклонено много раз)

Ответы [ 5 ]

4 голосов
/ 23 июля 2011

self - это скрытый параметр, который передается каждому методу экземпляра в Objective-C. Это ссылка на объект, для которого был вызван метод. В вашем случае кажется, что self является экземпляром UIViewController или более конкретной реализацией указанного класса.

3 голосов
/ 23 июля 2011

Если ваш вопрос «какой тип« я », то ответ« это тип объекта, из которого вы его вызываете ». Например, если вы говорите о подклассе UIViewController с именем calcRomanViewController, тогда тип self равен calcRomanViewController*.

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

В тех случаях, когда другому классу не нужно / не нужно точно знать, какой тип объекта будет передан, вы можете использовать универсальный тип объекта Objective-C id. Например:

- (void) echo:(NSString *) message withDelegate:(id) delegate {...}

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

@protocol echoDelegate 
- (void) echoCompleted;
@end

- (void) echo:(NSString *) message withDelegate:(id<echoDelegate>) delegate {...}
3 голосов
/ 23 июля 2011

Во-первых, это self, а не Self, и это текущий объект, т.е. текущий экземпляр UIImageView / ViewController, и вы можете рассматривать его как любой другой объект.

0 голосов
/ 27 июля 2011

Вопросы, которые вы задаете, требуют слишком длинных ответов, чтобы соответствовать Stackoverflow.Они рассказывают об основах Objective-C как языка программирования и Cocoa Touch как среды приложения.Уже есть хорошие руководства, которые помогут вам начать, поэтому я вместо этого укажу на них.

Ваш первый вопрос говорит мне, что вы не поняли Objective-C.Я предлагаю вам начать с чтения Learning Objective-C: учебник для начинающих , доступный в Apple здесь: http://developer.apple.com/library/ios/#referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/

Ваши вторые вопросы говорят мне, что вы не поняли концепцию контроллеров представления.Я предлагаю вам начать с чтения Руководства по программированию View Controllers для iOS , также от Apple и доступного здесь: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS

0 голосов
/ 23 июля 2011

Это зависит от того, из какого класса вы это делаете.Какой бы метод объекта вы ни использовали, это экземпляр и тип, которым будет self.То же, что и концепция C ++.

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