Objective-C [ObjC part:3];at TECH
Objective-C [ObjC part:3]; - 暇つぶし2ch450:デフォルトの名無しさん
08/07/17 18:58:24
>>449
㌧クス。感涙で前が見えない。゚(゚´Д`゚)゜。
うーむ、C++でもC#でもなく初代Cがいいのか・・・
iPhone用ゲームの開発が主目的なんですが、やはりWebアプリから学んでいったほうが
いいんですかね?


451:デフォルトの名無しさん
08/07/17 19:21:49
明確にiPhone開発がしたいならObjCから始めるべきだと思う.
モチベーションは全てに優先するよ.

452:デフォルトの名無しさん
08/07/17 19:32:08
うむ、iPhone Application Tutorialからど~ぞ。

453:デフォルトの名無しさん
08/07/17 20:03:11
皆さんありがとう
明日Amazonから萩原本が届くのでとりあえず読んでみます(`・ω・´)

454:デフォルトの名無しさん
08/07/17 20:33:13
まてまて、荻原本はプログラミング初学者には敷居が高いぞ。
他言語でokなので、何かしらの入門本を読んでからの方が良いと思われ。

455:デフォルトの名無しさん
08/07/17 20:43:01
初めてで萩原本読むくらいなら、
英和辞書片手にヒレガス本第3版読んだ方が良さそうだな。
平易な文体だから高校生以上なら辞書なしでも
大体のフィーリングは掴めると思うし、スクリーンショットや挿し絵も多いしな。

456:デフォルトの名無しさん
08/07/17 20:46:52
>>454>>455
Σ (゚Д゚;)
そ、そうなのか・・・
では上で教えてもらったCとか、Ruby on Railsとかの入門書から挑戦してみます
ヒレガス本第3版というのも見てみます(洋書は気おくれしそうですが・・・)
ありがとう
ってか皆さん滅茶苦茶お詳しいっすね・・・(;´Д`) 

457:デフォルトの名無しさん
08/07/17 20:50:31
個人的な趣味としてRubyと Railsを押すけど、webアプリを作って外部に公開する場合レンサバ借りるときにいろいろ困ることがあるよ。
英語が得意なら海外でRails向けのホスティングサービスがあるけどね。

iPhoneアプリを作りたい位だからLeopardユーザだと思うけど、
TextMateってテキストエディタをDLしてきて
p "Hello World"
って書いて拡張子を rb 保存して Command+Rをするだけで実行できて楽だと思う。

ってスレ違いになるからこのくらいにしておく。


その心意気はすばらしいけど、荻原本はまったくもってプログラミング初心者が読む本じゃないよ。

458:デフォルトの名無しさん
08/07/17 21:25:47
でもObjective-Cの仕様なんてCに毛が生えたようなもんだし、
Objective-Cの書籍として荻原本はベストな選択の一つなのは間違いない。

強いて言うなら、Cの入門書とCocoaフレームワークやInterface Builderに
ついての本を一冊ずつ買っとくといいと思う。

459:デフォルトの名無しさん
08/07/17 22:16:38
>>457
>>458
アドバイスサンクス
道は一本じゃなさそうなのでいろいろ齧ってみます
しかしプログラムの道は高く険しいなぁ・・・


460:デフォルトの名無しさん
08/07/17 23:21:38
>>459
あと、iPhone プログラムを突然はじめるより、いちど OS X 用の小さいプログラムを書いてから iPhone にいったほうがわかりやすいかもしれない。
大体構造いっしょだし、OS X 用プログラムの書き方のほうがネットに沢山ころがってます。

461:デフォルトの名無しさん
08/07/17 23:25:19
>うーむ、C++でもC#でもなく初代Cがいいのか・・・
Obj-C は C++ と同時期に(80年代) C から派生した言語なので、まあ並列だよ。
べつに C++ を勉強したから Obj-C がわかりやすいとかその逆ということではないです。
両方ともオブジェクト指向だけど、毛色が360度違います。

C# は Java のクローンだよね。Java 自体が C, Obj-C, C++ を参考に開発されたものだし。

462:デフォルトの名無しさん
08/07/17 23:49:02
C#、特にC# 3.0はJavaより強力な言語になってるよ。
ただ実質的に実行環境や開発環境がWindowsに限られるのが難。(Monoもあるけど)
MS製の環境にどっぷり浸かるならば良いとは思う。VS.Netも強力だし。

ただiPhoneの開発には使えないし、応用できるテクもおそらく無いw

463:デフォルトの名無しさん
08/07/17 23:53:15
勘違いさんいらっしゃーい >>462
はいさようなら。

464:デフォルトの名無しさん
08/07/17 23:55:19
>>460
>>461
>>462
俺みたいなクレクレ厨にここまで親切にアドバイスしてくれるなんて・・・
みんな優しいな。゚(゚´Д`゚)゜。
よその板なら「ググれやカス」で終わっても不思議じゃないのに・・・
ありがとう、このご恩は忘れませぬ ノシ

Windowsのゲーム作りならC#がいい、って聞いたことあるので
いつかC#も触ってみます

465:デフォルトの名無しさん
08/07/17 23:58:27
>>464
>このご恩は忘れませぬ

検討を祈る。成功したら後輩に優しくな!

466:デフォルトの名無しさん
08/07/17 23:59:10
自作er乙

467:デフォルトの名無しさん
08/07/18 00:14:15
iPhoneアプリに関しては正式に配布できるような形のプログラムのTipsとかは現時点ではNDAがあるからないに等しい。
Appleのサンプルプログラムくらいしかソースも読めない。
Objective-Cをやるなら
>>460が言うようにMacアプリからやった方が現時点ではいいだろうね。


468:デフォルトの名無しさん
08/07/18 13:19:01
Mac用だけどObjective-Cの入門記事です。
URLリンク(journal.mycom.co.jp)

469:デフォルトの名無しさん
08/07/18 13:36:38
Objective-CってVisitor Patternが使えないの?

470:デフォルトの名無しさん
08/07/18 18:39:27
え?

471:デフォルトの名無しさん
08/07/18 19:03:20
そもそも visitor pattern なんて使わないだろ

472:デフォルトの名無しさん
08/07/18 19:03:52
Visitor Patternを使うのに、何か問題でも?



473:デフォルトの名無しさん
08/07/18 20:49:15
Visitor Patternといえば木構造の処理系作成に使ったことがある。
でも、Objective-Cはメソッドオーバーロード出来ないから特殊な方法でやった。
普通の意味でならVisitor Patternが使えないのは本当。

474:デフォルトの名無しさん
08/07/18 21:05:42
Visitor Patternって、メソッドのオーバーロードができないと、実装できないんだっけ?

オーバーロードって、引数の型によって「静的に」同じ名前のメソッドを区別するためのものなんだから、プログラムの構造に影響しないように思えるけど。
単純に複数の名前のメソッドを使い分けるだけでは?



475:デフォルトの名無しさん
08/07/18 22:08:31
>単純に複数の名前のメソッドを使い分けるだけでは?
そんなメンテナンス性の悪いコーディングしてどうする

476:デフォルトの名無しさん
08/07/18 22:41:48
ようするに
void action(A obj)
void action(B obj)
と定義されていたものが、
void actionWithA(id obj)
void actionWithB(id obj)
となるだけだから、ソースコードの見た目の問題はあるけど、Visitor Patternが実装できない理由にはならないよね?



477:デフォルトの名無しさん
08/07/18 22:55:39
今帰宅
萩原本届いてた
ちょっと読んでみた



