2016-08-06 5 views
0

Ich fand einige Beispielcode beim Erstellen eines Menüleistenelements in OS X. Es verwendet die einzelne | und ich bin mir nicht sicher, was es eigentlich bedeutet.Was macht die Single | mean in swift

(Was ich versuche, eine Funktion auf der linken Maustaste den Menüpunkt aufgerufen zu tun ist, aber haben sie das Menü auf der rechten Maustaste zeigen)

meinen Code Hier ist

//Get reference to main system status bar 
let statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-1) 
statusItem.image = icon 
statusItem.menu = menuBar 
if let statusButton = statusItem.button 
{ 
    statusButton.target = self 
    statusButton.action = #selector(statusItemClicked) 

    statusButton.sendActionOn(Int(NSEventMask.RightMouseUpMask.rawValue | NSEventMask.LeftMouseUpMask.rawValue)) 

} 

Ursprüngliche Antwort mit Code Left vs Right Click Status Bar Item Mac Swift 2

Antwort

1

Das muss wirklich alter Code sein. Heutzutage, in modernen Swift, NSEventMask is an Option Set. Sie können einfach [NSEventMask.rightMouseUp, NSEventMask.leftMouseUp] sagen, und Sie brauchen den Int Cast überhaupt nicht. (Oder wenn Sie Swift 3 noch nicht aktualisiert haben, beginnen die Fallnamen mit Großbuchstaben.)

+1

an. Für weitere Informationen über Bitmasken, die alte Art und Weise des Umgangs mit ihnen und den neuen Weg (Optionssätze), siehe mein Buch: http: // www. apeth.com/swiftBook/ch04.html#SECoptionsSets – matt

2

Bitweises ODER, genau wie in den meisten C-ähnlichen Sprachen. In diesem Kontext wird es verwendet, um Flaggen zu kombinieren.

+0

Verstehen Sie genau, was es in diesem Code macht? Ich werde mehr darüber recherchieren. Dieser Code funktioniert nicht wirklich und ich bin mir nicht sicher, ob das das Problem ist. – Dallas

+0

@Dallas Es ist alter Code und sollte neu geschrieben werden, wie Matt sagte. Schauen Sie sich den Link von seinem (sehr guten) Buch – FredericP