Obj.C

obj.C:WebViewについてわかったこと

ここまでのトライアルでわかったことを整理します。

NSDocumentとあるのは、XcodeでDocument-based Applicationをチェックしてプロジェクトを作成すると、@interface Document : NSDocumentのように作成されるケースです。また、NSObjectとあるのは、XcodeでDocument-based Applicationをチェックせずにプロジェクトを作成すると、@interface AppDelegate : NSObjectのように作成されるケースです。

  • NSDocumentもNSObjectもWebkit.frameworkを組み込み、#import <WebKit/WebKit.h>を定義すればWebViewが動作することが確認できました。
    しかし、@interface{  }の中で IBOutlet WebView *xbWebViewのWebView変数にInterface Builder(IB)で接続することはできませんでした。接続する前にbuild errorが出たからです。
    ➡不完全燃焼。
  • NSObjectの場合、AppDelegate.hに定義したWebView変数にInterface Builder(IB)で接続するには、@property (assign)  IBOutlet WebView *xbWebViewのようにpropertyで定義し、.mで@synthesize xbWebView;と定義すればうまく接続できました。

結論:
1. NSObjectのプロジェクトを作成します。言い換えると、Document-based Applicationにチェックを入れないでプロジェクトを作成します。
2. AppDelegate.h/.mとは別にViewCont.h/.mを作ります。

3. Webkit.frameworkを組み込みません。
4. #import <WebKit/WebKit.h>を定義します。
補1. AppDelegate.hIBOutlet WebView *xbWebViewを定義したい場合、@property (assign) IBOutlet WebView     *xbWebView;と定義し、AppDelegate.mで@synthesize xbWebView;と定義すれば利用可能になります。
補2. ViewCont.h/.mでは、@interface ViewCont : NSObject
<NSApplicationDelegate, NSTableViewDataSource, NSTextViewDelegate> {  }の中でIBOutlet WebView *xbWebView定義できます。

思うに、Xcode 5からWebkit.frameworkを組み込まなくても動くようになったのかもしれません。この手順でまちがっているとまた元に戻って考えないといけないので、念のためもう一度最初からプロジェクトを作成してやり直し、OKであることを再確認しました。これで大丈夫です。

どうすればOKになるのかわかったので、WebViewを編集したキャッシュをsaveできるのかどうか、元々やりたかったことを調べることにします。

追記:frameworkの組み込み方

1. projectをクリック
2. Build Settinsをクリック3. Link Binary With Librariesをクリック➡+で追加できる。

スクリーンショット 2014-04-10 09.35.46志摩泊の公園の八重桜 2014.4.7

Categories: Obj.C, 技術

Tagged as: , ,