Если вы хотите использовать mouseEntered:
и mouseExited:
, вам нужно использовать NSTrackingArea
. Вот ссылка Ссылка класса NSTrackingArea .
Пример:
//Add this to Your imageView subclass
-(void)mouseEntered:(NSEvent *)theEvent {
NSLog(@"Mouse entered");
}
-(void)mouseExited:(NSEvent *)theEvent
{
NSLog(@"Mouse exited");
}
-(void)updateTrackingAreas
{
[super updateTrackingAreas];
if(trackingArea != nil) {
[self removeTrackingArea:trackingArea];
[trackingArea release];
}
int opts = (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways);
trackingArea = [ [NSTrackingArea alloc] initWithRect:[self bounds]
options:opts
owner:self
userInfo:nil];
[self addTrackingArea:trackingArea];
}
Достаточно взглянуть на статью в Википедии , чтобы получить свое определение:
Молчаливое программирование (программирование без точек) - это парадигма программирования, в которой определение функции не включает информацию о его аргументах, используя комбинаторы и композицию функций [...] вместо переменных.
Пример Haskell:
Обычный (вы указываете аргументы явно):
sum (x:xs) = x + (sum xs)
sum [] = 0
Без точек ( sum
не имеет явных аргументов - это просто свертка с +
, начиная с 0):
sum = foldr (+) 0
Или еще проще: вместо g (x) = f (x)
вы можете просто написать g = f
.
Итак да: это тесно связано с каррированием (или такими операциями, как композиция функций).
Бесточечный стиль означает, что аргументы определяемой функции не упоминаются явно, что функция определяется посредством композиции функций.
Если у вас есть две функции, например
square :: a -> a
square x = x*x
inc :: a -> a
inc x = x+1
и если вы хотите объединить эти две функции в одну, которая вычисляет x * x + 1
, вы можете определить ее как «полная точка» следующим образом:
f :: a -> a
f x = inc (square x)
Беспочечная альтернатива - не говорить об аргументе x
:
f :: a -> a
f = inc . square
Точечный стиль означает, что в коде явно не упоминаются его аргументы, даже если они существуют и используются.
Это работает в Haskell из-за того, как работают функции.
Например:
myTake = take
возвращает функцию, которая принимает один аргумент, поэтому нет причин явно вводить аргумент, если вы просто не хотите тоже.