プログラミング

ボクがSwiftをやめた理由(ワケ)

このエントリはポエムです。ゼロからSwiftを書いたのではなく、Objetive-Cで書かれたプロジェクトをSwiftで書き換えていた話です 開発環境は C2DのMBP+Marvericks Xcode 6.1.1 ターゲットプラットフォームはOSXです 文字列リテラルの連結 まず、最初に困っ…

Terminal 2 ??

Xcode - Features - Apple Developerしれっと、Terminal 2 とか書いてるんですけど?

我慢汁があふれてきちゃうよ!

Swiftでobjcオブジェクト使ったときのアセンブリコードまだーーーー!!!!!

これは許されるのだろうか?

extention NSManagedObject { func toString() -> String { return self.description }objcクラスをSwift的に

Swiftってヌルポが起こるの?

var hoge : String? println("Hoge is \(hoge)") ぬるぽ?

SourceForge.JP でプロジェクトをForkしちゃうぞ!

GitHubの人気にはクリックだけで簡単にFork出来ちゃう、変更を簡単にpull requestできると言う点があると思います。そして、なんと、Sourceforge.jpでも簡単にプロジェクトをFork出来るようなになりました! いつからなのかよく分かりませんが、今現在は可能…

CocoaControlsにのせてもらったよ!

The page you were looking for doesn't exist (404)てことで、Cocoa Controls にのせてもらいました Finderにあるラベルみたいな奴です 申請のために、名前変えて、アプリから切り離して、デモアプリをプロジェクトに追加して、GutHubで公開してと無駄に気…

Finderとかのあれ

https://github.com/masakih/HMLabel 以前からXspfMLabelとして公開してたLabel Control他をHMLabelに改名してGitHubで公開しました。今のところnew BSDライセンスです。 2条項BSDかMITに変更するかも。

AVFoundationとCocoaBindings

durationをBindしたい!でもCMTimeだから無理? そういう時はNSValueTransformer。 CMTime -> NSNumber of double サンプルではdurationをNSSliderのmaxValueにbindする時に使用。 @interface HMCMTimeTransformer: NSValueTransformer @end @implementation…

CocoaでAVFoundationを使うサンプル

てことで作りました! http://sourceforge.jp/users/masakih/pf/CocoaAndAVFoundation/files/大大大大問題点としてiOSで再生可能なフォーマットしか再生出来ません! 今回はチュートリアルではなくサンプルにしてみましたよ。 次回より89回に渡りサンプルを…

BSInlinePreviewer 2.2 and BSInlinePreviewerEx 1.0b2

BathyScapheで画像のインライン表示を可能にするBSInlinePreviewer 2.2 と BSInlinePreviewerEx 1.0b2をリリースしました。 http://sourceforge.jp/users/masakih/pf/BSInlinePreviewer/files/ BSInlinePreviewer 2.2 画像サムネイルをキャッシュする事で二…

これはやばい 気がつかない

スレッドセーフっぽいのにスレッドセーフじゃない @interface Hoge : NSObject @property NSInteger index; @end atomicな整数型プロパティです。 ... hgoe.index++; ... 凄くスレッドセーフっぽいです。見た目は。 でもこれ、スレッドセーフじゃないです。 …

覚え書き

assignなプロパティも、KVOやCocoaBindingsで問題が出る可能性があるため、dealloc時にnilを代入して処理しておく。

何がどうなっていたのか

昨日のエントリの話です。 http://d.hatena.ne.jp/masakih/20120429/1335715264インポートしたファイルの中に、このような非形式プロトコルがあったのが原因でした。 @interface NSObject (Hoge) - (void)setTitle:(NSString *)title; @end 非形式プロトコル…

@propertyはprotected?

以下の記事は完全に間違っていました。このような間違いを書いた原因を追記しました。http://d.hatena.ne.jp/masakih/20120430/1335753725とりあえず、仕様にないような気がするので非推奨 外部にはreadonly, 内部ではreadwriteなプロパティを持つクラスがあ…

atomicって何なのさ?(2)

atomicってのは広義にはマルチスレッドで同時に実行されても大丈夫てことです。 つまりatomicはその中で何かを守ってるってことでもあります。まず、これのアセンブラコードを見てみます。 @interface AClass : NSObject @property (copy) NSString *name; /…

atomicって何なのさ?(1)

atomic だけではインスタンスの整合性は保たれない? @interface AClass : NSObject @property (copy) NSString *firstName; @property (copy) NSString *lastName; @end こういうクラスがあるとします で、現状 AClass *instanceA = [[AClass alloc] init];…

プロパティのatomicとnonatomic  結論はないよ!

今度はatomictとnonatomic, mutableとimmutable, retainとcopyでどんな違いがあるか調べてみたよ!テストコード(長いよ!) #import <Foundation/Foundation.h> @interface Test01 : NSObject @property (nonatomic,assign) id obj; @property (nonatomic, copy) id obj1; @property </foundation/foundation.h>…

色を変える1.1をリリースしました

色を変える1.1をリリースしました http://sourceforge.jp/users/masakih/pf/BSTRAEditor/files/変更点はBathyScaphe 2.1.1の新機能に対応です。使い方は このへんをご覧ください。

で、結局ARCってなんなの?

GCとARC何か似てるようなものと思っていませんか? ARCもGCみたく実行時に変なウエイトが掛かるんじゃないの?とか。 実際は全く別物です。 結論を先に言えばCGは動的メモリ管理、ARCは静的メモリ管理です。 静的--つまりコンパイル時にメモリを管理しちゃう…

プロパティのatomicとnonatomic 三たび

ちょこっと掘り下げてみますまずソースをちょこっと変えます。変更点だけ。 Test01 *test = [[[aClass alloc] init] autorelease]; test.obj = [[[NSMutableArray alloc] initWithCapacity:1] autorelease]; // ここ変更 id x[2]; objプロパティに入れるイン…

プロパティのatomicとnonatomic 再び

昨日セッタしか比べなかったので、今日はゲッタ。 #import <Foundation/Foundation.h> @interface Test01 : NSObject @property (nonatomic,retain) id obj; @end @interface Test02 : NSObject @property (retain) id obj; @end int main( int argc, char *argv[]) { id pool = [[NSA</foundation/foundation.h>…

てことで

BooksExporter 1.5をリリースしました。http://sourceforge.jp/users/masakih/pf/BooksExporter/files/?id=1085変更点は 新しいBooklog形式をサポート です。

プロパティのatomicとnonatomic

Objective-Cプロパティのatomicとnonatomicがどれ位パフォーマンスに影響を与えるのかテスト #import <Foundation/Foundation.h> @interface Test01 : NSObject @property (nonatomic,retain) id obj; @end @interface Test02 : NSObject @property (retain) id obj; @end int main( i</foundation/foundation.h>…

俺様libsqlite3.a用適当Makefile

CFLAGS=-DSQLITE_OMIT_UTF16 -DSQLITE_OMIT_TCL_VARIABLE -DSQLITE_OMIT_LOAD_EXTENSION \ -DSQLITE_OMIT_INCRBLOB -DSQLITE_OMIT_GET_TABLE -DSQLITE_OMIT_EXPLAIN \ -DSQLITE_OMIT_BUILTIN_TEST -DSQLITE_OMIT_BLOB_LITERAL -DSQLITE_OMIT_ATTACH \ -DSQLI…

猛省 例外処理は思った以上に遅い

猛省しました 戒めのために #import <Foundation/Foundation.h> NSArray *testArray() { static NSMutableArray *array = nil; if(array) return array; array = [[NSMutableArray alloc] init]; for(int i = 0; i < 3; i++) { [array addObject:@""]; } return array; } // 例外上等</foundation/foundation.h>…

Xcode4.3とXcode3.xを切り替える

基本的には これ(Xcode3.x とXcode4.xを簡単に切り替える - masakihの日記)でいいです。 が、Xcode4.3は常に自分の中の環境を使用するのでXcode4.3を起動する前にxcode-selectを実行する必要はありません。 というか、Xcode4.3はxcode-selectの内容を無視…

カテゴリでプロパティを追加する

という話 普通にやっても無理なので、Associated Objectを使います。 #include <objc/runtime.h> @interface NSObject (AddProperty) @property (copy) NSString *string; @end @implementation NSObject(AddProperty) - (NSString *)string { id result = objc_getAssociate</objc/runtime.h>…

Xcode4.xのデバッグで例外時に停止

Xcode3.xまでは「実行」メニューにあった「Objective-C例外時に停止」がXcode4.xにはありません。 無くなってよいものではないので検索してみたらありました。 こちらです。 xcode4 - "Run > Stop on Objective-C exception" in Xcode 4? - Stack Overflow簡…

Blocksを調べよう!

まず、BlocksがObjctive-cオブジェクトだって事でそのクラスを調べよう! - (void)printClassHierarchy:(id)object { NSMutableArray *names = [NSMutableArray array]; Class objClass = [object class]; Class rootClass = [NSObject class]; while(objCla…