(´;ω;`) ・・・。


やっぱりCの入門書から読みます
>>467>>468
ありがとう
心折れかけたけど地道に頑張ります

478:デフォルトの名無しさん
08/07/18 23:13:32
>>477
まあプログラミングにも王道は無しだよ。あなたの今のように謙虚な気持ちを忘れなければきっとできるようになります。

あと、C のポインタのあたり、文字列操作の細かい話は
あまり勉強しなくても大丈夫なので読み飛ばしてください。

479:デフォルトの名無しさん
08/07/18 23:23:20
おいおい、ポインタはいるだろ。
Cocoaだって最近のAPIはNSError **が大量にあるだろ。

480:デフォルトの名無しさん
08/07/18 23:26:42
ポインタってみんなどういうところでつまづくの?
「変数を入れてるメモリエリアのアドレスを渡す。」
それ以上になにか必要か?

481:デフォルトの名無しさん
08/07/18 23:32:40
478 ですが、全然いらないというつもりはないんだけど。
>>480
さんの言ったことを言いたかったです。言葉が足りませんでした。

& と * はわかっておいたほうがいいけど、Objective-C ではそれで充分だよね。
malloc / free は要らないし、ポインタ演算 (足し算引き算) は要らないでしょ。
あと、配列は知らなくてもいいし、配列とポインタの等価性も要らないし、
文字列が char* 配列だということも知らなくてなんとかなるのでは。

482:デフォルトの名無しさん
08/07/18 23:56:38
>>476
>ソースコードの見た目の問題はあるけど、Visitor Patternが実装できない理由にはならないよね?
それで多重継承や多重ディスパッチを出来ると強弁するならご勝手にw

483:デフォルトの名無しさん
08/07/19 00:01:28
>>480
>配列とポインタの等価性
エキスパートC読んでこれが嘘だと理解した。こういうところに躓きの原因がある。>>481はわかっていない。

484:デフォルトの名無しさん
08/07/19 00:13:51
>>482
Obj-C は reflection があるから多重ディスパッチはむしろ実装しやすい気が ...
visitor pattern はvirtual member 止まりの静的型付け言語用の気がします。
とわからない言葉をならべてみる

485:デフォルトの名無しさん
08/07/19 00:15:10
>エキスパートC読んでこれが嘘だと理解した。こういうところに躓きの原因がある。
いやまあ、Objective C スレとしては、そのへんでひっかかろうがひっかかるまいが
Objective C では必要ないよというので充分なのでは。


486:デフォルトの名無しさん
08/07/19 00:19:14
こういうスレで嘘は良くないのではないかい?

487:デフォルトの名無しさん
08/07/19 00:34:22
世の中には平気で嘘をつける人がいる。
嘘を指摘されるとそういうものは必要ないと言いだす。
そういう無反省な態度は無自覚に行われるから本人は嘘を良くないとは考えていない。

488:デフォルトの名無しさん
08/07/19 00:41:12
>>484
>visitor pattern はvirtual member 止まりの静的型付け言語用の気がします。
ほんと馬鹿。逝ってよし。

489:デフォルトの名無しさん
08/07/19 01:09:23
481 ですが、嘘を付いてすいませんでした。
折角なので配列とポインタがどんなふうに違うかわかりやすく教えてください ...

490:デフォルトの名無しさん
08/07/19 01:18:07
URLリンク(www.cocoadev.com)
でも同じような議論になってる

491:デフォルトの名無しさん
08/07/19 01:48:48
>>364でも同じような議論になってる
嘘つきはお断り

492:デフォルトの名無しさん
08/07/19 01:52:06
>>489
C FAQ

493:デフォルトの名無しさん
08/07/19 03:46:16
>>489
ぐぐれカス

494:デフォルトの名無しさん
08/07/19 05:46:43
>>483
たしかにそうだ
なんとなく分かってるつもりでも
間違って覚えてるケースが結構ある
正しい理解が必要


495:デフォルトの名無しさん
08/07/19 06:28:26
嘘つき語録
>>474
Visitor Patternって、メソッドのオーバーロードができないと、実装できないんだっけ?

オーバーロードって、引数の型によって「静的に」同じ名前のメソッドを区別するためのものなんだから、プログラムの構造に影響しないように思えるけど。
単純に複数の名前のメソッドを使い分けるだけでは?
>>476
ようするに
void action(A obj)
void action(B obj)
と定義されていたものが、
void actionWithA(id obj)
void actionWithB(id obj)
となるだけだから、ソースコードの見た目の問題はあるけど、Visitor Patternが実装できない理由にはならないよね?
>>478
①C のポインタのあたり、②文字列操作の細かい話はあまり勉強しなくても大丈夫なので読み飛ばしてください。
>>481
③malloc / free は要らないし、④ポインタ演算 (足し算引き算) は要らないでしょ。
あと、⑤配列は知らなくてもいいし、⑥配列とポインタの等価性も要らないし、
⑦文字列が char* 配列だということも知らなくてなんとかなるのでは。
>>484
Obj-C は reflection があるから多重ディスパッチはむしろ実装しやすい気が ...
visitor pattern はvirtual member 止まりの静的型付け言語用の気がします。
とわからない言葉をならべてみる

496:デフォルトの名無しさん
08/07/19 07:42:09
他はしらんが、C における文字列操作の細かい話は勉強しなくてもいいのは本当では?strstr とか知っててもしかたないよね。NSString でいいんじゃね?

497:デフォルトの名無しさん
08/07/19 09:19:11
いろいろな言語の文字列操作関数の比較表

Ruby, Python, JavaScript, Perl, C++
URLリンク(0xcc.net)

Ruby, PHP, Objective-C
URLリンク(d.hatena.ne.jp)

意外とObjective-Cも健闘してる希ガス。
実際にOpen環境(イワユル野良SDK)でのプログラミングが公開されているので以下に紹介する。
テキストエディタの作成のところでもNSStringを使ってる。

第1回:iPod touchにアプリケーションがインストールできる不思議
URLリンク(www.thinkit.co.jp)

第2回:iPod touchの自作アプリケーションが作れる&動かせる!
URLリンク(www.thinkit.co.jp)

第3回:iPod touchで動作するテキストエディタはこう作る!
URLリンク(www.thinkit.co.jp)

第4回:夢のオフラインRSSリーダを作ろう!
URLリンク(www.thinkit.co.jp)

498:デフォルトの名無しさん
08/07/19 09:27:53
実際のHello Worldプログラムを紹介する。(その1)

// hello.m
#import <UIKit/UIKit.h>

#import "HelloApplication.h"

int main(int argc, char **argv)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
return UIApplicationMain(argc, argv, [HelloApplication class]);
}


499:デフォルトの名無しさん
08/07/19 09:28:40
>>497
>実際にOpen環境(イワユル野良SDK)でのプログラミングが公開されているので以下に紹介する。
>テキストエディタの作成のところでもNSStringを使ってる。
べつに NSString の使い方を示すのなら
「実際に」iPhone じゃなくて「実際に」Mac / GnuStep でいいのでは...

500:デフォルトの名無しさん
08/07/19 09:28:56
(その2)
// HelloApplication.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <UIKit/UIApplication.h>
#import <UIKit/UIPushButton.h>
#import <UIKit/UITableCell.h>
#import <UIKit/UIImageAndTextTableCell.h>

@interface HelloApplication : UIApplication
{
UIImageAndTextTableCell *pbCell;
UITableCell *buttonCell;
}

@end

501:デフォルトの名無しさん
08/07/19 09:31:14
(その3)
// HelloApplication.m
#import <CoreFoundation/CoreFoundation.h>
#import <Foundation/Foundation.h>
#import <UIKit/CDStructures.h>
#import <UIKit/UIPushButton.h>
#import <UIKit/UIThreePartButton.h>
#import <UIKit/UINavigationBar.h>
#import <UIKit/UIWindow.h>
#import <UIKit/UIView-Hierarchy.h>
#import <UIKit/UIHardware.h>
#import <UIKit/UITable.h>
#import <UIKit/UITableCell.h>
#import <UIKit/UITableColumn.h>
#import "HelloApplication.h"

@implementation HelloApplication

- (int) numberOfRowsInTable: (UITable *)table
{
return 2;
}

- (UITableCell *) table: (UITable *)table cellForRow: (int)row column: (int)col
{
return row ? buttonCell : pbCell;
}


502:デフォルトの名無しさん
08/07/19 09:33:15
(その4)
- (UITableCell *) table: (UITable *)table cellForRow: (int)row column: (int)col
reusing: (BOOL) reusing
{
return pbCell;
}

- (void) applicationDidFinishLaunching: (id) unused
{
UIWindow *window;
BOOL i = TRUE;
window = [[UIWindow alloc] initWithContentRect: [UIHardware
fullScreenApplicationContentRect]];

pbCell = [[UIImageAndTextTableCell alloc] init];
[pbCell setTitle: [NSString stringWithFormat:@"Hello World!"]];

UIPushButton *button = [[UIThreePartButton alloc] initWithTitle:
@"Touch Me"];
buttonCell = [[UITableCell alloc] init];
[buttonCell addSubview: button];
[button sizeToFit];

UITable *table = [[UITable alloc] initWithFrame: CGRectMake(0.0f, 48.0f, 320.0f, 480.0f - 16.0f - 32.0f)];
UITableColumn *col = [[UITableColumn alloc] initWithTitle: @"HelloApp" identifier: @"hello" width: 320.0f];


503:デフォルトの名無しさん
08/07/19 09:33:47
(その5)
[window orderFront: self];
[window makeKey: self];
[window _setHidden: NO];

[table addTableColumn: col];
[table setDataSource: self];
[table setDelegate: self];
[table reloadData];

UINavigationBar *nav = [[UINavigationBar alloc] initWithFrame: CGRectMake(
0.0f, 0.0f, 320.0f, 48.0f)];
[nav showButtonsWithLeftTitle: @"Foo" rightTitle: @"Bar" leftBack: YES];
[nav setBarStyle: 0];

struct CGRect rect = [UIHardware fullScreenApplicationContentRect];
rect.origin.x = rect.origin.y = 0.0f;
UIView *mainView;
mainView = [[UIView alloc] initWithFrame: rect];
[mainView addSubview: nav];
[mainView addSubview: table];

[window setContentView: mainView];
}

@end

504:デフォルトの名無しさん
08/07/19 10:10:59
勘違いさんいらっしゃーい >>499
はいさようなら。

505:デフォルトの名無しさん
08/07/19 12:04:42
POCはMacじゃ使えないんですか?

506:デフォルトの名無しさん
08/07/19 12:23:12
めずらしく伸びてると思ったらもう夏休みなんだな…
小中学生ばっかりか

507:デフォルトの名無しさん
08/07/19 12:25:50
Objective-Cは、文字列を`char *'型にするか、NSStringオブジェクトにするか選択できるハイブリッド型であるということが特徴です。
これがObjective-CのほうがSmalltalkより高速な理由です。

別な観点から言えば、 Objective-Cプログラムのすべての要素がオブジェクトで表現されていたとしたら、おそらくSmalltalkと同程度の速度であり、
Smalltalkが行なえる基本クラスへの最適化がないことで苦戦するでしょう。

つまり、文字列操作の細かい話は勉強しなくてもいいと言っている人はObjective-Cのメリットを全く理解していないんです。

508:デフォルトの名無しさん
08/07/19 12:27:01
>>506
ボクが小学生だからってバカにするオマエがバカ!

509:デフォルトの名無しさん
08/07/19 12:33:53
>>505
PoweMacのみ。IntelMacでは動かない。EtoileはIntelMacでも動くよ。

510:デフォルトの名無しさん
08/07/19 12:47:16
>>507
ええと、一応聞いておくけど、本気でそう思っているのか ?
おまえは全ての encoding に対応した文字列操作ルーチンを自分で書いて最適化できるのか ?

511:デフォルトの名無しさん
08/07/19 13:02:20
>おまえは全ての encoding に対応した文字列操作ルーチンを自分で書いて最適化できるのか ?
逆に質問しよう。なぜ、最適化という問題を持ち出したかと言えばオブジェクトのオーバーヘッドを理解しているからじゃないのか?
自分で最適化しないでも、問題を理解していれば、そういった処理を注意深く扱うようになる。それで速度的な問題を回避できるようになる。

512:デフォルトの名無しさん
08/07/19 13:12:05
近頃の人ってsprintfとか使わんの?

513:デフォルトの名無しさん
08/07/19 13:48:32
「文字列操作ルーチンを自分で書いて最適化できるのか ? 」って極端すぎるだろw
よっぽど悔しかったのかw

514:デフォルトの名無しさん
08/07/19 14:11:34
>>512
sprintfなんて使ってるやつはばかです

515:デフォルトの名無しさん
08/07/19 14:25:30
>>514
理路整然とした理由も述べないで否定するだけなら小学生でもできる。
まさか小学生じゃないよな?
sprintfとNSStringでの文字列操作の用例を挙げて比較したうえで
なぜsprintfを使うのがばかなのか述べてくれないかなぁ。
これは非常に興味深いテーマだ、>>514、君の意見が聞きたい。

516:デフォルトの名無しさん
08/07/19 14:37:03
sprintfのmanくらい読んでから質問してください

517:デフォルトの名無しさん
08/07/19 14:48:23
snprintfだろう常考

518:デフォルトの名無しさん
08/07/19 15:20:33
クズばっかだな

519:デフォルトの名無しさん
08/07/19 15:33:50
snprintf!! 
wwww
現場を知らない廚はコレだから困る。


520:デフォルトの名無しさん
08/07/19 15:37:21
>>514の言い分けマダー?(゜∀゜)

521:デフォルトの名無しさん
08/07/19 16:30:50
わけけ?

522:デフォルトの名無しさん
08/07/19 16:52:33
>507
一行目は同感だけど、最終行は同意できない。

いまさら自力で文字列”操作”をする人はいないでしょ。
使うとしたら簡易パーサぐらいだろうけど、
それでもその辺に落ちてる高級パーサとか正規表現ライブラリ使う方が手っ取り早い。

それともこの程度のことも”操作”に入る?

NSLogは改行されるし、妙な出力が追加されるんで、fprintfを使うことは多いよね。

>>516
+[NSString stringWithFormat:format, ...] がsprintf相当だね。

523:デフォルトの名無しさん
08/07/19 17:07:54
>一行目は同感だけど、最終行は同意できない。

結局、全く理解してないことを指摘されて図星だったのかw
まともな反論も出来ないチンカスw

524:デフォルトの名無しさん
08/07/19 17:39:14
>いまさら自力で文字列”操作”をする人はいないでしょ。
>使うとしたら簡易パーサぐらいだろうけど、
>それでもその辺に落ちてる高級パーサとか正規表現ライブラリ使う方が手っ取り早い。

で、NSStringを使う利点まだぁ?チンチン
その程度でC言語の文字列操作の細かい話は勉強しなくてもいい理由だって主張してるの?

525:デフォルトの名無しさん
08/07/19 17:56:20
佐藤藍子 「NSStringさえあればもうNSStringC言語の文字列操作の細かい話は勉強しなくてもいいと思ってました」

526:デフォルトの名無しさん
08/07/19 18:27:42
ごめん。
人違いだわ、それ。
おれ、>522が初発言ね。

>NSStringを使う利点まだぁ?
楽だから。

べつにお勉強の為に文字列を操作するのは止めないけど、
お勉強以外であえて泥沼を選ぶ意図が俺には分からないね。

527:デフォルトの名無しさん
08/07/19 18:40:21
>>526
>>514じゃないけど」ぐらいことわってから書くぐらいしろよ。
間違われても仕方ないだろ。
まぎらわしいぞw


528:デフォルトの名無しさん
08/07/19 19:02:20
ごめん。
ID無いの忘れてたんだよ。

529:デフォルトの名無しさん
08/07/20 01:14:12
外人さんがつくった Cocoa ソフトで日本語環境でつかうと
おかしくなるのがあって、ソースみて原因追及してみたら
内部でアルファベットだけと仮定して char* で操作してるところのせい
だったというのがあるので、char* のほうが速いかもしれませんが、
非日本人が使うかもしれないというのを考えて、
ShiftJIS / MacJapanese とかエンコーディングを仮定して
char* を操作するプログラムを書くのではなくて、
NSString (か他の国際化文字列ライブラリ)をつかって書くようにして
おいてくださると多分世界のどこかで誰かが助かります。

530:デフォルトの名無しさん
08/07/20 01:19:21
文字を右から左に書く言語も考慮して作れということか?

531:デフォルトの名無しさん
08/07/20 01:31:05
NSString (とかほかの国際化文字ライブラリ) をつかっておくと、
自分で考えなくても自動的にある程度は考慮されたことになるというのが利点。

Mail.app にイスラエル人の知り合いからメールがきて、
名前欄がちゃんとヘブライ語になってたので感心しました。
まあきっと外人さんには名前欄に漢字が出る時点でびっくりなんだろうけど。

海外製のフリーウェアシェアウェアでも Cocoa なら大抵は
日本語問題なくつかえるのは一貫して NSString つかってあるからで、
(というと言い過ぎだと思いますが、)
昔の Carbon のころはそうではなかったです。
メニューバーとかよく化けてたでしょ。

532:デフォルトの名無しさん
08/07/20 01:39:10
>>529
君のまだ知らない世界にはユニコードっていうものがあってな

533:デフォルトの名無しさん
08/07/20 02:09:08
>>532
個人が作るソフトにはUTF-8なcharとかwchar_tを使わずに
US-ASCIIかISO-8859-1前提でcharを使ってるのがままあるよ。
作者がUnicodeにする必要を感じてないから仕方ない。

Mac用のソフトだと素直にCocoaで作ればそんなことにはなりづらいけどね。

534:デフォルトの名無しさん
08/07/20 02:14:19
アホにわざわざ説明してやらんでも

535:デフォルトの名無しさん
08/07/20 02:16:53
>>522
>それでもその辺に落ちてる高級パーサとか正規表現ライブラリ使う方が手っ取り早い。

その辺に落ちてるのほとんどchar*になってるだろw
NSString使わない方が良いみたいに読めてしまうw

536:デフォルトの名無しさん
08/07/20 02:18:38
UTF-8NとUTF-8はちと違うし、UTF-16にもUTF-16Nがあるんだよな。

537:デフォルトの名無しさん
08/07/20 02:27:05
>>535
>それともこの程度のことも”操作”に入る?
も読んでね。
文字列を渡したり、もらったりも文字列操作に入れちゃうのか?

538:デフォルトの名無しさん
08/07/20 04:08:53
>>537
てかさぁ、ライブラリでパターンマッチングやバックトラッキング用のクラスを用意してその上に高級パーサとか正規表現ライブラリを構築してる例なんてあるの?
なかったらどのみちchar*を使うんだから勉強せざるを得ないんじゃないのか?

539:デフォルトの名無しさん
08/07/20 05:30:58
char *は使うよ。
でも、文字列は操作しないよ。

540:デフォルトの名無しさん
08/07/20 05:39:33
正規表現ならOgreKitがある

541:デフォルトの名無しさん
08/07/20 08:36:55
パーザをlex&yaccで作成するときにはまともなCの知識が必要だ。
上で言ってるObjective-Cの知識だけじゃどうにもならん場合はある。

542:デフォルトの名無しさん
08/07/20 09:02:36
そこまでする人間がまともなCの知識を持ってないというのも考えにくいような。

ちょっと凝ったことをするにはCで直に、あるいはObjCのラッパを書くことになるし
Objective-Cだけで開発するには限界があるのは同意。

543:デフォルトの名無しさん
08/07/20 10:04:26
ここで正規表現とか持ち出す奴っていったい何なの?
データベース使うJavaの人?BSDとかでスクリプト書いてる人?
文字列検索と文字列操作を美しく勘違いしてないかいw?

544:デフォルトの名無しさん
08/07/20 10:19:48
C言語の正規表現を使うにはregex.hをimportしてregcomp, regexec, regfree関数を利用する。

int regcomp(regex_t *preg, const char *regex, int cflags)
  正規表現のコンパイルを行なう。コンパイル成功時には0を返す。

int regexec(const regex_t *preg, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags);
  正規表現による検索を実行する。

void regfree(regex_t *preg)
  正規表現パターンバッファを解放する。

545:デフォルトの名無しさん
08/07/20 10:28:06
>>544
通りすがりだが横から質問させて。
で?そのregcomp,regxec,regfree関数ってどういう時に使うの?
sprintfとかscanfとか上の方で出てたNSStringの文字列操作と置き換えられるものなのかな?
教えてエロい人!

546:デフォルトの名無しさん
08/07/20 10:31:02
OgreKitとregex.h。OgreKit遅いやん。

547:デフォルトの名無しさん
08/07/20 10:35:06
>>546
ネーネーregex、OregKitとかいうのとsprintfは同じ機能のものなの?
文字列操作の話で来ているのになんで「正規表現」て出てきてegex、OregKitなの?
ワカラナイ、ワカラナイ...
「お前が馬鹿だから」と言うの無しでちゃんと説明して!、初心者なので。

548:デフォルトの名無しさん
08/07/20 10:36:33
>>545
適当にググッた。嫁。サンプルコードだけ読めば簡単に分かる。

regex.h

URLリンク(memo.majide.com)
URLリンク(sometime.minidns.net)

reglib.c ・・・ regcomp,regxec,regfree関数を使って、regsplit, regreplace, regrpall, regcnt関数を構築してる例

URLリンク(sometime.minidns.net)


549:デフォルトの名無しさん
08/07/20 10:41:36
要するにプログラマは文字列操作をテーマとした意思の疎通も困難な程、コミュニケーション能力がないという事か。
sprintfに対してreglib使え?おいおい(w。
挙げ句は自分の言葉で説明できないからググッたコピペと来たよ。
これじゃプロジェクトが座礁してデスマーチにもなる罠。


550:デフォルトの名無しさん
08/07/20 10:42:11
>サンプルコードだけ読めば
いや、走らしてみろ。即分かる。

551:デフォルトの名無しさん
08/07/20 10:43:09
>>549
はいはい、ワロスワロスw

552:デフォルトの名無しさん
08/07/20 10:47:24
prm1という変数があってユーザーが入力した値を入れ、メッセージに表示する為の文字列を作りたいと思います。
例:"prm1は不正な入力です。"

sprintfではなくreglibで処理を行なうにはどのようにしたら良いでしょうか。
具体的なコードをここに書いてくださると助かります。

553:デフォルトの名無しさん
08/07/20 10:57:59
>>552のこうげき
「かいしんのいちげき!」

>>551の無能さが露呈した。

554:デフォルトの名無しさん
08/07/20 11:06:05
hoge.strings
"hoge"="%sは不正な入力です。";

hoge.m
...
id hoge = NSLocalizedStringFromTable(@"hoge", @"hoge", @"hoge");
hoge = [NSString stringWithFormat:hoge, prm1];
fprintf(strerr, "%s¥n", [hoge UTF8String]);
...

てか、文字列操作の細かい部分をchar *でするかどうかの話でしょ?
なんで話変わってんの?

555:デフォルトの名無しさん
08/07/20 11:06:47
>>549
>これじゃプロジェクトが座礁してデスマーチにもなる罠。

いやいや多分>>548はプログラマですらないからwww
iPhoneブームで注目度があがるの結構だけど、知ったかぶる廚も多くなるから嫌だね。

556:522
08/07/20 11:07:29
>>554 は俺ね。
また勘違いされる所だ(w

557:デフォルトの名無しさん
08/07/20 11:08:37
上でlex&yaccの話が出てたと思うけど、文字列操作は字句解析と構文解析のふたつで出来てることが多い。
lexは字句解析のことで、文字列を1文字づつ読み込んでトークン、つまり単語に切り分ける仕事をする。
yaccは構文解析のことで、得られたトークンの意味を推測して構文木を作成する。
で、得られた構文木を元にして文字列の意味を翻訳する。

正規表現は、 テキストの文字列に対してパターンマッチを行う強力な道具です。
TEXTファイル中からある単語を置換/検索するのもパターンマッチです。
例えばyaccを使わないで簡易にキーワード(文法上重要なトークン)を探したいときのパターンマッチを正規表現でやるとか出来ます。
regex、OregKitは正規表現プログラムなのでそういったことが簡単に出来ます。


int sprintf(char *str, const char *format, ... );

sprintfは書式formatにしたがって、printf関数と同様の変換を行った出力を、文字列strに格納します。使えるようになると凄く便利。
char *str : 変換した出力を格納する文字列。
const char *format : 書式指定文字列。


※ 要するに、正規表現は文字列のパターンマッチをするのに対して、sprintf関数は文字列を変換します。だから役割はちがう。

558:デフォルトの名無しさん
08/07/20 11:12:15
煽らないと会話してもらえない可愛そうな香具師なのかな?

559:デフォルトの名無しさん
08/07/20 11:14:45
あ、あと出来上がった構文木はバックトラッキング(深さ優先探索)を使って各ノードをトラバース(順次訪れる)します。

560:デフォルトの名無しさん
08/07/20 11:15:58
夏休みに入った途端に変な子が来たね

561:547
08/07/20 11:17:06
>>557
ありがとうございます!
regex,OregKitはsprintfとは使い道が違うものなのですね。
困ったさんのおかげであやうく誤った知識を覚えてしまうところでした。

562:デフォルトの名無しさん
08/07/20 11:21:49
例えば、Ruby on RailsみたいなWebアプリでやってるようなことをObjective-Cとかで実現したいとしよう。
プログラムには、字句解析と構文解析をする部分を作成してHTMLやXMLの中から必要な情報を抜き取る必要がある。
そういうときに、パターンマッチで必要な情報を見つける。そして、sprintf関数とかを使って適切な形に仕上げて表示させるという風に使用する。

563:デフォルトの名無しさん
08/07/20 11:28:39
XML なら素直に既存の XML parser 使うだろ、普通。

564:デフォルトの名無しさん
08/07/20 11:31:52
>>563
じゃ、解説して!
もう疲れてきた。適切な例を考えるのめんどい。

565:デフォルトの名無しさん
08/07/20 11:35:32
すまんが>>514が悪あがきしているようにしか見えない。>>564

566:デフォルトの名無しさん
08/07/20 11:37:47
>>514じゃないからw
むしろ>>553だろ

おれはちゃんと>>557を書いて説明した。>>514と言われるのは心外だ。

567:デフォルトの名無しさん
08/07/20 11:47:41
>>566
すまん。疑心暗鬼になってて。

568:デフォルトの名無しさん
08/07/20 12:00:36
lex&yacc⇔flex&bison

569:デフォルトの名無しさん
08/07/20 12:27:02
Obj-C 以外の話題で盛りあがるのはやめようよ ...
夏休みだから仕方がないのかな。

570:デフォルトの名無しさん
08/07/20 13:18:46
>>569
>夏休みだから仕方がないのかな。
>>495にあるように、この流れは君の嘘が元凶だったんだから反省してくれ

571:デフォルトの名無しさん
08/07/20 14:40:24
個人的にはOregKit意外にもCocoaOniguruma軽くて良い感じ。

572:デフォルトの名無しさん
08/07/21 00:32:36
>>495 にあげられてるのが全部同じ人だってのはどうしてわかったの?
もしかしてスーパーハッカー?

573:デフォルトの名無しさん
08/07/23 12:24:43
単に嘘ついてるのを並べ得たんじゃね
語録としてまとめるのは変だが

574:デフォルトの名無しさん
08/07/23 23:08:37
char* としての文字列の操作をしらなくても簡単な Cocoa プログラムは書けるというのは嘘ではないのでは ...
Apple としては C で書くときでも char* じゃなくて CFString つかってくれということだよね。

575:デフォルトの名無しさん
08/07/24 05:24:39
>Apple としては C で書くときでも char* じゃなくて CFString つかってくれということだよね。

はぁ?ばかじゃねぇの?

576:デフォルトの名無しさん
08/07/24 08:44:13
>はぁ?ばかじゃねぇの?
煽り煽られたいだけじゃなくて、ほんとにそう思ってるなら、
BSD の API じゃなくて Apple 製の C API で、
char* を受け取るものがどういうのがあるか反省してみてください

577:デフォルトの名無しさん
08/07/24 09:28:05
stringWithCString?

578:デフォルトの名無しさん
08/07/24 09:47:18
>>577
それを使うと"default encoding"が変わったときに
文字化けして死亡するので、使わないでね。というか deprecated in 10.4.
stringWithCString:encoding:

stringWithUTF8String:
を使ってください。お願いだから。
これだけのせいで動かない海外製のフリーウェアに何度も出会っているので ...

579:デフォルトの名無しさん
08/07/24 09:54:16
典型的には、OS X の日本語環境では MacJapanese が "default encoding" で、
こいつは円記号とバックスラッシュを区別するので、
海外製の Cocoa でつくったシェルスクリプトのラッパで
不用意に -stringWIthCString: と -cString で行ったり来たりすると
シェルスクリプト内に ASCII code でのバックスラッシュ(0x5c)が
あるべきところにMacJapanese の バックスラッシュ (0x80) が入って
スクリプトが動かなくなったりします ...

580:デフォルトの名無しさん
08/07/24 19:55:33
>>574, >>576
オマエの妄想をAppleが言ってるように言うな、この詐欺師が

581:デフォルトの名無しさん
08/07/24 21:01:18
でたでた

582:デフォルトの名無しさん
08/07/24 21:24:17
>>574
char* としての文字列の操作すら知らなかったら、ほんとに簡単なプログラムしか書けない、というのは嘘ではないよ。

583:デフォルトの名無しさん
08/07/24 23:09:04
>char* としての文字列の操作すら知らなかったら、ほんとに簡単なプログラムしか書けない、というのは嘘ではないよ。
まあそれはそうですね。
NSString のメソッドって一杯あるけどなんか微妙に足りないことがしばしば。
Perl/Ruby/Python みたいに
正規表現が標準でつかえればそんな問題もなくなるんだけど。

584:デフォルトの名無しさん
08/07/24 23:29:01
ねぇねぇ、なんでいきなりchar*を受け取る「API」の話になるの?このスレ。。
それともわざとか?
釣られた俺?


585:デフォルトの名無しさん
08/07/24 23:30:01
>>583
>Perl/Ruby/Python みたいに
>正規表現が標準でつかえればそんな問題もなくなるんだけど。

この人、また来てるのね。正規表現廚。

586:デフォルトの名無しさん
08/07/24 23:46:52
>>584
char*を入力したり出力したりするAPIが存在しなければ、char*を使う必要がない。と言いたいんじゃないの?



587:デフォルトの名無しさん
08/07/25 06:28:52
「char*を受け取るAPI」と「正規表現」にこだわる思考回路が理解できない件www

588:デフォルトの名無しさん
08/07/25 09:00:50
反抗期なんだろ。

589:デフォルトの名無しさん
08/07/25 09:12:03
ていうか普通 NSString なんか使わないだろ

590:デフォルトの名無しさん
08/07/25 15:16:41
>>574
>>576
>>578
>>579
>>583

591:デフォルトの名無しさん
08/07/25 17:08:20
NSString
NSAutoString
NSCString
NSIString
NSMutableString
NSAttributedString
・・・

592:デフォルトの名無しさん
08/07/25 20:07:49
Netscapeですか

593:デフォルトの名無しさん
08/07/26 07:19:51
Netscape
NetSTEP
NeXTSTEP
NeXTscape
・・・

594:デフォルトの名無しさん
08/07/26 08:21:40
ソープのゴム無し

595:デフォルトの名無しさん
08/07/26 09:41:26
           バカ専用      普通  ハッカー ウィザード
             ┝ - - - - ┿━━┿━━┥
   ∩___∩   /)
   | ノ      ヽ  ( i )))
  /  ●   ● | / /
  |    ( _●_)  |ノ /   今はここら辺クマーー!!
 彡、   |∪|    ,/
