我正在開發一個自定義視圖的應用程序,用戶可以在視圖周圍移動對象。他們可以把它們拿起來放在不同的地方,我希望光標可以根據他們可以拾取的物品和放置的位置進行更改。調用[NSCursor set]是否有性能問題?
我使用的是tracking areas,但爲了保持正確的遊標,我正在使用跟蹤區域通知並將光標設置爲任意鼠標移動。
這是行之有效的,我有我的解決方案,但我想知道如果經常打[NSCursor set]
或者如果AppKit
能夠處理這個沒有問題性能損失?
更新:誠如通過Rob Keniger我已經成型的應用程序,並沒有看到任何時間實際花費金額變化遊標。爲了安全起見,我實現了一個簡單的宏,保持當前光標狀態,並在必要時僅將其設置,如下定義:
// Values for _currentCursor
#define CURRENT_CURSOR_UNKNOWN 0
#define CURRENT_CURSOR_ARROW 1
#define CURRENT_CURSOR_POINTINGHAND 2
#define CURRENT_CURSOR_OPENHAND 3
#define CURRENT_CURSOR_CLOSEDHAND 4
#define CURRENT_CURSOR_NOENTRY 5
#define CURRENT_CURSOR_HIDDEN 0x80
#define SET_CURSOR(current, cursor) \
if ((_currentCursor & CURRENT_CURSOR_HIDDEN) == 0 && _currentCursor != current) \
{ \
[cursor set]; \
_currentCursor = current; \
}
你會在代碼從而調用這個:
SET_CURSOR(CURRENT_CURSOR_CLOSEDHAND, [NSCursor closedHandCursor]);
感謝羅布 - 我知道你會是一個回答:)你是對的,我需要配置文件,現在會這樣做,但是你錯了,光標只需要改變進入/退出跟蹤區域因爲光標用於向用戶反饋他們可以做什麼和不可以做什麼。這包括哪些* object *在視圖中可以拾取,以及視圖中的哪些位置可以放置* object *。 – trojanfoe 2012-03-10 10:12:41
@trojanfoe:那麼你不應該製作更多,更小的跟蹤區域嗎? – 2012-03-10 16:03:07
@PeterHosey我可以,是的,但有太多不同的地方可以輕鬆管理。目前的解決方案似乎沒問題 - 我真的很想知道是否過度使用'[NSCursor set]'對AppKit沒有影響。 – trojanfoe 2012-03-10 19:04:35