2012年5月12日土曜日
mac:Objective-C プロトコルと非形式プロトコル
Objective-C を勉強中だが、どうもこのプロトコルというのが性に合わない。
java の方が性に合っているというせいもあり、どうもjava のInterface と比べてしまう。
java のInterface は過去の経緯からいうと、Objective-C のプロトコルを昇華させたものという見方が世間では一般的解釈なようだ。
それには異論はない。
しかし、やはり後発で優れた(とブログ主は考えている)java のInterface と比べて、このプロトコルがどうも古臭く泥臭く感じてしまう。
でも、まだプロトコルはいい。
使い方も、仕様も理解できる。
やはり一番納得のいかないのは「非形式」プロトコルだ。
非形式プロトコルには、何かこう・・・無法地帯なイメージがこびりつく。
NSObject に常に纏わりつき、プログラマーは一生純粋なNSObject のサブクラスを作ることができない。(気が付くと何かしらの非型式プロトコルがくっついている)
と言うか、どんだけNSObject に業を背負わせれば気が済むのだろう。
その点、Java のObject Class のなんと悠然としたことか。
すべてのClass の頂点に立ちながら、シンプルさを失っていない。
NSObject は非型式プロトコルによって知らないうちに汚されてしまっている・・・感じがするのだ。
以上、まだObjective-C 勉強中でその真髄に触れてもいない未熟者の戯言。
2012年4月25日水曜日
mac:Objective-C メモリ管理の重要さというか面倒臭さ
今、仕事で作成しているPGが LEOPARD以上向けなので、ARCが使えない。
なので、release / retain / autorelease を駆使して、メモリ管理をしなくてはならない。
しかし、これがまた面倒だ。
なんとなく覚えた(知った)メモリ管理の作法としては・・・
・自分で alloc init (copyも)したオブジェクトは「必ず」自分で release する。
・自分で retain したオブジェクトは「必ず」release する。
・コンビニエンスコンストラクタで作成された使い回しする予定のオブジェクトは、retain しないと、後々開放されてしまう。
java はその点簡単で良かった。
その分、メモリを大量に消費してしまうが。
なので、release / retain / autorelease を駆使して、メモリ管理をしなくてはならない。
しかし、これがまた面倒だ。
なんとなく覚えた(知った)メモリ管理の作法としては・・・
・自分で alloc init (copyも)したオブジェクトは「必ず」自分で release する。
・自分で retain したオブジェクトは「必ず」release する。
・オブジェクトの入れ替え時には、過去のものは「必ず」release する。
(release してから オブジェクトの生成。いきなりオブジェクトを生成しない)
・それ以外は release しない。・コンビニエンスコンストラクタで作成された使い回しする予定のオブジェクトは、retain しないと、後々開放されてしまう。
java はその点簡単で良かった。
その分、メモリを大量に消費してしまうが。
2012年4月21日土曜日
mac : Objective-C のクラス(1)
当分の間、仕事のためにObjective-Cの勉強をしなければならない。
まぁ、敵を知り己を知ればなんとやら・・・と言うことで、頑張っていこう。
で、クラスの作成時の基礎的なもの。
・クラスのテンプレートとして、初期化、終了処理は以下のようにする。
まぁ、敵を知り己を知ればなんとやら・・・と言うことで、頑張っていこう。
で、クラスの作成時の基礎的なもの。
・クラスのテンプレートとして、初期化、終了処理は以下のようにする。
#import "TemplateClass.h"
@implementation TemplateClass
- (id) init
{
self = [super init];
if (self != nil) {
// ここに初期化処理を記述する
}
return self;
}
- (void) dealloc
{
// ここにreleaseするobjectや、終了処理を記述する
[super dealloc];
}
@end
ただしARCが有効な場合は、deallocの記述中でreleaseやsuper deallocをしてはならない。
(xcode に怒られる)
2011年6月25日土曜日
Galaxy S2 USBマスストレージの不便を緩和
久しぶりの投稿。
Galaxy S2 はS1と違って、USBを繋いだ時に自動的にマスストレージモードにならないらしい。(どうやらKies を使って欲しいらしく、そちらメインになっていてウザイ)
Galaxy S2 はS1と違って、USBを繋いだ時に自動的にマスストレージモードにならないらしい。(どうやらKies を使って欲しいらしく、そちらメインになっていてウザイ)
2011年3月27日日曜日
ニコニコ動画の再生失敗、読み込めない状態を緩和してみる
IE8でニコニコ動画の再生失敗、読み込み失敗等を突破する方法を考えてみた。
nicovideo viewerのサイト を利用すれば、見られる事も多いので、IE8の右クリックメニューからこのサイトを呼び出せるようにしてみる。
nicovideo viewerのサイト を利用すれば、見られる事も多いので、IE8の右クリックメニューからこのサイトを呼び出せるようにしてみる。
2011年3月24日木曜日
python + tweety ふたば2次裏may スレチェッカー
というわけで、目的のふたば2次裏mayスレチェッカーを作ってみた。
特定のスレの作成を検知して、twitterにて通知してくれるツール。
特定のスレの作成を検知して、twitterにて通知してくれるツール。
python + tweepy でお手軽 bot 作成
お題のとおり、お手軽bot作成を目指して、以下のものを用意した。
・python windows 64bit 環境
・tweepy
アカウントを作成し、適当に呟かせてみたところ、なかなか良好な結果を得られた。
目的を果たして一安心だが、Twitter&bot作成 初心者の自分ならではの引っかかった点が一つ。
「tweepy.error.TweepError: Status is a duplicate.」
というエラーメッセージが出てツイートに失敗する。
あまりTwitterに詳しくなかったせいか、いろいろと調べてしまったが、結局のところ、「同じメッセージ内容を連続で呟くんじゃねぇ!!」と怒られていたらしい。
確かに、テスト時には「test」とかのツイートを良く使っていたため、同じ内容になってしまっていた。
「test1」「test2」とかならOk。
初心者ならではのポカですなぁ。はぁ・・・。
・python windows 64bit 環境
・tweepy
アカウントを作成し、適当に呟かせてみたところ、なかなか良好な結果を得られた。
目的を果たして一安心だが、Twitter&bot作成 初心者の自分ならではの引っかかった点が一つ。
「tweepy.error.TweepError: Status is a duplicate.」
というエラーメッセージが出てツイートに失敗する。
あまりTwitterに詳しくなかったせいか、いろいろと調べてしまったが、結局のところ、「同じメッセージ内容を連続で呟くんじゃねぇ!!」と怒られていたらしい。
確かに、テスト時には「test」とかのツイートを良く使っていたため、同じ内容になってしまっていた。
「test1」「test2」とかならOk。
初心者ならではのポカですなぁ。はぁ・・・。
登録:
投稿 (Atom)