/    ヽノ   /

596:デフォルトの名無しさん
08/07/26 20:44:47
ゴメンずれてる

597:デフォルトの名無しさん
08/07/27 12:45:31
           バカ専用      普通  ハッカー ウィザード
             ┝ - - - - ┿━━┿━━┥
                         ∩___∩   /)
                         | ノ      ヽ  ( i )))
                        /  ●   ● | / /
                        |    ( _●_)  |ノ /   今はここら辺クマーー!!
                       彡、   |∪|    ,/
                      /     ヽノ    /

598:デフォルトの名無しさん
08/07/27 17:39:05
ごめんずれてる

599:デフォルトの名無しさん
08/07/27 21:48:06
            普通      まったり  超まったり dat落ち寸前
             ┝ - - - - ┿━━┿━━━┥
                            ∩___∩   /)


600:デフォルトの名無しさん
08/07/29 19:06:09
"\psage"

601:sage
08/08/20 10:31:33
sage

602:デフォルトの名無しさん
08/08/21 05:21:02
すみません。教えてください。
a = [foo bar_A:[s get] B:[s get]];
というステートメントがありまして、いろいろ実験してみますと、
どうもB:[s get]がA:[s get]より先に実行されてるっぽいです。
どうしてなのか知りたいのですが。

603:デフォルトの名無しさん
08/08/21 06:02:59
引数の評価の順番って保証されてたっけ?
というか普通は保証されないから理由なんてないと思うよ

