NSTableViewのbeep音

いつも消音で作業しているから気づかなかった
キーを押すたびにビープ音鳴ってたよ

 

キーイベントの処理は addLocalMonitorForEventsMatchingMask() でやってるけど
どうにも音の消し方が分からない
ぐーぐる先生に聞いてみても同じ悩みの人は居たけど解決には至って無かった

 

結局は自力で何とかなったけど、あまりにも簡単な解決方法で
すぐに気づかなかった事に凹んだ

 

NSTableViewをサブクラス化して、keyDown をオーバーライドするだけで
音が出なくなるとは

 

簡単すぎて悲しい

Unmanaged で詰まった

LSCopyApplicationURLsForURL()を使って、拡張子判別で実行可能なアプリ一覧を
取得しようとしたら、返される値が Unmanaged<cfarray> だと。
値を取り出す方法が分からず、キャストすると

'Unmanaged<cfarray>' is not convertible to 'CFArray'

とおこられる。google先生で調べても詰まってる人が多いのか、検索の仕方が悪いのか
より良い返事が返ってこない

そもそも Unmanaged って何?って思って調べたら、出てきたよ


Using Swift with Cocoa and Objective-C: Working with Cocoa Data Types の Unmanaged Objects って項目

takeUnretainedValue() か takeRetainedValue() 使って取り出せってことなのかな


とりあえず

let unmanagedAppList = LSCopyApplicationURLsForURL( URL, kLSRolesAll )
let appList = unmanagedAppList.takeUnretainedValue()

 

println( appList )
 
って書いたらちゃんととってきてくれたよ
 
 
takeUnretainedValue()使えって書いてある最後に
 
You can also invoke the retain()release(), and autorelease() methods on unmanaged objects, but this approach is not recommended.
 
って書いてあるけど、retain()やらrelease()やらする必要あるんかいね
分からん
 




Swiftでウィンドウリサイズ時にSplitViewの幅を固定

まだまだ試行錯誤しながらだけど、少しずつ色々かけるようになってきた

 
SplitViewの幅の固定方法を忘れないためにメモメモ
 
1.SplitViewを配置
 
2.SplitViewの幅を固定するかどうかを返すメソッドを追加
 
    func splitView(splitView: NSSplitView, shouldAdjustSizeOfSubview subview: NSView) -> Bool
    {
        let ar: NSArray = splitView.subviews
     //subviewの2番目の幅を固定
        if( ar.objectAtIndex(1) === subview ) {
            return false
        } else {
            return true
        }
    }
 
3.SplitViewをAppDelegateのReferencing Outlet-deletate に追加
       これで上のメソッドが呼ばれる
 
終了


LaunchPad

OSをインストールし直して、なぜかLaunchPadを使う機会が増えた
並び順が気持ち悪いが、手作業で直すの面倒で調べたら

Launchpadでソフトをアルファベット順に整理する

プリンストールアプリと自分でインストールしたアプリが分かれてくれて見やすくなった
毎度手作業でするの面倒なのでスクリプト作ってみました