2012年10月28日日曜日

[Objective-C] イベント通知

イベント通知がたまにしか利用せず、少し利用しておきたいのでメモしておく。

実装方法

基本は次の4ステップ
 Step1.プロトコルを定義
 Step2.delegateを追加
 Step3.任意の場所でEventを返却
 Step4.利用する

/* ========================================
イベント実装のサンプル
xxx.h/xxx.m イベント通知側
yyy.h/yyy.m イベント受け側
======================================== */
/* ========================================
Step1.プロトコルを定義(xxx.h はたは 別ファイル)
======================================== */
@protocol aaaDelegate <NSObject>
@optional
-(void)aaaEvents:(NSString *)text ;
@end
/* ========================================
Step2.delegateを追加(xxx.h & xxx.m)
======================================== */
//(xxx.h)プロパティでdelegateを用意
@interface xxxView : UIView {
id<aaaDelegate> _delegate;
}
@property (nonatomic, assign) id<aaaDelegate> delegate;
//(xxx.m)プロパティとして追加
@synthesize delegate = _delegate;
/* ========================================
Step3.任意の場所でEventを返却(xxx.m)
======================================== */
if ([_delegate respondsToSelector:@selector(aaaEvents:)]){
[_delegate aaaEvents:_text];
}
/* ========================================
Step4.利用する(yyy.h & yyy.m)
======================================== */
//(yyy.h)使用するクラス名にProtocolを追加
@interface yyyView : UIView<aaaDelegate>
//(yyy.m)自信にDelegate追加
- (void)loadView {
xxxView.delegate = self;
}
//(yyy.m)イベント
-(void)aaaEvents:(NSString *)text {
//イベント時の処理を追加
}
view raw gistfile1.m hosted with ❤ by GitHub


参考

[iOS] Protocol – Delegateパターン | Objective-C イベント伝達 その1

GistのソースコードをBloggerに貼付ける

ソースコードの管理をGitで行おうと決めた今、Githab,Gistを活用しようと考えた。
ブログにもGistからソースコードを整形して貼付ける機能があるので、活用することに。

使い方

[show embed]をクリックして、
表示されたembedタグをコピー。
 例:<script src="https://gist.github.com/3922379.js"> </script>
それをブログにコピーするだけ。
こんな感じになります。
<!DOCTYPE html>
<html lang="ja">
<head>
<title>XXXX</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no,maximum-scale=1">
<meta name="keywords" content="XXXX,Search Keywords,XXXX">
<meta name="description" content="XXXX Page description XXXX">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
<link rel="stylesheet" href="css/XXXX.css" media="all">
<script src="js/XXXX.js"></script>
</head>
<body>
</body>
</html>
view raw gistfile1.html hosted with ❤ by GitHub
ちなみにこれは[html5 mobile template]

参考

2012年10月27日土曜日

[Mac] スクリーンショットをとる方法(クリップボードやファイルへの保存)


ブログなどにアップするために「Mac OS」で画面キャプチャ(スクリーンショット)をとりたい時があります。

今回はそんなスクリーンショットの方法を紹介します。

[Mac] ファイル関連づけ

zipファイルを開くときに、使い勝手の悪いアプリケーションに関連づいててずっと使い難いと感じていた。
元に戻したかったのだが、ようやく調べる決心がついて解決。

Macのファイルの関連づけの方法

ファイルを右クリック-[情報を見る]-[このアプリケーションで開く] で変更ができます。
その後、同じ形式のファイル全てに適用するためには、[すべて変更]を選択します。

参考

2012年10月26日金曜日

[iOS] App Store申請時にStatusが"Missing Screenshot"になる

App Store に申請するために、Add Versionし、もろもろ入力し、[Waiting For Upload]になったんで、いつも通りXCodeからモジュールをアップデート。
よし、完了!
と思い、iTunes Connect を最終確認してみると、Statusが[Missing Screenshot]に。
・・・
どうやら [iPhone and iPod touch Screenshots] しかアップロードしていなかったのが原因のよう。
[iPhone 5 and iPod touch (5th gen) Screenshots] と [iPad Screenshots] にも、適切なサイズのスクリーンショットをアップロードする必要がありました。
アップロードすると無事にStatusが[Waiting For Review]になりました。

2012年10月21日日曜日

[XCode] Cartificatesの有効期限切れでエラー(実機で実行できない)


エラー内容

自分のデバイスで実行しようとしたら、下のエラーが。
--------------------
The identity used to sign the executable is no longer valid.
Please verify that your device’s clock is properly set, and that your signing certificate is not expired.
(0xE8008018).
--------------------




解決までの道のり

[iOS Dev Center]-[iOS Provisioning protal]の[Cartificates]で"You currently do not have a valid certificate"となっていたので、[キーチェーンアクセス]を起動してみたところ、証明書の有効期限が切れてました。

メニューから[キーチェーンアクセス]-[証明書アシスタント]-[認証局に証明書を要求]選択し、[証明書要求ファイル(暗号化されたCSRファイル)]を作成。(point:[ディスクに保存]を選ぶ、[鍵ペア情報を指定]をチェック、[カギサイズ]は[2048ビット]、[アルゴリズム]は[RSA])
[Cartificates]のページに戻り、[Create Certificate]を押して、先ほど保存した[証明書要求ファイル]を登録します。
すると、Action列にDownloadボタンが現れるので、[証明書]をダウンロードし、実行すると、[キーチェーンアクセス]で証明書が端末に登録されました。

この状態でもう一度、XCodeからデバイスで実行を試みる。
あれ?次は下のエラーが。
--------------------
A valid provisioning profile for this executable was not found.
--------------------
有効なprovisioning profileが見つかりませんよ・・・と。

[Provisioning Profiles]を見て、Editすると、[Cartificates]のチェックがはずれてるじゃないか。
チェックを入れ直して、[Provisioning Profile]をダウンロードして、実行登録し、Xcode内の[Build Settings]-[Code Signing Indentity]を更新したら動きました。(更新するまえにOSは再起動しましたが)

余談

Organizerを開いて、Distrivusionの方のRenewを押しても、下のようなエラーが出てて、全く解決方法が分からなかったのですが、同じ理由だと言うことが分かりました。
--------------------
The given profile was not found on the provisioning portal.
Please refresh your provisioning profiles before attempting to renew “XXXXX”
--------------------
Distrivusion側も[Cartificates]が切れてたことが原因だったみたい。
[iOS Provisioning protal]の[Provisioning Profiles]で作り直し(Delete&Insert)たら直りました。

うーん、はまった。