- 1 名前:デフォルトの名無しさん mailto:sage [2011/08/21(日) 10:47:48.04 ]
- Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。
(Wikipedia:ja.wikipedia.org/wiki/Objective-C より) Objective-C [ObjC part:5]; hibari.2ch.net/test/read.cgi/tech/1279730299/ Objective-C [ObjC part:4]; pc12.2ch.net/test/read.cgi/tech/1239721860/ Objective-C [ObjC part:3]; ttp://pc12.2ch.net/test/read.cgi/tech/1186543111/ Objective-C ttp://pc11.2ch.net/test/read.cgi/tech/1106983092/ Objective-C ttp://pc5.2ch.net/tech/kako/990/990574267.html
- 48 名前:デフォルトの名無しさん mailto:sage [2011/09/05(月) 20:50:21.64 ]
- ちょっと試してみたが、>>38の言うとおり、メインキューでは、cancelAllOperationsはきかないみたいだな。
allocして作ったキューではきく。違いは何かというと、シリアルか非同期かいうことか。 説明がドキュメントにみあたらないげと、もうそういう仕様ということでいいんじゃね? メインキューはUIも処理するから、本来時間のかかる処理をメインキューでやるべきではないし。
- 49 名前:デフォルトの名無しさん mailto:sage [2011/09/05(月) 20:56:46.69 ]
- GCDで書いてシングルスレッド?あるのか。
>>37,42 説を推すが。
- 50 名前:デフォルトの名無しさん mailto:sage [2011/09/05(月) 21:06:28.51 ]
- >>49
GCDじゃなくて、あくまでNSOperationだから。じゃないのか?
- 51 名前:デフォルトの名無しさん mailto:sage [2011/09/05(月) 21:09:59.31 ]
- -[NSOperationQueue cancelAllOperations] に breakpoint 設定して、
アセンブリコードおっかけて見りゃわかるが、 mainQueue の時だけ「何もしない」処理になってる。 mainQueue は共有資源なんだからこれはこういう仕様なんだろう。 cancelAllOperations で意図しない operation が cancel されないように。
- 52 名前:デフォルトの名無しさん mailto:sage [2011/09/05(月) 21:16:02.76 ]
- >>49
メインスレッドで実行することを指定しているのだから、逆にマルチスレッドにはなれないだろう。
- 53 名前:デフォルトの名無しさん mailto:sage [2011/09/05(月) 21:19:52.56 ]
- >>51に同意
- 54 名前:デフォルトの名無しさん mailto:sage [2011/09/05(月) 21:21:58.97 ]
- UIのイベント処理なんかもオペレーションが使われてんだっけ?
- 55 名前:デフォルトの名無しさん mailto:sage [2011/09/05(月) 21:45:09.07 ]
- >>54
それは、NSEventな話?
- 56 名前:デフォルトの名無しさん mailto:sage [2011/09/05(月) 22:28:31.74 ]
- いや、>>51で意図しない operation が cancel されないように。ってあったから、
意図しないオペレーションってどんなんかなと思って。
- 57 名前:デフォルトの名無しさん mailto:sage [2011/09/05(月) 22:59:44.12 ]
- >>56
マルチスレッドな環境では、あるスレッドで実行されているNSOperationの内部で、mainQueueに新しいNSOperationを追加するかもしれない。 だから、ある時点でメイン・スレッドのRunLoopに、どんなNSOparationがスケジュールされているか把握するのは無理。 という意味だと思います。 たとえ、-[NSOparationQueue operations]を呼び出して中身を確認したつもりでも、次の瞬間に新しいNSOperationが増えているかもしれない。
- 58 名前:デフォルトの名無しさん mailto:sage [2011/09/05(月) 23:05:07.32 ]
- あぁ、でもそれは、MainQueueにかぎらず、GlobalQueue全般についていえることだね。
- 59 名前:29 mailto:sage [2011/09/05(月) 23:25:27.70 ]
- >>36
下の様なコードで、cancelAllOperationsを呼ぶ前はisReadyがYESで、他がNO。 メインキューで処理してる場合、次のループが来た時にはcancelする対象が無くなってるような気がする。 - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { self.queue = [NSOperationQueue mainQueue]; Operation *op = [[[Operation alloc] init] autorelease]; [self.queue addOperation:op]; op = [[[Operation alloc] init] autorelease]; [self.queue addOperation:op]; NSArray *ops = [self.queue operations]; for (id op in ops) { //[op cancel];//個別に呼べば、キャンセルできる。 NSLog(@"isCanceled:%d, isExecuting:%d, isFinished:%d, isConcurrent:%d, isReady:%d", [op isCancelled], [op isExecuting], [op isFinished], [op isConcurrent], [op isReady]); } [self.queue cancelAllOperations]; NSLog(@"cancel"); >>42 実行前か実行中かでcancelが呼ばれたり、呼ばれなかったりするわけではないのでは? ドキュメントに書いてあるのは、cancelがオペレーションを強制的に止めるわけでは無いことは書いてあるけど、 内部のフラグ更新するとも書いてある。 効果が出ないと書いてあるのは、(実行が?)終了してるものにcancelを送ってもキューに影響は無いと書いてあり、 実行中にcancelされた場合は、isCanceledを自分でチェックして、速やかにmainを終えるようにするのが望ましく、 実行前なら順番が回ってきた時にstartが呼ばれた後、 mainを呼ばずにキューから削除されるはず。(直ぐに効果を及ぼさないってのは、このキューに対してのことを指しているのでは?) アセンブリを読めないから実装まではわからないけど、 >>51の言うようにそういう仕様なんだろうとは思う。 とはいえoperationsで簡単に回避できるので、個別に確認しろという意思表示なのかな。
- 60 名前:デフォルトの名無しさん mailto:sage [2011/09/06(火) 00:02:38.21 ]
- そもそもmainQueueにぶちこんだoperationをまとめてcancelすることが必要になる設計がおかしい
- 61 名前:デフォルトの名無しさん mailto:sage [2011/09/06(火) 00:11:17.56 ]
- まぁな
- 62 名前:デフォルトの名無しさん mailto:sage [2011/09/06(火) 11:30:30.58 ]
- これで独立できる
売るものはスマートフォンアプリ WEBサイト運営 サーバーはクラウド VPS 電話はスマートフォンSkype オフィスは地方にプレハブ型の格安高性能オフィスを建て(300万〜500万) レンタル自習室&シェアオフィスで収入を得ながらそこで開発する tinyurl.com/43xmk7m tinyurl.com/3mopkfy
- 63 名前:デフォルトの名無しさん [2011/09/21(水) 15:08:49.54 ]
- スマン。基礎的なことを教えてください。
- (NSString *)getString { //@ NSString *msg = @"temp"; return msg; } これでも問題なしで、以下とやってることは同じ? - (NSString *)getString { //A NSString *msg = [[NSString alloc] initWithString:@"temp"]; return [msg autorelease]; } returnすると、中括弧の範囲内で終わるはずのmsgの寿命が、呼び出し元のrun loopに依存するようになるんですよね? Aは問題ないと感覚的に分かるのですが、@はinitせずに一時オブジェクトをreturnしていることにいまでも違和感が。。
- 64 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 15:28:02.80 ]
- 定数は一時オブジェクトではないので
- 65 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 15:30:50.19 ]
- char *hoge() { return "hoge";}
と一緒
- 66 名前:63 mailto:sage [2011/09/21(水) 16:13:55.92 ]
- >>64-65 サンクス
なるほど。 NSString以外でも、NSData *myDataとかでも同じですよね? returnによって自動でつくautoreleaseのスコープが伸びるのであって、 一時オブジェクトという感覚を捨てたほうがいい感じでしょうか。
- 67 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 16:23:12.35 ]
- >>66
なにもかもが違う
- 68 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 16:34:53.61 ]
- 何を聞かれてるのかわからないのに無理に答えなくていいです
- 69 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 16:47:27.28 ]
- へぇ
- 70 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 17:03:54.99 ]
- NSString *msg = @"temp";
って NSString *msg = [[NSString alloc] initWithUTF8String:"temp"] autorelease]; または NSString *msg = [NSString stringWithUTF8String:"temp"]; とほぼ同義だと思ってるんだが。@"〜"ってNSString用のシンタックスシュガーだろ。
- 71 名前:63 mailto:sage [2011/09/21(水) 17:06:58.54 ]
- >>67
違うなら違うで、どのあたりか指摘いただけるとありがたいです。 >returnによって自動でつく とは@の場合に、msgがautorelease扱いになることを指して書きました。 >autoreleaseのスコープが伸びる とは、 { NSString *string = [self getString]; } のように呼び出し元の有効範囲でautoreleaseされるという意味で書きました。 ちなみにこの辺を参考にして、質問しました stackoverflow.com/questions/2279071/nsstring-returning
- 72 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 17:12:05.35 ]
- return で autorelease が自動でつくなんて初耳だぞ。
returnは関係ないだろ。
- 73 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 17:15:50.44 ]
- >>71
autoreleaseっていうのは、あとでreleaseするために AutoreleasePoolに突っ込むっていう操作だよ。 returnで自動で付いたりしないしスコープとも関係ない。
- 74 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 17:17:04.26 ]
- 63 は任意のメソッドに自動で
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; {//スコープ(笑) ... }. [pool release]; が付いていて、return の際にはスコープが伸びる(謎)とか思ってるんじゃ無かろうか。
- 75 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 17:20:23.35 ]
- >>70
@"〜" は CFSTR("〜") と等価みたいだよ。
- 76 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 17:46:33.21 ]
- 伸びるって表現するならスコープじゃなくてライフサイクルでしょ。
- 77 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 17:49:10.30 ]
- スコープに対してエクステントっていうんだぜ
- 78 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 17:52:15.33 ]
- >>75
そうなんだ。@"〜"はautoreleaseされないんだな。勉強になった。
- 79 名前:63 mailto:sage [2011/09/21(水) 18:04:59.00 ]
- 自分が考え違いをしていたのだけなんとなく分かってきました。
>>72-73 >returnで自動で付いたりしないしスコープとも関係ない。 はい。 >>74 >return の際にはスコープが伸びる(謎)とか思ってるんじゃ無かろうか。 似たようなことを思ってました。 まだ分かってないんですけど、下の@Aは両方とも問題なく使えますか? - (id)getData { //@ NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"hoge/hoge.xml"]]; return data; } - (id)getData { //A NSData *data = [[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"hoge/hoge.xml"]] autorelease]; return data; } 呼び出すときの有効範囲は中括弧内ですよね? { NSData *data = [self getData]; }
- 80 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 18:15:40.59 ]
- 何を聞きたいのかがよく分らんな。
まず、スタックとヒープの違い、オブジェクトのオーナーシップ、 メインループとAutoreleasePoolの関係を理解しれ。
- 81 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 18:21:32.31 ]
- >>79
@とAは等価。 @は予めautoreleaseされたオブジェクトをdataに受け取ってる。 Aは自分で生成してautoreleaseしてる。 getDataが返したオブジェクトの有効範囲という意味なら中括弧は無関係。 どこかで現在のAutoreleasePoolが開放されるまでは生きてる。 たぶんフレームワークに制御を戻すまで。
- 82 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 18:34:32.76 ]
- >>79
AppKit とかが AutoreleasePool 作ってるのを、 言語レベルで勝手に AutoreleasePool で括られてると勘違いしてるようだが、それは違う。
- 83 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 18:36:41.67 ]
- 変数のスコープと、オブジェクトのライフサイクルがごっちゃになってる気がするな。
{ NSData *data = [self getData]; } は、dataという変数のスコープは中括弧内に限定される(中括弧の外で参照しようとしても、 コンパイルが通らない)が、[self getData]から返された実体が実際に破棄されるのは、 次のループのサイクルに戻ってAutoreleasePoolが中身を破棄する時でしょ。 autoreleaseした時点で、AutoreleasePoolに登録されている。 基本的にスコープとオブジェクトのライフサイクルは関係ない。スコープを抜けるときに 自動的にreleaseされることもない。 C++でローカルで宣言したオブジェクトがスコープを抜ける時に呼ばれるデストラクタと ごっちゃになってないか。どっちかっつうと、allocとreleaseの関係は、C++のnewとdelete に近い。でもC++のオブジェクトは参照カウンタによる管理ではないけど。最近のC++は よく知らないが。
- 84 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 18:57:58.40 ]
- じゃあ、混乱させよう
今のMac OS Xでの実装では - (NSString *)hoge { return @"hoge";} - (NSString *)fuga { return [NSString stringWithString:@"hoge"];} で返されるものは同じインスタンス。
- 85 名前:63 mailto:sage [2011/09/21(水) 18:59:36.65 ]
- みなさんの説明で、ようやく理解できてきたと思います。
スタックありきで考えていました。すんません。自分がスタックと考えていたもの全てヒープなんですね。 >>79の@がひっかかっていた理由が、 スタックに制限されると誤解していたので、スコープで理屈がつくよう自分理論を作ってました。 ありがとうございました。いやマジで。
- 86 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:08:19.77 ]
- >>84
つまり、クラスクラスタの為せる技ってこと?
- 87 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:12:17.38 ]
- >>86
+ (NSString*) stringWithString:(NSString*)s { return s; } っていう実装になってる事に加えて、 コンパイラが同じ内容の文字列定数をひとつにまとめるようになってる っていう事では?
- 88 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:13:31.64 ]
- いやこんな風かな?
+ (NSString*) stringWithString:(NSString*)s { return [s autorelease]; }
- 89 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:14:15.10 ]
- あれなんか違いそう
- 90 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:23:04.13 ]
- NSString *s1 = @"hoge";
NSString *s2 = [NSString stringWithString:@"hoge"]; NSString *s3 = [NSMutableString stringWithString:@"hgoe"]; NSString *s4 = [NSString stringWithString:s3]; NSString *s5 = [NSString stringWithString:s4]; NSLog(@"%p, %p, %p, %p, %p", s1, s2, s3, s4, s5); 0x100002058, 0x100002058, 0x10054f3f0, 0x10054f450, 0x10054f450
- 91 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:26:09.97 ]
- へー [NSString stringWithString:@"hoge"] も
autorelease されないんだな。 他の[NSString stringWith〜]はautoreleaseされるのに。 奥が深いというか、変態的というか。 黒魔術の一端を垣間見た気がした。
- 92 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:26:58.44 ]
- されないってなんだよ。release に意味がないだけ
- 93 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:31:02.89 ]
- あぁ定数だから、関係ないのか。
- 94 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:34:28.55 ]
- 定数はとにかく使いまわされるっていう事だな。
- 95 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:34:57.14 ]
- つうことはあれか、ソース内に@"〜"の記述が増えれば増えるほど
それが一時的な用途であったにせよ、メモリを圧迫するってことか。
- 96 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:38:22.24 ]
- でもリードオンリのページに置かれてプロセス間で共有されるだろうから、
同時にいくつも起動するプログラムなら節約になりそう。
- 97 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:45:58.05 ]
- >>95
> 容量の初期値は 2500。 hmdt.jp/core/string/const.html
- 98 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:46:23.30 ]
- それは文字列の内容が同じ場合でそ
- 99 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:48:34.78 ]
- >>97
あぁつうことは、多少@"〜"が多かろうが少なかろうが、 その領域の容量は予め決まっているから、メモリ的には あまり関係ないっつうことか。
- 100 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:50:47.24 ]
- 文字列定数をまとめるのって実行時にやってたのかよ・・・
- 101 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 19:53:58.47 ]
- NSString *str0 = @"hoge";
NSString *str1 = [NSString stringWithString:str0]; NSString *str2 = [str0 copy]; fprintf(stderr, "%p, %p, %p¥n", str0, str1, str2); 全部同じインスタンス コピーすらされない。節約魂入ってます。 @property (copy) NSString *hoge; にイミュータブルなNSString文字列をsetするとまるで、 @property (retain) NSString *hoge; のように振る舞うのもこれのおかげ。
- 102 名前:デフォルトの名無しさん mailto:sage [2011/09/21(水) 20:04:24.45 ]
- なるほど、NSString の中身は変更されようがないから、コピーを作る必要がないってことか。
- 103 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 02:47:19.46 ]
- Constant CFString(=NSString)はかなり前からコンパイル時にgccがCFStringの構造を
直接展開する様になった。アセンブリリストで生成コードを見れば一目瞭然。 Constant CFStringに対してretainやreleaseはNOP扱いで何の効果も無い。 >>65 これが一番適切な答えだね。 >>97 これは化石情報
- 104 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 05:16:10.18 ]
- 質問させてくらはい
x = [[Foo alloc] init]; で init がエラーしたら、この alloc した領域はリークすると思うんですけどどうなんでしょう。
- 105 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 08:20:31.11 ]
- 「init がエラーしたら」ってなんだよ
- 106 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 09:42:17.72 ]
- >>104
initが責任を負う
- 107 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 11:59:58.89 ]
- つまり辞任?
- 108 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 12:16:02.29 ]
- >>104
>>13にサンプル付きで載ってる。
- 109 名前:デフォルトの名無しさん mailto:sage [2011/09/22(木) 16:42:25.26 ]
- >>106,108
ありがとん
- 110 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 12:10:30.79 ]
- 正規表現リテラルとか欲しいな
@/hoge/ みたいな
- 111 名前:デフォルトの名無しさん mailto:sage [2011/09/24(土) 20:00:20.06 ]
- >>110
@interface NSString (regex) @property(readonly) NSRegularExpression* r; @end @implementation NSString (regex) - (NSRegularExpression*)r { return [NSRegularExpression regularExpressionWithPattern:self options:0 error:nil]; } @end regex = @"hoge".r; obj-cなら、この辺りが限界かな
- 112 名前:デフォルトの名無しさん [2011/09/25(日) 02:54:03.01 ]
- 通信を途中でキャンセルするのは、下のどの組み合わせが必要ですか?
1.同期通信 2.同期通信+GCD 3.非同期通信 4.非同期通信+GCD 1だとGUIが止まって4だと行けるのは何となく。2と3の制限がイマイチ分かりません。
- 113 名前:デフォルトの名無しさん mailto:sage [2011/09/25(日) 13:38:56.52 ]
- >>112
試してみて上手くいくのを採用。
- 114 名前:デフォルトの名無しさん mailto:sage [2011/09/25(日) 18:47:20.02 ]
- 事故解決しました。
- 115 名前:デフォルトの名無しさん mailto:sage [2011/09/25(日) 23:40:46.43 ]
- まあ総当たりだと事故るよな
- 116 名前:デフォルトの名無しさん mailto:sage [2011/09/26(月) 06:14:49.09 ]
- >>112
4.非同期にしてGCDしないと受信待ちから抜けられないでアンサー?
- 117 名前:デフォルトの名無しさん mailto:sage [2011/09/26(月) 12:09:55.61 ]
- ライフラインお願いします。
- 118 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 00:46:55.39 ]
- ゲーム開発には明らかに不向きだと思うんだけど、
ocj-cを採用した商用の3Dバリバリなアクションゲームとかあったりするの? nextstepから随分と長いこと使われてるあたり保守性に優れてそうだし、 長期スパンで使い続ける趣味グラマには良さげなんだけれども
- 119 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 01:50:21.96 ]
- >>118
一言でゲームといっても実際にはいろいろな種類のゲームがあるよね。 Objective-Cでの開発で不利にならないゲームのジャンルなり何なりがあるんじゃないかなあと思ったり。
- 120 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 01:56:38.30 ]
- 3DバリバリなやつなんてOpenGLなんだから、
OS側のフレームワークとのインターフェイス以外は全部CなりC++なりで書けるじゃん。
- 121 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 02:43:31.46 ]
- >>119
quakeとか、doomとかをイメージしてまふ>3Dバリバリなアクションゲーム 画像処理系のプロプライエタリィなものは割とある気がするので、そういうのには向いてるのかと >>120 そりゃま、そうなんだが obj-cの特性を十分に使って開発されたソフトウェアの実績あるのかが気になったので
- 122 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 03:44:49.01 ]
- 決して言い過ぎではないと思うから言うけど、
>>121 >obj-cの特性を十分に使って開発されたソフトウェアの実績あるのか んなモンは無い
- 123 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 08:37:40.11 ]
- Appleの製品じゃね?
- 124 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 22:25:12.07 ]
- >>121
そのObjective-Cの特性って、例えばどんなのを想定してるの?
- 125 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 22:45:52.61 ]
- >>124
c++よりも動的な性質を持ったオブジェクト指向とか 特徴的といえば、(id)とかだけど、こういった独特の仕組みつかうことで開発効率あがったりするのかなと obj-c自体にはあんまり関係なさそうだけどgcdとか
- 126 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 23:05:55.03 ]
- idが特徴的って…あんま理解してなさそうだな。
- 127 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 23:20:20.86 ]
- ああ、まったく理解してないぜ。ただの計算機歴史のミーハーだし
ネット上をいくら見回したって、smalltalk由来のオブジェクト指向以上の情報が見当たらのだもん appleのプログラマが、ひょっこりとこのスレ見てるなんて奇跡でもおこらないかな
- 128 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 23:35:50.85 ]
- 世界初のWebブラウザーとWebObjectsをじっくり調べてごらん。
- 129 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 23:43:34.57 ]
- Webブラウザの話は知ってるよ。知ってるわよ、そのぐらい。馬鹿にしないでくれる?っと。
奇遇にもちょうどWebObjectの記事を見ていたところw javaで書き直されてるのね。不遇な子ですこと>obj-c
- 130 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 23:53:05.53 ]
- >>125
それで、「動的」だと、なぜ開発効率のアップに繋がるんだ?
- 131 名前:デフォルトの名無しさん mailto:sage [2011/10/03(月) 23:56:53.60 ]
- その話題に持っていきたいなら隔離スレで頼む
煽りでなく、有益な流れになった試しがないw
- 132 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 00:02:33.36 ]
- 仕様の固まっていない未知のソフトウェアを書く上では型指定されていない方が作りやすかった
当時のレガシーなc++の型システムでは、プログラムの修正がほぼ不可能だったのだと妄想中 単にcとobjective-cしかなかったような気もするが。 でも、あの時代ってSTLもないよね?そんな理由でNSArrayとかが使いやすかったんじゃないの
- 133 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 00:03:46.88 ]
- >>131
スレ違いスマソ
- 134 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 00:06:24.63 ]
- >>131
あまり、その話題に持って行くつもりもなかったのだが、 でも、今回の話って、結局そういうレベルの話なのだろう。
- 135 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 00:31:42.43 ]
- まああそこに落ち着いちゃうのかも知れないけど、落ち着いた先は泥沼なのよね
- 136 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 12:48:26.16 ]
- Objective-CのObjective-はCの敷居を限り無く下げただけだからCと同じようなもんだと思えばよろし
実際コアな部分は殆どCで書かれてる
- 137 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 12:59:57.47 ]
- >>132
まさにその罠にはまったのがAPIをC++でやったBeOSだったと記憶してる
- 138 名前:デフォルトの名無しさん mailto:sage [2011/10/04(火) 19:56:59.56 ]
- delegateパターンはid型が便利。
OBJ-Cのメリットは、ちゃんと書くとコメントがいらないことだと思う。
- 139 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 01:32:05.58 ]
- cとc++ => 完全に別物
cobj-c => マクロのっけただけ って認識であってる?
- 140 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 08:50:24.55 ]
- だいたい合ってナイ
- 141 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 12:27:26.18 ]
- 極端な例えをする人は「そういうことにしたいんだろうな」としか思えん。
違うと言って「じゃあどう違うの?」「結局マクロみたいなものでやってるってことでしょ?」とか言いそうだし。
- 142 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 12:46:57.04 ]
- いいえ、事実です。
- 143 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 12:51:04.02 ]
- まあでもobjcはランタイムの方が本体で、
C言語に対する拡張はそれを便利に使えるようにするマクロ集的なところはあると思う。 C→C++とくらべると、なじんでないと言うか、異質感丸出しというか。ESQL/Cっぽい。
- 144 名前:デフォルトの名無しさん mailto:sage [2011/10/06(木) 13:12:44.40 ]
- C++もObjective-Cも
最初の実装はプリプロセッサだったからマクロっぽく見えるんじゃね?
- 145 名前:デフォルトの名無しさん mailto:sage [2011/10/07(金) 15:16:04.88 ]
- ╭━━━╮┏┓┏━━━╮┈┈┈◤┈┈
┃╭━╮┃┃┃┃╭━╮┃┈◢◣◢◣┈ ┃╰━╯╯┃┃┃╰━╯┃┈▉▉▉▋┈ ┃╭━╮╮┃┃┃┏━━╯┈◥▉▉◤┈ ┗┛┈┗┛┗┛┗┛Ⓢⓣⓔⓥⓔ_Ⓙⓞⓑⓢ ╭━━━━━━━━━━━━╮ ┃▉▉▉▉▉▉▉▉▉▉▉▉┃ ┃▉┏━━━━━━━━┓▉┃ ┃▉┃ⓉⓗⓐⓝⓚⓎⓞⓤ┃▉┃ ┃▉┗━━━━━━━━┛▉┃ ┃▉▉▉▉▉▉▉▉▉▉▉▉┃ ╰━━━━┳━━┳━━━━╯ ▁▁▁▁╭╯▁▁╰╮▁▁▁▁ ╱▔▔▔▔▔▔▔▔▔╲ ╭╮ ▔▔▔▔▔▔▔▔▔▔▔ ╰╯ ずれるかな?
- 146 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 00:33:46.34 ]
- ずれるかなじゃねーよ、ずれまくってるじゃねーか!
納品する前にちゃんとテストしろよ、ボケが! あと、コピペできねーぞ。どうなってんだ!
- 147 名前:デフォルトの名無しさん mailto:sage [2011/10/08(土) 01:00:29.11 ]
- そういえば、Jobsが目をつけなかったらobjcは今頃博物館行きだったかもなあ。
- 148 名前:デフォルトの名無しさん [2011/10/08(土) 12:13:33.90 ]
- iPhoneアプリで棒グラフを表示したいのですが、やり方が分かりません。
s7graphviewを使ってみましたが、イメージしているものと違っていて別のものを捜しています。 core-plot試しましたが、バイナリリンクの仕方が分からず挫折orz (そもそもcore-plotでできるのか?) JavaのJFreeChartの棒グラフのように表示できるものを捜しています。 Mac+Xcode4.1触り始めて一週間の素人です。 ご存知の方いたら教えてください。よろしくお願いします。
|

|