604:602
08/08/21 08:31:49
>>603
わかりました。ありがとう!

605:デフォルトの名無しさん
08/08/22 17:35:38
関数の引数をスタックに積んで渡す場合に逆順に積むと、
呼ばれた側で先頭から配列のようにアクセスできて楽だから。

606:デフォルトの名無しさん
08/08/22 23:33:22
>>605
それでいくと、IntelとPowerPCで動作が変わるのかな?

607:デフォルトの名無しさん
08/08/23 00:28:29
エンディアンは関係ないから・・・

608:デフォルトの名無しさん
08/08/23 03:40:36
PowerPCは引数をスタックに積まない。多くの場合は。
その前に、gccは実行効率優先でコードを生成するだろうから、引数のセットアップ順序もケースバイケースになりそうな気がする。
push命令使ってるわけでもないし



609:デフォルトの名無しさん
08/08/23 05:04:57
>>608
恥ずかし過ぎて、俺なら明日会社休んじゃう

610:デフォルトの名無しさん
08/08/23 05:30:37
>>609
土曜は休みだろ?

611:デフォルトの名無しさん
08/08/23 05:38:19
俺は仕事だけどな。

612:デフォルトの名無しさん
08/08/24 15:23:24
URLリンク(developer.apple.com)

613:デフォルトの名無しさん
08/08/28 02:10:01
この数レスに腹抱えて笑ってもた

614:デフォルトの名無しさん
08/08/28 02:28:21
あなたつかれてるのよ…

615:デフォルトの名無しさん
08/08/28 03:11:51
伝統的なアレだと、C式は後ろから積んで戻ってから呼び出し側がポップ。
Pascal式は前から積んで呼ばれた先でポップだった。

616:デフォルトの名無しさん
08/08/30 13:55:06
URLリンク(llvm.org)

よくわからん

617:デフォルトの名無しさん
08/09/08 15:59:01
「nul」を「にるぽ」と呼ぶスレ

618:デフォルトの名無しさん
08/09/08 19:07:19
>>617
nil じゃね?

619:デフォルトの名無しさん
08/09/08 19:19:35
うふふ。すごくにるにるしてるわヨ。

620:デフォルトの名無しさん
08/09/09 15:47:58
ににる にる にる ににるに~
ににる にる にる ににるに~



621:デフォルトの名無しさん
08/09/09 21:15:37
なあ、もうちょっとまじめにやらないか?

622:デフォルトの名無しさん
08/09/09 22:32:50
3時間後の発表でiPod全機種のOSがiPhoneに移行したらObjective-Cの仕事が激増するかな。
ローコストモデルでは通信できない可能性が高いからプログラマとしては魅力ないのかな?
もっともNDAがあるから職業プログラマは話せないと思うけど

623:デフォルトの名無しさん
08/09/09 22:52:44
iPhoneでファイルの読み書きってどうすんの?
NSDataオブジェクト作ってwriteToFileすりゃいいってのはなんとなくわかるんだけど…。

624:デフォルトの名無しさん
08/09/15 02:39:39
GNUStep の AppKit っていつから LGPL になったの?
以前は GPL だった気がするけど、勘違いかな...

625:デフォルトの名無しさん
08/09/15 20:58:09
まあ、LGPLのほうが使いやすいからいいじゃん

626:デフォルトの名無しさん
08/09/26 15:07:40
Unicodeで
\u3042\u3044\u3046
とエスケープされた文字を
あいう
と変換する方法をご教示ください。

627:デフォルトの名無しさん
08/09/27 22:21:26
初心者です。
cocoaはmvcによって
アプリを開発していくことはよく分かりました。

ただIBで作成したNSViewに直接modelで作成したクラスを割り当てると
この場合controllerを解しているわけではないですよね?

そういう解釈で良いんですか?

628:627
08/09/27 22:23:12
>modelで作成したクラス・・・

というよりxcodeで記述したクラスといったほうがいいのかな?


629:デフォルトの名無しさん
08/09/27 23:12:46
どんなクラスか知らんけど
通常、1クラスしか使わない場合、
ないのはモデルということになる。

630:デフォルトの名無しさん
08/10/02 00:50:56
Unicodeで
¥u3042¥u3044¥u3046
とエスケープされた文字を
あいう
と変換する方法をご教示ください。

631:デフォルトの名無しさん
08/10/02 00:53:18
どっかで見たな

632:デフォルトの名無しさん
08/10/02 04:47:43
>>631
ちょっと上でみたよね

633:デフォルトの名無しさん
08/10/02 05:09:33
ごめん。俺あんまりわかんないけど

NSLog(@"¥u3042");  // u の前は半角の¥(円マーク)

これだとそのまんまコンソール出力されたけど

NSLog(@"¥u3042"); // u の前は半角の\(バックスラッシュ)

だと、普通に”あ”って出力されたよ。


Unicodeエスケープとかでググれば何か出るんじゃない?
英語で検索した情報多いかもね。

634:デフォルトの名無しさん
08/10/04 22:14:05
ポリモーフィズムを実現するに
スーパークラスもサブクラスも
関係ない
id型ひとつあればよい

635:デフォルトの名無しさん
08/10/04 23:26:29
普段はゆるーくメッセージング、性能が気になるところはCの関数呼び出し。
Obj-CがあればC++要らんっていうのも分かる。

636:デフォルトの名無しさん
08/10/05 08:31:31
この前本屋いったら、UNIXナントカっていう雑誌の特集がObjCだった

637:デフォルトの名無しさん
08/10/05 09:06:13
>>636
UNIX magazine の10月号かな

638:デフォルトの名無しさん
08/10/05 10:20:26
わかんないけど、季刊誌だったような

639:デフォルトの名無しさん
08/10/05 10:31:37
UNIX magazine 2008年10月号
MacからiPhoneまでを網羅するアップルの開発言語Objective-C入——前編
URLリンク(www.ascii.co.jp)

640:デフォルトの名無しさん
08/10/05 19:11:30
Objective-Pascal
Object C

641:デフォルトの名無しさん
08/10/05 19:53:27
買おうと思ったら1500円したので帰ってきた

642:デフォルトの名無しさん
08/10/05 19:55:08
季刊だったのでやっぱ買いに行くことにした

643:デフォルトの名無しさん
08/10/05 20:59:23
お店閉まってた><

644:デフォルトの名無しさん
08/10/06 15:28:24
買ってきた。
冷静に考えると、2冊分の金で
専門誌買えばよかったかもしれない。

645:デフォルトの名無しさん
08/10/06 16:54:44
>>644
読む価値ある?

646:デフォルトの名無しさん
08/10/06 16:58:32
前編ってことは1月号でも特集やるのか?

647:デフォルトの名無しさん
08/10/06 18:16:03
萩原本でいいと思う。

648:デフォルトの名無しさん
08/10/06 19:32:01
>>644
言おうと思ったけど黙っていたのに気づいてしまったか

649:デフォルトの名無しさん
08/10/06 19:47:03
立ち読みしてきたんだが、「モダンシンタックス」って何?

