Как передать и установить CGFloat по ссылке? - PullRequest
5 голосов
/ 22 апреля 2010

Я хочу создать метод, который принимает CGFloat по ссылке.

Могу ли я сделать что-то подобное?

- (void)doStuff:(CGFloat*)floatPointer

Я думаю, это должно выглядеть иначе, чем другие указатели объектов, которые имеютдве из этих звезд.Также я не уверен, должен ли я сделать что-то вроде:

- (void)doStuff:(const CGFloat*)floatPointer

И, конечно, не знаю, как присвоить значение CGFloat этому floatPointer.Может быть &floatPointer = 5.0f;?

Может ли кто-нибудь привести примеры и объяснить их?Было бы здорово!

Ответы [ 3 ]

9 голосов
/ 22 апреля 2010

target-c по-прежнему c, поэтому

-(void) doStuff (CGFloat *) f
{
  *f = 1.2;
}

вызов с

CGFloat f = 1.0;
[self doStuff:&f];
3 голосов
/ 22 апреля 2010

Если вы передаете CGFloat по ссылке, то получить к нему доступ просто:

- (void)doStuff:(CGFloat*)floatPointer {
    *floatPointer = 5.0f;
}

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

2 голосов
/ 22 апреля 2010

, если вы (ненавидите указатели и ;-) предпочитаете, чтобы target-c ++ передавался по ссылке, альтернативой является следующее:

-(void) doStuffPlusPlus:(CGFloat &) f
{
   f = 1.3;
}

вызов по

CGFloat abc = 1.0;
[self doStuffPlusPlus:abc];

и вампереименовать исходное имя файла с ???. m на ???. mm

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