Obj.C

obj.C:勘違いがあるのかなあ?WebKit?

WebKitについて調べています。

もう少し突っ込んで調べた方がいいような気がしますが、思いついたことをパラパラ試しています。Document-based Applicationでないとダメなのかなあと思って、それベースであれこれやってみて思ったような結果にならないので、もう一度、NSObjectでやりなおしました。

それで、Webkit.frameworkを組み込めば、@interface AppDelegate : NSObject <NSApplicationDelegate>だけで、#import <WebKit/WebKit.h>を定義しなくてもTextFieldに入れたURLをWebViewに表示することはできるところまではわかってきました。

IBOutlet WebView  *xbWebView;がbuild errorになるのはまちがったことをしているからで、そういう定義をしてはいけないということであるなら、そもそもbuild errorを解決しようとしていたことが勘違いだったことになります。

評価マトリックスとしては、

#import <WebKit/WebKit.h>の有無
@interface Test : NSDocument vs. @interface Test : NSObject
WebKitライブラリを明示的に組み込んだケース。

を試してみて、それぞれのケースで#import <WebKit/WebKit.h>がbuild errorにならないケースがあるかどうかも調べれば網羅的です。

想定結果は、「IBOutlet WebView  *xbWebView;build errorはあたり前で、その発想がまちがっている」です。

それで、実際やってみたら、下表の通りになりました。結論は、

  • WebKitライブラリを明示的に組み込まないといけない。
  • IBOutlet WebView  *xbWebView;はbuildが通るだけではダメ。代案が必要(というか、その適切な方法を探す必要がある)。
    ただし、このケースだけがOKと決めつけられません。#import <WebKit/WebKit.h>を定義し、IBOutlet WebView  *xbWebView;がOKの事例もあるので、何が問題なのか追試が必要です。
    絵で見て分かる、簡単WebKitアプリの作り方を参照。
  • Document-based ApplicationとNSObjectのものとの差は何?
    ➡WebViewだからと言って、Document-based Applicationにこだわる必要はないかもしれない?

追記:NSObject<WebKit/WebKit.h>IBOutlet WebView  *xbWebView;を定義してOKになるケースにやっと到達できました。AppDelegate.mにDocument.mからcopy and pasteしてbuild errorになった1行だけをコメントアウトしたら、WebViewが出て来るようになりました。なぜそうなのかは能力的にわからないとしても、how toだけはあした整理したいと思います。絵で見て分かる、簡単WebKitアプリの作り方はサラッとしか見ていないので、これとの比較では何とも言えません。
ソースコードは目次の方に入れてあります。

追記:obj.C:WebViewについてわかったことにうまく行く方法を整理しました。

 

スクリーンショット 2014-04-09 22.22.05

Categories: Obj.C, 技術

Tagged as: