NSNotification пример userinfo? - PullRequest
       8

NSNotification пример userinfo?

5 голосов
/ 23 июня 2009

У меня есть массив объектов, которые расположены с использованием CGPoints. В определенное время в моем приложении объект в массиве должен уведомлять другие объекты без массивов о своей позиции. Я понимаю, что NSNotification - лучший путь, но я не могу найти достойного примера «отправителя» и «получателя» для уведомления, которое упаковывает и разворачивает CGPoint как userinfo. Кто-нибудь может помочь?

Ответы [ 2 ]

15 голосов
/ 23 июня 2009

В Cocoa Touch (но не в Какао) CGPoints можно обернуть и развернуть с помощью

+ (NSValue *)valueWithCGPoint:(CGPoint)point
- (CGPoint)CGPointValue

NSValues ​​можно сохранить в NSDictionary, передаваемом в качестве параметра userinfo.

Например:

NSValue* value = [NSValue valueWithCGPoint:mypoint];
NSDictionary* dict = [NSDictionary dictionaryWithObject:value forKey:@"mypoint"];

И в вашем уведомлении:

NSValue* value = [dict objectForKey:@"mypoint"];
CGPoint newpoint = [value CGPointValue];
1 голос
/ 23 июня 2009

Объект userinfo, передаваемый вместе с уведомлением, является просто NSDictionary. Вероятно, самый простой способ передачи CGPoint в userinfo - заключить координаты X и Y в NSNumbers с помощью -numberWithFloat :. Затем вы можете использовать setObject: forKey: в словаре userinfo, используя в качестве ключей, например, Xpos и Ypos.

Возможно, вы могли бы обернуть это в хорошую категорию в NSMutableDictionary с помощью таких методов, как setFloat: forKey или что-то ...

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