650:デフォルトの名無しさん
08/10/06 20:40:16
そりゃおまえ現代文法だろ

651:デフォルトの名無しさん
08/10/09 23:25:39
NSViewってコントローラー無くても四角形とか描写できるよね。

あれはなんで?
コード見ても描写を担う関数が仮引数とか受け取ってるみたいだけど・・・・・・・。
一体この仮引数はなんなの?

652:デフォルトの名無しさん
08/10/09 23:52:57
>>651
何を引き受けているのかってことかな?

確かにNSViewって不思議。
他のオブジェクトだったらIBとXcodeはアウトレット、アクションとコントラーを介して
つながっているけど、NSViewってクラスでそのままリンクさせることができるもんね。



653:デフォルトの名無しさん
08/10/10 00:29:12
>>652
確かにcocoaで良くわからないところだった。
NSTextViewでもコントローラーをソースとして登録しておくって考え方も
.net出身者としては腑に落ちなかった。

654:デフォルトの名無しさん
08/10/10 09:03:01
そのあたりはいくらでも説明しますが、
何が疑問なのか曖昧すぎてわからないので、もうちょっと詳しく書いてくれませんか?
>>651 さんとかどの関数の話をしてるの?
>>652 はなにがいいたい?クラスでそのままリンクって?
>>653 はどういうこと?コントローラをソースとして?ソースって何?

655:651-652
08/10/10 14:21:46
>>654
ドモ、ありがとうございます。超初心者です。

このサイトにあるGraphic関数です
URLリンク(homepage.mac.com)

疑問1
このサイトで四角形を描写させるためのサンプル全ての関数において
NSFrame型のframeRectっていう仮引数をうけとっているよね。
でも関数の中身をみるとそんな仮引数を利用している形跡がない。
別に宣言する必要が無いのでは?というのが最初の疑問。

疑問2
サンプルコードをダウンロードしたプログラムにはコントローラー(青色の立体箱)がなかったんですよね。
僕はIBで作成したインターフェイス部分とX-codeで記述したコード部分を繋ぐためには
コントローラーでアクションとアウトレットで接続する必要があるって理解していたから
コントローラーがなくてなんでX-codeで記述した関数がインターフェイスに反映されるのか全く分かりませんでした。

そしたらこのサンプルではIBのNSViewのクラス名部分がX-codeで作成したクラスに
なっていたんです。
これはコントローラーが介在していないってことですよね。?



656:デフォルトの名無しさん
08/10/10 15:18:45
>>655
NSViewのサブクラスは -drawRect:(NSRect)frame;をオーバーライドして描画をやります。
で frameにはview自身の大きさが入ってきます。
ので、それに習っただけでしょう。

DLしてないけど、多分NSViewのサブクラスがwindowに貼り付けてませんでしたか?
最後の段からすると多分そうなってるんだと思うけど、
そうしておくと、nibロード時にサブクラスを作ってそこに貼り付けてくれます。
(実際には違いますがイメージはそんな感じです)
で、NSViewのサブクラスの
-drawRect:(NSRect)frame;
で描画処理が行われているはずです。

657:デフォルトの名無しさん
08/10/10 15:20:24
コントローラはデータを扱うクラスですので、データを使ってなければ不要です。

658:デフォルトの名無しさん
08/10/10 15:53:59
>654じゃないですが、こんな感じじゃないでしょうか。

答え1
- (void)drawRect: (NSRect)frameRect は nib (xib) が読み込まれて初期化する
時や絵を書き直す過程で呼ばれる。frameRect は描画する場所を限定する為のもの。
描画効率upの為に customView の一部に限定する事もできる。初期化の時は多分、
customView.bounds で view の全体を描画させているんだと思うな。

答え2
コントローラは介在していない。ていうか、MVC の View を直接いじっていて、
Model、Controller が無い状態。

と、書いているうちに >656 さんが書いてくれましたね。customView が直接 window に
貼付けられていました。

659:デフォルトの名無しさん
08/10/10 20:40:38
>>653
> .net出身者としては腑に落ちなかった。

そこがCocoa(MVCパターン)と.NET(n層パターン)のアーキテクチャの違いというやつだ。
MVCのViewは、主に描画だけを行いデータの保持や管理をしない。Model内でデータを更新すると、それに連動してるViewが勝手に再描画される感じ。
n層パターンだと、ビジネス層で処理したデータをプレゼン層に送りこんで、プレゼン層側でデータを保持したり処理したりする。

660:デフォルトの名無しさん
08/10/11 01:07:34
>>639
書いてるのはシロタンですぞw

retain count方式の説明に微妙に誤解を招きそうな表現があった気がした。

661:デフォルトの名無しさん
08/10/11 11:50:01
>>656-658

イメージとしては理解できました。
本当にありがとうございます。


662:デフォルトの名無しさん
08/10/19 23:32:59
10.5以降にはNSViewControllerがある

663:デフォルトの名無しさん
08/10/21 22:59:05
x-codeで開いたソースファイルの文字を大きくしたいんだけど、
やりかた知ってますか?

一応必死に探したんだけど見つかりませんでした。


664:デフォルトの名無しさん
08/10/22 00:07:56
環境設定 -> フォントとカラー

665:デフォルトの名無しさん
08/10/22 02:22:42
>>663

>>664の場所にあるよ。
フォントサイズのみの指定って感じのインターフェイスじゃないからわかりにくいっちゃあわかりにくい。
フォント名をダブルクリックしてフォントパネルの中で指定。

666:663
08/10/22 20:35:04
>>664-665
ありがとう!
フォントサイズをこんなにも決め細やかに設定できるなんてすばらしすぎる。
背景もモダンにして高級感たっぷり。

ありがとう!

667:デフォルトの名無しさん
08/10/27 21:51:10
>>659
なるほど。
だから
.NETではインターフェイスに入力したデータがコードにも受け継がれるけど、
cocoaの場合はインターフェイスに入力したデータはコードでは受け継がれずに
関数で取りに行く必要があるのか。
めんどくさいよね。これ。

668:デフォルトの名無しさん
08/10/27 22:53:40
>>667
つまり
textBoxの値をlabelに反映するだけのアプリケーションで説明すると

.netの場合
labe.text = textBox.text;
で終了。

cocoaの場合
labeField = [NSTextview setStringValue : textField];
さらにIBでlabelField,textFieldをアウトレットでコネクトする必要あり。

面毒せー!
でも高度なテクニックはcocoaのほうが分かりやすいんだよなー

669:デフォルトの名無しさん
08/10/27 22:56:19
なんでも関数にするからだめなんだよ。

.netはcocoaを見習いようがないけど、cocoaは.netを見習えるような気がする。


670:デフォルトの名無しさん
08/10/27 23:36:30
BaseTenがダウンロードできないんだけど・・・・・なんで?


671:デフォルトの名無しさん
08/10/27 23:53:43
頭わる…晒しage

672:デフォルトの名無しさん
08/10/28 00:02:21
かかって来い!

673:デフォルトの名無しさん
08/10/28 00:52:53
>>668
>cocoaの場合
>labeField = [NSTextview setStringValue : textField];
>さらにIBでlabelField,textFieldをアウトレットでコネクトする必要あり。
何年前の話をしてるんだ?
10.3 のときから、そんなのはコードを一行も書かなくても
Interface Builder でバインディングをすればできるわけだが ...
URLリンク(developer.apple.com)
とかみろ。もっと新しい英語版はこちら:
URLリンク(developer.apple.com)

674:デフォルトの名無しさん
08/10/28 01:02:43
>>673
ありがとー

実は入門書しか読んでねー。

675:デフォルトの名無しさん
08/10/29 23:21:44
もうちょっと活発に議論してほしい・・・・・・。

そこでバインディングについて簡単に説明して。
一体どんなすごいことが出来るの?

676:デフォルトの名無しさん
08/10/30 00:01:21
バインディングは議論するほどたいしたことじゃないし、
最近 Cocoa やってるひとなら常識だから。

View と Controller 間の glue
>.netの場合
>labe.text = textBox.text;
>cocoaの場合
>[labeField setStringValue : [textField stringValue]];
を書かなくてよくなるだけです。

インターフェースビルダーで、各 UI 要素が controller のどの変数を
監視/設定するかを設定出来るという機能です。(それだけじゃないけど。)
一番簡単な例は、controller に a という変数を用意して、
label も textfield も a を監視するように設定できます。
そうすると、textfield の内容が変更されると、自動で a が変更されて、
それに伴ってそれを監視している label も自動で変更されると。

別に凄いことじゃないです。

>>673
に引用されてる先を読んでください。

677:デフォルトの名無しさん
08/10/30 00:02:41
書きわすれましたが、
.net でも WPF だったか XAML だったかで同様のことができるんじゃなかったっけ。

678:デフォルトの名無しさん
08/10/30 01:52:23
週刊アスキーを読ませてもらった、大金持ちになりたいです。

679:デフォルトの名無しさん
08/10/30 02:11:38
>>675
outletを用意しなくても済むため、コード量を劇的に減らすことができるって、HMDTさんが言ってた。
URLリンク(developer.apple.com)

680:デフォルトの名無しさん
08/10/31 23:06:49
>.netの場合
>labe.text = textBox.text;
>cocoaの場合
>[labeField setStringValue : [textField stringValue]];

いちおう、cocoaでも
labeField.stringValue = textField.stringValue;
と書ける。objc2.0なら




681:デフォルトの名無しさん
08/10/31 23:37:41
明示的にプロパティじゃない setter をプロパティ構文つかうのは
Apple 的には推奨してるんだっけ?

URLリンク(developer.apple.com)

anObject.retain はするなとかいてあるが
.stringValue はいいのかな。

682:デフォルトの名無しさん
08/11/02 16:53:15
>>681
その文書を読む限り推奨も否定もしてないようですね。
ただ、書いてる内容を総合的に見れば、ドット構文を一般的なメソッド呼び出しの代替えとして使うな、ということのようだから、ちゃんとしたアクセッサメソッドならドット構文を使ってもいいんじゃないかな。
とりあえず、コンパイルエラーとかも出ないし。


683:デフォルトの名無しさん
08/11/03 01:31:54
ボタンを押したらピコーンて音声ファイルが再生されるようにしたいんですけど
なんて書けば良いんでしょうか・・。超低レベル質問なのは分かってるんですけども

684:デフォルトの名無しさん
08/11/03 02:34:21
>>683
AppleのドキュメントとかAPIリファレンスとかでそれっぽいとこ探せばいいのでは?
そこで分かったそれらしいクラス名なりメソッド名とかを使ってググるとか。
APIリファレンスとかにはそのメソッドとかを使ったAppleのサンプルへのリンクがあったりするからそれを見てみるとか。

ClashLandingってAppleのサンプルにそれっぽいのがあるらしい。



[オーディオ] - iPhoneアプリケーション開発
URLリンク(d.hatena.ne.jp)

試してみるとか?

俺も再生の仕方とかわからない・すまない。

他に詳しい方おしえてあげてください。

685:デフォルトの名無しさん
08/11/03 03:39:08
>>683
質問するスレはCocoa はさっぱり
スレリンク(mac板)
のほうが適当だとおもいますよ。
あと、質問するときはどのていどまで Cocoa を知ってるのか書いてください。
Interface Builder つかってボタンを表示する方法はしってるのかとか。
ではあちらのスレで会いましょう。

686:デフォルトの名無しさん
08/11/03 15:01:44
>>684
ありがとうございますとりあえず音は出せるようになりました!
半日かかりましたけどw
>>685
見落としてました。そのスレが自分向きですね
教えて君にならないよう頑張ってみます

687:デフォルトの名無しさん
08/11/03 17:01:52
URLリンク(blog-imgs-40.fc2.com)

688:デフォルトの名無しさん
08/11/07 02:19:43
NSTimerのscheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
関数を使って一定間隔ごとにある関数を呼び出すタイマークラスを作成したいのですが、
上手くいきません。

targetに問題があるのかなと考えているのですが、
メイン関数でタイマークラスを作成し上記の関数をよび出す場合、
targetはselfでいいのでしょうか?







