When you build application using own framework, class header file does exist in package.
It's no matter for public framework, but off course we don't want to open class header rerated to activation or authorization.
After build application, you need delete
MyApp.app/Contents/Frameworks/MyKit.framework/PrivateHeaders
or
MyApp.app/Contents/Frameworks/MyKit.framework/Versions/A/PrivateHeaders
It's troublesome.
In Xcode, select your target and
Project > New Build Phase > New Run Script Build Phase
or control click target and select
Add > New Build Phase > New Run Script Build Phase
from context.
Write script like follow and you can perfectly automate this work
cd "${TARGET_BUILD_DIR}/${FULL_PRODUCT_NAME}/Contents/Frameworks"
rm -rf *.framework/PrivateHeaders
rm -rf *.framework/Versions/*/PrivateHeaders
It saves much time.
自作フレームワークを組み込んだアプリケーションをビルドする時、パッケージの中にヘッダファイルが残ってしまう。
公開したいフレームワークの場合はいいんだけど、アクティベートとかオーソライズといったものに関連したフレームワークのヘッダなんてもちろん公開したくない。
アプリケーションをビルドしたあと、ビルドされたアプリ内の
MyApp.app/Contents/Frameworks/MyKit.framework/PrivateHeaders
や
MyApp.app/Contents/Frameworks/MyKit.framework/Versions/A/PrivateHeaders
あたりのファイルを削除する必要があるけど、アプリケーションのビルドの都度これらを Finder 上で削除するのは非常に面倒。
Xcode のメニューで
プロジェクト > 新規ビルドフェーズ > 新規スクリプトを実行
もしくはターゲットを右クリックしてコンテクストメニューから
追加 > 新規ビルドフェーズ > 新規スクリプトを実行
を選択し以下のようなスクリプトを入力することでこの作業を完全自動化できる。
cd "${TARGET_BUILD_DIR}/${FULL_PRODUCT_NAME}/Contents/Frameworks"
rm -rf *.framework/PrivateHeaders
rm -rf *.framework/Versions/*/PrivateHeaders
めちゃくちゃ時間の節約になる。
3/04/2010
UIImagePickerController doesn't work in certain cases
The following are the codes that use UIImagePickerController with UIImagePickerControllerSourceTypeCamera.
This code is written in subclass of UIViewController and "self" is UIViewController.
This code doesn't work at -viewDidLoad and -viewWillAppear:
At -viewDidAppear:, that works properly.
For example, in AppDelegate
初期化した UIImagePickerController を View がオフスクリーン状態の ViewController を利用して表示しようとすると正しく動作しない。UIImagePickerControllerSourceTypePhotoLibrary でも試してみたけど同じく動作しない。View がオンスクリーンになっている ViewController を利用して表示しないといけないみたい。
spec iPhone 3GS OS 3.1.3
This code is written in subclass of UIViewController and "self" is UIViewController.
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
UIImagePickerController *controller = [[UIImagePickerController alloc] init];
controller.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentModalViewController:controller animated:NO];
[controller release];
}
At -viewDidAppear:, that works properly.
For example, in AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//insert initialize code here, not work
[window addSubview:viewController.view];
[window makeKeyAndVisible];
//insert initialize code here, work
return YES;
}
spec iPhone 3GS OS 3.1.3
Subscribe to:
Posts (Atom)