689:デフォルトの名無しさん
08/11/07 09:11:25
僕らは超能力者じゃないんだからもうちょっと詳しく書いてもらわないとわかりません。
main 関数ってほんとに C の main() ?
それだと NSTimer うごかないよ。Runloop 回さないと。
あと、この質問は Objective-C プロパーというより
たぶん Cocoa の話なので、>>685 にもあるように
新マック板の Cocoa スレに行ってください。

690:デフォルトの名無しさん
08/11/07 09:25:56
>>688
おそらく NSTimer はちゃんと出来ているけど、NSRunLoop に渡してないだけな気が
しますが…… NSRunLoop の addTimer:forMode: を参照

691:名無しさん@お腹いっぱい。
08/11/17 04:06:06
Objective-Cで定数って普通どうやって定義するのかな?
Javaみたいに、関係あるクラスの中で定義して、AClass.CONST_A_VALみたいに使いたいんだが。

692:デフォルトの名無しさん
08/11/17 04:42:09
できません。
Global namespace に大量に定数を定義するのが Obj-C 流。
(あまりいいことではないとおもうけど、そういうものなんだからしかたがない。)
そのかわり定数の名前がかなり(めちゃくちゃ)長くして衝突をさけます。
NSUTF8StringEncoding
とか
NSApplicationDidUnhideNotification
とか。
Java なら NSApplication.DidUnhideNofitication とかするところを
点を一個抜く感じだと思います。

693:名無しさん@お腹いっぱい。
08/11/17 05:02:17
>>692
うう、そうですか。
それがObjective-C流ならしかたない(泣。
defineとconstではどっちの方がいいんでしょう?

694:デフォルトの名無しさん
08/11/17 05:38:41
う~ん、普通は .h では const extern にしておいて、
.m で実際の値を定義するんじゃないですかね?
少なくとも Cocoa の標準ヘッダではそうなってますし僕もそうします。

Obj-C というか C だと const の中身までヘッダにかくと
リンク時に衝突するとおもいます。ご存知なら失礼。

695:名無しさん@お腹いっぱい。
08/11/17 10:45:31
>>694

いや、とても参考になりました。
ありがとうございます。

696:デフォルトの名無しさん
08/11/17 17:46:29
Obj-CからIllustratorドキュメントを操作する場合って直接は無理ですよねぇ…
JavaScript書いてそれをObj-Cから実行って感じですか?

697:デフォルトの名無しさん
08/11/18 00:32:39
.ai のフォーマットを知ってたら直接操作出来るんじゃない?
Mac 上でやるんなら JavaScript だけじゃなくて AppleScript もつかえるでしょう。
Obj-C から AppleScript なら呼び出し放題だけど。
URLリンク(developer.apple.com)


698:696
08/11/18 16:10:37
JavaScriptでいけた
ありがとー

699:デフォルトの名無しさん
08/11/19 11:49:45
エトワレの 0.4 が出たよ。
URLリンク(etoileos.com)
なんだか独自の方向に突っ走ってる気がするが...

700:デフォルトの名無しさん
08/12/02 22:43:50
>>699
(´・ω・`)ショボーン
URLリンク(imepita.jp)
URLリンク(imepita.jp)


701:デフォルトの名無しさん
08/12/04 03:22:21
Obj-C で visitor pattern ってどうやるのがいいのかな?
上のほうで一度話題になりかけてるんだけど、
なんか急激に煽り煽られになっててよくわからん。

C++ なら
HogehogeVisitor* visitor にたいして
ループ{
element->accept(visitor)
} として、 element の accept メンバ関数で更に
visitor->visit(this)
となってるわけだけど。ネットの議論をいろいろ読む限り、
Obj-C では単に
HogehogeVisitor を追加したくなったところで、
各 element をカテゴリで拡張して
@class HogehogeVisitorInfo;
@interface/implementation FooElement (HogehogeVisitor)
-(void)doHogehoge:(HogehogeVisitorInfo*)hoge;
@end
@interface/implementation BarElement (HogehogeVisitor)
-(void)doHogehoge:(HogehogeVisitorInfo*)hoge;
@end
としてしまって
HogehogeVisitorInfo* visitorInfo=[[HogehogeVisitorInfo alloc] init];
ループ {
[element doHogehoge:visitorInfo];
}
でいい気がするんですが、もっといい方法ありますか?

702:デフォルトの名無しさん
08/12/19 19:10:07
objective-cってc++みたいにtemplateあるの?

703:デフォルトの名無しさん
08/12/19 19:21:55
汎用型の id はあるが基本型は入れらんない。

704:デフォルトの名無しさん
08/12/20 06:36:47

void CopyVector( double *v1, double *v2 ) {
v2[0] = v1[0];
v2[1] = v1[1];
v2[2] = v1[2];
}

は、以下だと駄目みたいですがどう書くのでしょう?

-(void)copyVector:(double *)v1 To:(double *)v2 {
v2[0] = v1[0];
v2[1] = v1[1];
v2[2] = v1[2];
}

705:デフォルトの名無しさん
08/12/20 06:55:08
-(void)copyVector:(double *)v1 To:(double *)v2
このインスタンスメソッド自体にエラーが生じるの?

よければそのエラーの内容も書いてほしいんだけど・・・・・・・

それともただ単に仮引数V2に渡した引数にコピーされていないだけなの?



706:デフォルトの名無しさん
08/12/20 07:23:41
インスタンスメソッドだと実体化したオブジェクトに引き渡されるだけで
本の配列には全く関係ないと思うんだよね。

v2のアクセッサメソッドを定義する方法もあるだろうけれど、
クラスメソッドにしてみてもだめ?


707:デフォルトの名無しさん
08/12/20 07:24:44
double a[2][3];
a[1][0]=a[1][1]=a[1][2]=1.0;
copyVector:a[1] To:a[0];

とすると、copyVector のところに、error: syntax error before 'To' と出てしまいます。

708:デフォルトの名無しさん
08/12/20 07:27:31
それはいったい何をやっているの?

インスタンスメソッドだよね?
ちゃんとオブジェクトに送ってるの?

709:デフォルトの名無しさん
08/12/20 07:30:28
+(void)copyVector:(double *)v1 To:(double *)v2 {
v2[0] = v1[0];
v2[1] = v1[1];
v2[2] = v1[2];
}
ということでしょうか? 結果は同じ様です。

710:デフォルトの名無しさん
08/12/20 07:34:28

[self copyVector:a[1] To a[0]];

でどう?

711:デフォルトの名無しさん
08/12/20 07:35:17
>>709
てかクラスでもインスタンスメソッドでも
オブジェクトにメッセージをおくらないと・・・・・


712:デフォルトの名無しさん
08/12/20 07:40:35
copyVector:a[1] To:a[0];


・・・・・・・・・・そりゃToの前にエラーが出るわな。


713:デフォルトの名無しさん
08/12/20 07:43:14
>>710 で解決した様です。この場合のself って何に当たるのでしょう?

714:デフォルトの名無しさん
08/12/20 07:46:15
済みません解説をお願いしますう。>>712

715:デフォルトの名無しさん
08/12/20 07:47:15
>>714
すみません。
突っ込んどいて解説なしはダメですよね。



716:デフォルトの名無しさん
08/12/20 08:18:48
copyVector: (ラベルやね、ラベル!) a[1] (配列の要素になんか入れようってか!) (...さあ.代入コイ!代入!...) (ふじこ)To:a[0];

717:デフォルトの名無しさん
08/12/20 08:46:20
>>716 何といいますか、おっしゃる事がよく分からないのですが。。。

718:デフォルトの名無しさん
08/12/20 10:18:41
解説をお願いする前に C と Obj-C の文法をおさらいしたほうがいいと思うんだな

719:デフォルトの名無しさん
08/12/20 15:41:56
self 知らずに Obj-C のプログラムが書けるわけが無いと思うんだが。

720:デフォルトの名無しさん
08/12/20 15:46:57
最優秀Javaプログラマがよく作る
グローバルスタティックメソッドライブラリークラス
じゃないの?

721:デフォルトの名無しさん
08/12/20 18:46:28
スーパーサイヤ人にはなれるけど、

空を飛べないサイヤ人みたいだ。

722:デフォルトの名無しさん
08/12/21 01:42:16
今おさらい中です。

723:デフォルトの名無しさん
08/12/21 02:38:06
>>711が全て。

selfは自分自身だよ。

724:デフォルトの名無しさん
08/12/21 02:56:14
なんかやっと分かりつつあります。自分て言うのは、そのメソッドを持っているインスタンスということですね。

725:デフォルトの名無しさん
08/12/21 11:24:40
人に聞く前に
せめて教科書くらいは読んだ方がいいと思うんだよね

726:デフォルトの名無しさん
08/12/22 12:15:25
Obj-CよりC++勉強した方がいいよって、叔父さんに言われた(´・ω・`)

727:デフォルトの名無しさん
08/12/22 15:44:28
叔父さんってどうせIT土方のクソドザだろ??
そんなには13インチのMacBookプレゼントしてやれ。

728:デフォルトの名無しさん
08/12/22 22:58:46
両方勉強したって大した事でもない。

729:デフォルトの名無しさん
08/12/23 18:45:13
おすすめのObj-C入門書教えてけろ
「やさしいC」みたいなのがいいっす

730:デフォルトの名無しさん
08/12/23 18:51:31
NSString に入っているファイル名なテキストから拡張子を取り除きたいのですが、
対応するメソッドはありますか?
拡張子を取るなら NSString#pathExtension で出来ますが、それ以外の部分が欲しいのです。


731:デフォルトの名無しさん
08/12/23 19:14:02
>>729,730
この手の話・質問はここよりも、新Mac板 Cocoaはさっぱり!!! の方がレスポンス良いよ。
スレリンク(mac板)

>>729
「やさしいC」は読んでないけど、入門書は
木下誠「たのしいCocoa」、アーロン・ヒレガス「MacOSX Cocoa プログラミング」

>>730
-(NSString *)stringByDeletingPathExtension

732:デフォルトの名無しさん
08/12/23 19:22:05
>>731
ありがとうございます
「たのしいCocoa」にします

733:デフォルトの名無しさん
08/12/28 13:29:54
「やさしいC」は言語の理解に重点を置いた本だから

荻原 剛志「詳解 Objective-C 2.0」
Stephen G. Kochan "Programming in Objective-C"

この2冊が該当する。Kochanの本を和訳して欲しいと思っている。

734:730
08/12/30 12:26:15
>>731
サンクス


735:デフォルトの名無しさん
08/12/30 12:30:53
ObjectiveCってわざわざC言語の拡張にしたから構文がキッタナイキッタナイ
この言語の構文は学部生の卒論レベルだぞ
まったく整理されてない
企業でやるならもう少し良く考えて作ってほしい

736:デフォルトの名無しさん
08/12/30 12:37:51
そんなに汚い汚い言うほど派手に拡張されてないし、
言語というよりは動的な環境を提供するライブラリ+呼び出し用マクロって感じだよ。
昔からあるじゃんESQL/Cとか。ああいう系統。

737:デフォルトの名無しさん
08/12/30 12:48:11
ごめん、C++のほうがキッタナカかったわ
まぁ、C言語を拡張した言語ってのはろくなもんじゃないってことで

738:デフォルトの名無しさん
08/12/30 12:53:08
Obj-C の方が汚いだろ・・・。

739:デフォルトの名無しさん
08/12/30 12:56:28
Obj-C は拡張じゃなくてハイブリッドじゃないの?
まあ、僕も中括弧族の言語は好きくないけど
>>735 綺麗だと思う言語教えて

740:デフォルトの名無しさん
08/12/30 13:18:30
735じゃないけど、綺麗だなって思うのはPythonくらい。
そもそもSmalltalkの構文が(思想は別にして)美しく感じられない。

741:デフォルトの名無しさん
08/12/30 13:27:41
構文が美しいっていうのは、大抵その美しいと言われるところで好みが分かれがちだよね。

742:デフォルトの名無しさん
08/12/30 13:43:08
まあ、世界の最高級の頭脳が集うアップルの上を行く 735 が
画期的な新言語を発表して、あっという間に世界中に広まるよ

743:デフォルトの名無しさん
08/12/30 13:44:58
>>739
何が1番きれいかといえば scheme シンプルだしな。
2番目は haskell モナドで一貫性あるプログラミングができる。
3番目は smalltalk でもプログラミング環境や動作環境は最悪最低。遊び専用言語。

744:デフォルトの名無しさん
08/12/30 13:45:44
>>742
別にそんな最高の頭脳が集まってるわけじゃないと思うぞw
俺だって一応オックスフォード出身だし。

745:デフォルトの名無しさん
08/12/30 14:24:14
Obj-C はあのモサイところがいいんじゃないか。
美しさばかり追い求めていてはいかんよ。まだまだ若いな。

746:デフォルトの名無しさん
08/12/31 02:17:46
>>742
残念ながら、言語が広まるかどうかはマーケティングに大きく依存するんだよ。

747:デフォルトの名無しさん
08/12/31 05:30:07
アップルはマーケティングだけはうまいはずなのにw

単に中途半端だから普及しないんでしょ。
言語の洗練度ではJavaやらに劣り、速度ではC++に劣り、ここ数年のトレンドのWEB系ではPHPやperlに劣る。

748:デフォルトの名無しさん
08/12/31 06:02:26
iPhoneは今はまだObjective-Cだけでしょ。

どうせ英語のリファレンスが読めなくて、使いたくても使えないからヒガンでるだけでしょ。


749:デフォルトの名無しさん
08/12/31 06:31:10
>>748
日本語の解説もでてるっつーの。アップルのサイトとか見ろ。
つーか、そもそも他の言語は英語だけでも普及したけどな。

750:デフォルトの名無しさん
08/12/31 10:18:05
Javaが洗練されているとかいってるやつは頭がおかしいだろ

751:デフォルトの名無しさん
08/12/31 10:36:58
まさにマーケティングの効果w

752:デフォルトの名無しさん
08/12/31 11:33:32
>>747
だったら何でハードもOSもシェアがあんなに少ないんだ?

753:デフォルトの名無しさん
08/12/31 11:35:00
>>748
Objective-Cが使えるか使えないかなんて低レベルな話はしてないんだよw
あんなものチュートリアル読んだら30分で使えるだろ

754:デフォルトの名無しさん
08/12/31 12:12:59
まあ、もっと低レベルな話ならしてるよな。


755:デフォルトの名無しさん
08/12/31 12:40:42
ihoneアプリを開発してるんですが、ObjectiveCで質問があります。

ObjectiveCのクラス内で、C++クラスを宣言したいんですが、include文でエラーが出ます。
どうやらC++クラスファイル内のclass宣言などで構文エラーが出ているようなんですが、
ObjectiveC内でC++クラスを宣言する際にコンパイルオプション等の設定は必要なんでしょうか?

どなたかご教授していただけるとありがたいです。

756:デフォルトの名無しさん
08/12/31 12:44:34
>>747
Objective-CはC言語に変換されるんだからC++より早いか同等のはずだぞw


757:デフォルトの名無しさん
08/12/31 12:51:37
それはないw

758:デフォルトの名無しさん
08/12/31 14:19:13
>>755
拡張子をmからmmにする
外してたらスマン

759:デフォルトの名無しさん
09/01/01 10:41:46
メッセージパッシングしなければCと同等だろうな。
そんなのはObj-Cじゃないけど。

760:デフォルトの名無しさん
09/01/01 11:59:59
オブジェクト指向では本当のメッセージパッシングは行えないよ。
Erlangのように部品が本当にプロセス(OSのプロセスとは別物)で動いているような言語がオブジェクト指向の進化系だと思うね。

761:デフォルトの名無しさん
09/01/01 12:36:32
誰もそんな話はしてない。

762:デフォルトの名無しさん
09/01/01 12:55:42
つまりだね、Objective-Cはもはや古臭い言語の一つというわけなんだよ

763:デフォルトの名無しさん
09/01/01 13:09:03
そらあ、30年以上前の言語を二つ合体させたんだから、古いよな

764:デフォルトの名無しさん
09/01/01 15:16:09
でもプログラミング言語って意外と新しいから良いっていう感じでもないよね。

765:デフォルトの名無しさん
09/01/01 22:03:33
>>764
それはマーケティングの効果
あるいはすでに普及している言語から移行のしやすさの効果

766:デフォルトの名無しさん
09/01/01 22:04:04
良い悪いが普及しているかしていないかではないんだよ

767:デフォルトの名無しさん
09/01/01 22:20:39
移行するメリットだな。

768:デフォルトの名無しさん
09/01/01 23:29:03
人が物を買うインセンティブは「より良いもの」よりも「不便」から生まれるらしい。
たしかにC++でどんなプログラムだって書けるから、多少便利になる程度では移行するインセンティブは生まれない。
だからほかの言語に移行するのがめんどくさい。

RubyOnRailsみたいに、使わないと不便になる、という状況が生まれない限り言語の以降はないだろうね。

769:デフォルトの名無しさん
09/01/02 20:07:06
apple的にMac/iPhone専用言語なんやし、他に広げる意味なんてないと思うが。


770:デフォルトの名無しさん
09/01/02 20:17:30
>>769
広まることはappleとObjCプログラマの双方に有益だと思うね。
ObjCが広まればObjCプログラマはObjC製だらけのMacOSXを使いたくなるかもしれないし、
ObjCプログラマはMacOSXで培った技術をほかのOSでも活用しやすくなる。

771:デフォルトの名無しさん
09/01/02 22:23:25
広まるって自動詞的に書いてるけど、広げる努力しなきゃどんなに良いモンだって広まらんでしょ。
Appleにはそんな事期待できんし、CocoaフレームワークのないObjective-Cなんぞ誰が使うのよ?

772:デフォルトの名無しさん
09/01/02 22:49:02
そこで Cocotron ですよ
URLリンク(www.cocotron.org)

773:デフォルトの名無しさん
09/01/03 04:34:06
オブジェクト指向な言語とフレームワークを勉強したいのですがOBJECTIVE-CとCOCOAって
適していますか?
それともJAVAとかMFCの方がいい?

774:デフォルトの名無しさん
09/01/03 04:38:33
MFC は設計マズいので適さない。
今更 Java するよりは .NET の方が良い。
Objective-C & Cocoa と .NET のどっちがいいかは OS 次第だろう。

775:755
09/01/03 19:12:38
>>758

ありがとうございます。mmに変更しいろいろやってみましたが、駄目です。
怪しいところはないと思うんだけど、なんでだろう。。。
どうもコンパイラがC++ではなく、Cのみでコンパイルしているっぽいのですが。


エラー文です。
-----
error: syntax error before 'ClassName'
error: syntax error before '{' token
error: syntax error before '=' token
error: syntax error before '=' token

もうC++のクラスを使用するのは、あきらめた方がいいんでしょうか。

776:デフォルトの名無しさん
09/01/03 19:56:56
>>775
;を忘れてるとかそういうのじゃないの? アップルの構文解析は糞だから、エラーはあてにならない。

777:デフォルトの名無しさん
09/01/03 20:40:04
>>775
僕らだってエスパーじゃないんだから、ソースコードをアプロダに貼るとか、最低限の行数まで削ってここに貼るなりしてください。

うちでは以下
#import <Foundation/Foundation.h>

@interface Aho:NSObject
{
int aMember;
}
-(id)aMethod:(int)baka;
@end

class Baka
{
public:
int i;
};
を aho.mm に保存して
gcc -c aho.mm 
でコンパイルできるよ?

778:デフォルトの名無しさん
09/01/05 21:36:17
評論家がたくさんいるようだが、そんなにobj-cを修得している椰子がいるとは思えない。
しったかはみっともないぞ。

779:デフォルトの名無しさん
09/01/05 21:51:35
多言語厨なら言語習得ぐらい1時間かそこらでできるだろ

780:デフォルトの名無しさん
09/01/07 23:05:01
メモリに関するいいサイトってありますか?

C 自体の初心者なんですが、dealloc とかしなきゃいけないと思って
いたら、そういう事をしていないサンプルばかりで困っています。

一般的な流れとして、どういう感じに alloc して dealloc するのか
知りたいのですが…。

781:デフォルトの名無しさん
09/01/07 23:13:59
dealloc は自分で呼ばず release を呼ぶ。
あるいは autorelease するか。

782:デフォルトの名無しさん
09/01/07 23:14:37
URLリンク(developer.apple.com)

自己レスですが、ここは一応読みました。
でももっとフローが分かりやすい実際のサンプルが見たいんです…。

783:デフォルトの名無しさん
09/01/07 23:24:22
これ買っとけ
URLリンク(www.amazon.co.jp)

784:デフォルトの名無しさん
09/01/08 00:14:17
>>780
>dealloc とかしなきゃいけないと思って
>いたら、そういう事をしていないサンプルばかり

どこにそんなのあるの?

785:デフォルトの名無しさん
09/01/08 01:08:29
>>784
例えばこのサンプルの中では dealloc という文字は出てこないです。
まぁ必要がないだけかもしれませんが…。

でも IBOutlet 系のクラス変数は dealloc しなくていいのでしょうか?
少なくともヘッダを見ると4つのクラス変数がある様ですが…。

URLリンク(developer.apple.com)

786:デフォルトの名無しさん
09/01/08 01:39:51
すいませんこりゃまた自己レスですが、IBOutlet 系のものを dealloc したら
元のオブジェクトが破棄されちゃうからしない、って事でしょうか?

787:デフォルトの名無しさん
09/01/08 01:47:13
「一応読みました」じゃなくってちゃんと読め。
「dealloc は直接呼び出してはなりません」って書いてあるだろうが。

788:デフォルトの名無しさん
09/01/08 01:54:33
>>787
何でダメなんでしょうか?

では、dealloc はオーバーライドするためだけにあると考えていいでしょうか?

789:デフォルトの名無しさん
09/01/08 07:12:40
>>788
なぜだと思う?
調べればすぐ分かることは自分で調べろ。

790:デフォルトの名無しさん
09/01/08 08:20:18
アホすぎて朝からビビった

791:デフォルトの名無しさん
09/01/08 10:04:57
すんません。Objective-C どころか C 自体が初めてなのでおかしな事も
言っているかもしれません。

直接 dealloc しないのはどこかで retain している可能性があるからって
事でしょうかね。

なんとなく分かって来た気がします。にしても release しているサンプルが
あんまりないのが気になりますが…。

dealloc 時に自動的にインスタンス変数も解放してくれないのは仕様ミス
の様な気がするんですけどねぇ…。オブジェクトは解放したのにその
インスタンス変数だけ確保しておきたい事なんてあるんでしょうか。

792:デフォルトの名無しさん
09/01/08 10:11:45
>>791
こっちへ移動してください。
スレリンク(mac板)


793:デフォルトの名無しさん
09/01/08 13:09:06
つか詳解Objective-C2.0買うなり何なり、
Obj-C関連の ドキュメント を読め。
それともあれか、ソースがドキュメントとかの
ドキュメントレスの世界で生きてきたのか?

ついでにオーナーシップの仕組みも理解してない内から、
仕様云々ってのは単なる理解の放棄でしかない。

794:デフォルトの名無しさん
09/01/08 21:28:26
参照カウンタでググれとしか言いようが無い。

795:デフォルトの名無しさん
09/01/08 21:33:39
誘導した人間じゃないんだが、新Mac板Cocoaはさっぱり!!でお預かりしましたので、
引き続きご歓談ください。

796:デフォルトの名無しさん
09/01/09 00:28:43
>>773
smalltalkが一番向いていると思う。

797:755
09/01/09 00:30:43
>>774
>>775

亀レスで申し訳ないですが、事故解決しました。

どうやらheaderファイルを使用してそちらにC++クラス宣言を書いていたのが原因のようです。
C++クラスだけ.mmファイル内で宣言するようにしたらコンパイルできました。
ありがとうございました。


798:デフォルトの名無しさん
09/01/13 18:05:29
↑↑馬鹿だろ

799:デフォルトの名無しさん
09/01/17 20:50:45
799

800:デフォルトの名無しさん
09/01/17 20:51:19
800

801:デフォルトの名無しさん
09/01/17 21:47:52
矢追

802:デフォルトの名無しさん
09/01/23 17:22:07
”NSKVONotifying_....”というクラスについて質問です。
MyObject というクラスを作って + initialize を埋めました。そしたら、子クラスが無いに
も関わらず、initialize が2回呼ばれました。変だなと思い、中で NSLog(@"%@", self) を
やると、”MyObject" と"NSKVONotifiying_MyObject" が出てきたんです。MyObject は
KVO を使っているので、勝手に作られた子クラスと思われますが、これって何ですかね?

803:デフォルトの名無しさん
09/01/23 23:34:23
>>802
KVO は実装するために、Cocoa の runtime が Objective-C の runtime を駆使して別個のクラスを動的につくって入れ替えて... とやってます。
"isa swizzling" とか呼ばれます。ググって勉強してみてください。

804:デフォルトの名無しさん
09/01/24 08:29:17
ちょうど解説があったよ。
URLリンク(www.mikeash.com)

805:デフォルトの名無しさん
09/01/24 17:14:50
ありがとう。勉強してみます。

806:デフォルトの名無しさん
09/01/25 22:33:33
iPhoneの低層のAPIを使って動画プレーヤー作りたい.
vlc-4-iphoneとかで使われてるcore_surfaceクラスとか使いたいがヘッダとか見当たらんのだけど,DSOとかで使えるようになったりするもん?

807:デフォルトの名無しさん
09/01/26 20:45:58
最近、Cocoaプログラミング始めた初心者です。
特定のTextFieldにフォーカスが移った時に、
半角英数入力に強制的に替えるにはどうすればいいですか?

808:デフォルトの名無しさん
09/01/26 21:54:49
>>807
スレリンク(mac板)
こっちで再度質問して。

809:jP
09/02/01 20:02:11
最近Mac向け開発を始めたんだけど、手順がよくわからん。
javaとかCと違って、インタフェースとコードが分かれてるから感覚がつかめないんだよね。
だれか、C/javaからobjective-C始めた人っている?
その辺を話したいんだけどなぁ。(ここに書くようなことじゃなかっから、ごめんちゃい)

810:デフォルトの名無しさん
09/02/01 20:13:07
むしろ大半がそうじゃね

811:デフォルトの名無しさん
09/02/01 20:20:37
ごめん俺AppleScript → ObjCだわ

812:デフォルトの名無しさん
09/02/01 20:24:24
俺なんかなでしこ→AppleScript→Objective-C(移行中)だぞw

813:デフォルトの名無しさん
09/02/01 20:37:45
Java→Objective-Cだけど呼んだ?
つかJava分かるならObjective-Cなんかすぐ分かると思うんだがなぁ。
勉強しなきゃいけない分量で言ったらJavaの1/3くらいじゃなかろうか。

814:デフォルトの名無しさん
09/02/01 21:40:44
気味の悪い文法が障害

815:デフォルトの名無しさん
09/02/01 22:41:34
文法はどうでもいいんだけど、
MSのダブルクリック&コードとn層データ構造に慣れてたから
CocoaのMVCには結構馴染みにくかったな。
あ、あとVSのIntelisenceに慣れてたからXcodeも面倒くさかった。
まぁ慣れだな。

816:デフォルトの名無しさん
09/02/01 22:46:42
>>809
既にプログラミングやったことあるなら、ADCのObjective-Cプログラミング言語とかCocoa基礎ガイドとか読めばいいと思うよ。

817:デフォルトの名無しさん
09/02/01 23:53:31
gccの-fobjc-direct-dispatchってもしかして
メソッドの実装を直接呼び出してくれるの?

818:デフォルトの名無しさん
09/02/02 03:10:32
objective-cを使ってアプリを作れるようになるには、何をすれば良いですか?
cocoaプログラミングの本は読みました。
例えば、Cの関数を覚えるとか、何かあったら教えてください。

819:デフォルトの名無しさん
09/02/02 03:25:06
>>818
釣れますか?

820:デフォルトの名無しさん
09/02/02 07:44:55
>>815
ダブルクリック&コードにかんしては
URLリンク(dotnetaddict.dotnetdevelopersjournal.com)
のひとが面白い分析をしてるなとおもった。
まあこのひとは .Net から Obj-C に半分ぐらい転向したひとなので、
無理に弁護してる感もなきにしもあらずなのだが...

821:デフォルトの名無しさん
09/02/02 07:50:37
>>817
>gccの-fobjc-direct-dispatchってもしかして
>メソッドの実装を直接呼び出してくれるの?
そんなことしたら Obj-C の良さが台無しだろう。
それは objc_msgSend を呼び出すのが速くなる最適化です。
メソッドの実装が欲しければ Obj-C のランタイムつかってとってこれます。

五年前の msgSend の実装 を解析したのが
URLリンク(www.mulle-kybernetik.com)
にあります。最近はもっと最適化進んでるんでしょうが。

822:デフォルトの名無しさん
09/02/02 23:45:10
>>809
Cocoaアプリ開発って極端な話XCodeで新規プロジェクトを選んだ時点で
完成してるんだよね。だからコード書かなくても動く。
サブクラスで必要な部分だけどんどん拡張していける。
CarbonやWin32って1から全部書かないといけないんだよね。

Cocoaアプリ開発=Cocoaフレームワークの拡張かな。

823:デフォルトの名無しさん
09/02/03 00:14:27
というか、C / Java だって、大昔アセンブラつかってたひとからすれば、
レジスタをいじらなくても動くなんてよく判らん、とか、
自分で vram を叩かなくても文字が表示される、どうなってるんだ、
とかだったはずで、単に慣れの問題だとおもう。
徐々にシステム側が沢山の部分をやってくれるわけでさ。

824:デフォルトの名無しさん
09/02/03 00:27:52
>>821
レスどうも。リンク先面白かったです。

ObjCのメソッド呼び出しが遅いとかなんとか
読んだ記憶がありましたので、もしかしたらと。

にしても、ObjC動的すぎて素敵。
いや、むしろ変態。

825:デフォルトの名無しさん
09/02/03 01:26:04
Cはアセンブラとあまり変わらない感覚だったよ。
特に68系の場合はアセンブラもわりと高級言語っぽかったから、
コンパイルしたらどういうコードになるか容易に想像ついた。

826:デフォルトの名無しさん
09/02/03 06:20:08
>>814
> 気味の悪い文法が障害
smalltalk一回経験してるとそうでもないんだけどね
c++に慣れてると目が点になるかもしれん

827:デフォルトの名無しさん
09/02/03 08:14:20
822みたいな奴を見ると、Mac使ってることが嫌になる

828:デフォルトの名無しさん
09/02/04 08:06:40
マク関係はどうもスルー力が試される機会が多いんだよな

829:デフォルトの名無しさん
09/02/06 03:31:49
>>814
気味の悪い文法が障害

CやJavaやPHPやってるんだが、始めて2日でむしろ気持ち良くなってきたんだが。

830:デフォルトの名無しさん
09/02/06 08:33:34
自然にコメントを大量につけてることになるのがいいよね。
自分でつくるクラスのメソッド名もならって読んで意味のわかる英語になるようにしてる。
これだけで数ヶ月後にコードを見直したときの理解度が全然違うベ。

831:デフォルトの名無しさん
09/02/06 12:30:15
>>829
俺も大分気持ち良くなって来ました。

832:デフォルトの名無しさん
09/02/09 16:13:30
[Meta2ch agreeTo:829 with:"passion" ]

833:デフォルトの名無しさん
09/02/10 18:09:21
WindowsがF#に移行しつつあるのにobj-c2.0ぐらいの文法で障害とか
どんだけ池沼なんだよw

834:デフォルトの名無しさん
09/02/10 18:14:22
>>833
>WindowsがF#に移行しつつある
まあ一般化はあと5年は先だろうな。

835:デフォルトの名無しさん
09/02/10 18:44:28
iPhone デベロッパーズ クックブック
もうすぐ出るね。
URLリンク(www.amazon.co.jp)

836:デフォルトの名無しさん
09/02/10 20:56:13
>>833
Windows、F#に移行しつつあんの?
最新版VSで辛うじてサポート程度としかしらんかったわ。

837:デフォルトの名無しさん
09/02/11 12:43:58
C# <= C++
J# <= Java
F# <= Fortran??

838:デフォルトの名無しさん
09/02/11 22:37:06
Functional Language

839:デフォルトの名無しさん
09/02/12 15:42:45
F#は、Objective Camlだよ。
研究とか趣味の人向けの選択肢であって、大多数のプログラマには無縁の存在だから。

840:デフォルトの名無しさん
09/02/18 14:21:32
Windows版のGCCにはobjective-cコンパイラも付属してますが、
これを用いて、Windows APIをコールして、簡単なGUIアプリを作成できますか?

841:デフォルトの名無しさん
09/02/18 14:25:00
できるはず

842:デフォルトの名無しさん
09/02/19 00:33:30
Windows API をどうやって Obj-C にくるむかという問題があるのでは...
Windows で Cocoa で開発したければ Cocotron
URLリンク(www.cocotron.org)
とか GNUStep
URLリンク(www.gnu.org)
とかあるよ。

843:デフォルトの名無しさん
09/02/19 03:43:53
GNU Step入門
URLリンク(www.amazon.co.jp)
なんて本がこっそり出てるんだけど、1ナノセカンドも
話題になってない気がする。

844:デフォルトの名無しさん
09/02/19 04:18:22
作者の名前と経歴がなぜか笑えるw

そういえばFileMagnetのWindowsクライアントはCocotronで作られたんじゃなかったっけ?

845:デフォルトの名無しさん
09/02/19 08:33:44
>>842
直接APIをコールすればいいんでねいの?

846:デフォルトの名無しさん
09/02/19 21:12:59
>>843
なか見検索できないんだが、なかはどうなの?


847:デフォルトの名無しさん
09/02/19 21:37:40
あったかいナリ

848:デフォルトの名無しさん
09/02/20 00:54:58
>>822
>完成してるんだよね。だからコード書かなくても動く。

おまえプログラム組んだ事ほぼ皆無だろw
Interface Builderでコントロールをドラッグ&ドロップしてアプリが完成したつもりになってる輩とみたw
そんな作業、アプリ制作の1%程度の作業なんだが。


849:デフォルトの名無しさん
09/02/20 02:14:38
アホなりw

850:デフォルトの名無しさん
09/02/20 12:35:06
>>848
まあほぼ同意だが、Interface Builder は何かほかの GUI デザイナとちがって
作業時間が長いようなきがするな...
バインディングとかターゲット、outlet とかも一杯で。
ソースコードになってない情報が多すぎてわかりにくいときも。

851:デフォルトの名無しさん
09/02/23 09:30:44
NSObjectのカテゴリ作ってperformSelectorを上書きして
呼びだされたメソッド名を逐一NSLogで出力したいんだが、
元のperformSelectorを呼びだす方法ってあるかな?
おもしろそうなのに全然使いこなせてない気がする>カテゴリ

852:デフォルトの名無しさん
09/02/23 13:46:53
カテゴリでは同名のメソッドは追加できない気がする。
URLリンク(journal.mycom.co.jp)
にやりかたがのってますが、Leopard になってすこし runtime がかわったので
10.5 でコンパイルする場合は 10.4 用にインスペクタで設定しないと
そのままではコンパイルエラーがでるでしょう。
何にせよその連載は勉強になります。

また、メソッドの呼び出しの際に performSelector: がいつでも呼ばれるか
というとそうではないので...

URLリンク(developer.apple.com)

URLリンク(developer.apple.com)
URLリンク(developer.apple.com)
URLリンク(developer.apple.com)

のあたり参照。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch