Objective-C [ObjC part:6];

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。
 (Wikipedia:http://ja.wikipedia.org/wiki/Objective-C より)

Objective-C [ObjC part:5];
http://hibari.2ch.net/test/read.cgi/tech/1279730299/

Objective-C [ObjC part:4];
http://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
2デフォルトの名無しさん:2011/08/21(日) 10:49:46.41
*** プログラム技術板 ***
【マック】Macintoshプログラミング質問箱
http://hibari.2ch.net/test/read.cgi/tech/1113058054/

*** 新・mac板 ***
Cocoaはさっぱり!!! version.16
http://hibari.2ch.net/test/read.cgi/mac/1307162542/

Macでプログラミング{10}
http://hibari.2ch.net/test/read.cgi/mac/1248682344/

iPod touch/iPhone ネイティブアプリ製作 ver.16
http://hibari.2ch.net/test/read.cgi/mac/1312723856/
3デフォルトの名無しさん:2011/08/21(日) 10:51:19.50
4デフォルトの名無しさん:2011/08/21(日) 10:52:45.16
ダイナミック Objective-C サイト
http://journal.mycom.co.jp/column/objc/

Apple のランタイムのソースコード (10.7)
http://www.opensource.apple.com/source/objc4/objc4-493.9/

英語のサイト
Objective-C 入門

http://cocoadevcentral.com/d/learn_objectivec/
Objective-C Style 1, 2 (変数名のつけかた等)
http://cocoadevcentral.com/articles/000082.php
http://cocoadevcentral.com/articles/000083.php

Mike Ash さん(Audio Hijack の中の人)のブログ、 Obj-C のランタイムの話が良く出る
http://mikeash.com/?page=pyblog/

C++ と Objective-C の文法の比較
http://ktd.club.fr/programmation/objective-c.php
5デフォルトの名無しさん:2011/08/21(日) 23:54:46.01
民主党web-site  http://www.dpj.or.jp/
民主党「生活が第一」チャンネル  http://www.youtube.com/dpjchannel?gl=JP&hl=en
6デフォルトの名無しさん:2011/08/23(火) 02:40:17.98
*** 警句 ***
汝、retainCountを数える事なかれ
そは、理を知り真理に触れし者のみが振える御技
汝、オーナーシップの本質を見よ
そは、相反する一対の調和を守る事也
allocにはreleaseを。copyにはreleaseを。retainにはreleaseを。

アーメン
7デフォルトの名無しさん:2011/08/25(木) 09:15:33.20
objcはgtagsできないわけ?
8デフォルトの名無しさん:2011/08/25(木) 21:53:48.84
Objective-Cの言語的な面白さや美しさってどこですか?
9デフォルトの名無しさん:2011/08/26(金) 07:12:02.43
age
10デフォルトの名無しさん:2011/08/28(日) 20:51:58.43
円高なんとかしろよ、このヤロー!
11デフォルトの名無しさん:2011/08/29(月) 08:10:15.25
うるせーバカヤロー!
12デフォルトの名無しさん:2011/08/30(火) 21:28:11.38
SpeedMailerのこうなごさんのサイトがインドネシアのハッキンググループにハックされたままになってもう1週間以上。だれか教えてあげてw
http://kounago.jp/
13デフォルトの名無しさん:2011/08/31(水) 23:53:03.55
>>3
それ古すぎ。こっちが最新。
*** 本家 ***
Objective-C 2.0 プログラミング言語
http://developer.apple.com/jp/devcenter/ios/library/documentation/ObjC.pdf
14デフォルトの名無しさん:2011/08/31(水) 23:55:35.51
15デフォルトの名無しさん:2011/09/02(金) 00:43:49.51
すごいバグ発見したのだが。。。。
配列の要素の入れかえでNSMutableArrayのexchangeObjectAtIndex:withObjectAtIndex:って
メソッドが壊れていることに気づいた。
下のコード実行してみてほしい

NSMutableArray *dataSource = [[NSMutableArray alloc] init];
// 10個の要素を持つ配列を生成
for (int i = 0; i < 10; i++) {
 [dataSource addObject:[NSString stringWithFormat:@"%d", i]];
}
// 変更前の配列の中見を確認する
NSLog(@"%@", dataSource);
// インデックス0の要素とインデックス2の要素を入れ替える
[dataSource exchangeObjectAtIndex:2 withObjectAtIndex:0];
// 変更後の配列の中見を確認する
NSLog(@"%@", dataSource);
16デフォルトの名無しさん:2011/09/02(金) 00:47:13.81
>>15
2011-09-02 00:46:40.895 gomi1[12097:707] (
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
)
2011-09-02 00:46:40.897 gomi1[12097:707] (
2,
1,
0,
3,
4,
5,
6,
7,
8,
9
)
17デフォルトの名無しさん:2011/09/02(金) 00:49:43.53
2011-09-02 00:49:10.310 Test[9304:707] (
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
)
2011-09-02 00:49:10.312 Test[9304:707] (
2,
1,
0,
3,
4,
5,
6,
7,
8,
9
)

で?
18デフォルトの名無しさん:2011/09/02(金) 00:55:11.26
これは、どういうバグだ?
19デフォルトの名無しさん:2011/09/02(金) 00:55:15.74
初心者は自分の頭がバグってるという好例
20デフォルトの名無しさん:2011/09/02(金) 12:54:52.72
正常にみえるけど、どこがバグってるの?
21 忍法帖【Lv=40,xxxPT】 :2011/09/02(金) 13:01:06.37
22デフォルトの名無しさん:2011/09/02(金) 23:52:32.55
NSOperationQueueをmainQueueで作った場合にcancelAllOperationsしても
中のNSOperationクラスが残ったままなのですが、これは何が原因でしょう??

// キュー作成
self.queue = [NSOperationQueue mainQueue];
// NSOperationのサブクラス作成
Operation *op = [[[Operation alloc] init] autorelease];
// エンキューする
[self.queue addOperation:op];
// キャンセルする
[self.queue cancelAllOperations];
// キューの中身を確認する(0ではなく1になる)
NSLog(@"%@", [[self.queue operations] count]);
23デフォルトの名無しさん:2011/09/03(土) 00:17:48.34
キャンセルする前に実行されてしまったとか?
24デフォルトの名無しさん:2011/09/03(土) 05:04:17.69
>>22
cancelAllOperationsは[op cancel]するだけじゃなかったっけ。
Operationが停止するまで待ちたいなら、
その後にwaitUntilAllOperationsAreFinishedを追加かな。
25デフォルトの名無しさん:2011/09/03(土) 06:27:53.23
>>23
テスト的に10秒くらいかかる処理にしてるのでそれはないです。

>>24
むしろ[op cancel]してもらえればop側で処理を停止するように書いてあるので
cancelメッセージを送信してほしいんですが、調べてみると送っていませんでした。
これが原因だと思います。なぜ送信しないかは不明です。
ちなみにwaitUntilAllOperationsAreFinishedはopが実行完了するまでスレッドを
ブロックするメソッドのなので、やりたい事とちがいます。

ちなみにNSOperationQueueの初期化を下記のようにすると
きちんとキャンセルされます。
self.queue = [[[NSOperationQueue alloc] init] autorelease];
26デフォルトの名無しさん:2011/09/03(土) 12:58:56.96
mainQueueはまさに実行中のメインスレッドのキューだから、エンキューしたとたんにすぐ実行されて
キャンセルが間に合わないんじゃないの?
別に作ったキューは、エンキューしてから実際に実行されるまで間があるだろうから、実行前にキャンセル
できたのでは?
ドキュメントでも、一旦実行されたオペレーションのキャンセルができるかどうかは、オペレーション側の
実装次第ってかいてあるし。

キューに残っているオペレーションのステータスを確認してみたら?
27デフォルトの名無しさん:2011/09/03(土) 15:04:08.66
mainQueue は共有資源で、他でも使ってるかも知れないのに cancelAllOperations してもいいのかな?
あと、残った 1 は、まさに cancelAllOperations を実行中の operation かも。
•cancelAllOperations の前には operations の数はいくつあったか
•cancelAllOperations で自分の作った operation がいくつ cancel されたか
を確認すべきでは?
28デフォルトの名無しさん:2011/09/04(日) 23:01:50.36
>>22
NSOperationQueueにCancelAllOpetationを送ってもQueueからは削除されずに、全てのOperationをCancel状態にするだけです。cancel状態の時はmainメソッドは呼ばれないのです。昔、10,000個近く突っ込んでえらい目にあった(笑)
29デフォルトの名無しさん:2011/09/05(月) 00:24:59.80
>>28
mainQueueのときはそもそもcancelを呼ばない?から、ちょっと違う問題な気がする。

ユーザーの操作に応答しなくなるだろうから、mainQueueに突っ込むメリットがあまり無いと思うんだけど、
どういう時に使うんだろうか。
30デフォルトの名無しさん:2011/09/05(月) 01:33:55.37
mainQueueって、RunLoopで処理されるキューでしょ?
cancelしたあと、一度RunLoopに戻ってみたら?
3129:2011/09/05(月) 01:49:04.35
>>30
cancelが呼ばれず、オペレーションを終了できないので、
戻す方法がわかりません。
(個別にcancelを呼べば、終了できる)
32デフォルトの名無しさん:2011/09/05(月) 09:43:03.83
オペレーションの実装に問題があるような気がする。実行中にCancelが呼ばれた時の処理がうまくできてないとか。
3329:2011/09/05(月) 13:07:35.55
mainQueueのときはcancelAllOpetationではcancelが呼ばれない?ので、
呼ばれたときの処理の問題では無い気がします。
オーバーライドしてログ出力するようにしても、ログが表示されない。
allocした場合はログが表示される。
(個別にcancelを呼んで対処は可能)

- (void)cancel {
NSLog(@"%s", __func__);
[super cancel];
}

- (void)main {
NSLog(@"%s", __func__);
while (![self isCancelled]) {
sleep(1);
NSLog(@"sleep");
}
}

- (void)dealloc {
NSLog(@"%s", __func__);
[super dealloc];
}
34デフォルトの名無しさん:2011/09/05(月) 13:52:39.74
いい加減ウザイからNSOperationのリファレンス見たけど
理由と思われるものがちゃんと書いてあるよ

長いから自分で読んでね!

Responding to the Cancel Command
って所もね
3529:2011/09/05(月) 15:49:26.06
>>34
mainQueueだとcancelAllOpetationでcancelを呼ばないって
理由と思われるものは書いて無いんじゃないかな。

英語は得意じゃないんで、間違ってたら指摘よろしく。
自身のcancelメソッドを呼ぶか、キューのcancelAllOpetationを呼べと書いてあるように見える。
You do this by calling the cancel method of the operation object itself or by calling the cancelAllOperations method of the NSOperationQueue class.
36デフォルトの名無しさん:2011/09/05(月) 16:54:38.17
cancelは、少なくともキュー内にそのオペレーションが確実に存在してて、
実行前か、実行中じゃないと呼ばれないと思うので、エンキューと、キャンセルの
タイミングが書かれてないと、なんともわからない。
cancelが呼ばれた時のキューの中身と、各オペレーションのステータスを表示
してみたらいいんじゃあるまいか。
もしかしたら、メインキューの場合、次のループまで実際の処理が遅延するとか
あるのかもしれない。まぁ結構適当に書いた。
37デフォルトの名無しさん:2011/09/05(月) 18:41:03.85
1秒かかるオペレーションを10個ほど突っ込んで -cancelAllOpetation 呼んで見れば何か分かるんじゃないかな?
38デフォルトの名無しさん:2011/09/05(月) 18:51:22.63
動作確認用のサンプルコードを書いて見た。

int main(int argc, char *argv[]) {
CFShow(@"*** START ***");
CFRunLoopPerformBlock(CFRunLoopGetCurrent(), kCFRunLoopDefaultMode, ^() {
CFShow(@" begin Func1");
[[NSOperationQueue mainQueue] addOperationWithBlock:^() {
CFShow(@" begin Func2");
CFRunLoopStop(CFRunLoopGetCurrent());
CFShow(@" end Func2");
}];
[[NSOperationQueue mainQueue] cancelAllOperations];
CFShow(@" end Func1");
});
CFShow(@"RUN!!");
CFRunLoopRun();
CFShow(@"*** END ***");
return 0;
}

*** START ***
RUN!!
begin Func1
end Func1
begin Func2
end Func2
*** END ***
3938:2011/09/05(月) 18:55:37.71
書き忘れてたけど、GCは必須ね
40デフォルトの名無しさん:2011/09/05(月) 19:09:49.31
なにを動作確認しようとしているのか、さっぱりわからない。
キャンセルしようとした時にキューの中がどうなっているのかを確認しないと。
41デフォルトの名無しさん:2011/09/05(月) 19:13:09.03
ようするに、cancelAllOperationsを呼んでもキャンセルされない、ということだ
42デフォルトの名無しさん:2011/09/05(月) 19:27:25.24
Func2が実行されたのは、cancelが呼ばれた時点で、既に実行されてて間に合ってないからじゃないの。
だから、cancelを呼ぶ時点でのキューの中身とそれぞれのステータスを確認してみないと意味ないよ。
何回も指摘されてるけど、ドキュメントには、cancelは直ぐに効果を及ぼすとは限らないって書いてあるよね。
43デフォルトの名無しさん:2011/09/05(月) 19:36:13.86
int main(int argc, char *argv[]) {
 CFShow(@"*** START ***");
 CFRunLoopPerformBlock(CFRunLoopGetCurrent(), kCFRunLoopDefaultMode, ^() {
  CFShow(@" begin Func1");

  [[NSOperationQueue mainQueue] addOperationWithBlock:^() {
    sleep(1);
    CFShow(@" begin Func2");
    CFRunLoopStop(CFRunLoopGetCurrent());
    CFShow(@" end Func2");
  }];
  [[NSOperationQueue mainQueue] addOperationWithBlock:^() {
    sleep(1);
    CFShow(@" begin Func3");
    CFRunLoopStop(CFRunLoopGetCurrent());
    CFShow(@" end Func3");
  }];
...続く
44デフォルトの名無しさん:2011/09/05(月) 19:37:25.00
  [[NSOperationQueue mainQueue] addOperationWithBlock:^() {
    sleep(1);
    CFShow(@" begin Func4");
    CFRunLoopStop(CFRunLoopGetCurrent());
    CFShow(@" end Func4");
  }];

  [[NSOperationQueue mainQueue] cancelAllOperations];
    CFShow(@" end Func1");
  });

  CFShow(@"RUN!!");
  CFRunLoopRun();
  CFShow(@"*** END ***");
  return 0;
}
45デフォルトの名無しさん:2011/09/05(月) 19:43:47.19
すまん間違った。忘れてくれ。
46デフォルトの名無しさん:2011/09/05(月) 19:52:47.76
>>42
> Func2が実行されたのは、cancelが呼ばれた時点で、既に実行されてて間に合ってないからじゃないの。

何を言っているのか、いまいち分からないのだが、
まず、君の言う「cancel」って-[NSOperation cancel]のこと?
それとも、-[NSOperationQueue cancelAllOperations]のこと?
47デフォルトの名無しさん:2011/09/05(月) 20:10:40.64
>>42

さっきから、RunLoopの話が出ている訳だが、このコードがシングルスレッドで動いていることは、分かっているよね?
48デフォルトの名無しさん:2011/09/05(月) 20:50:21.64
ちょっと試してみたが、>>38の言うとおり、メインキューでは、cancelAllOperationsはきかないみたいだな。
allocして作ったキューではきく。違いは何かというと、シリアルか非同期かいうことか。

説明がドキュメントにみあたらないげと、もうそういう仕様ということでいいんじゃね?
メインキューはUIも処理するから、本来時間のかかる処理をメインキューでやるべきではないし。
49デフォルトの名無しさん:2011/09/05(月) 20:56:46.69
GCDで書いてシングルスレッド?あるのか。
>>37,42 説を推すが。
50デフォルトの名無しさん:2011/09/05(月) 21:06:28.51
>>49
GCDじゃなくて、あくまでNSOperationだから。じゃないのか?
51デフォルトの名無しさん:2011/09/05(月) 21:09:59.31
-[NSOperationQueue cancelAllOperations] に breakpoint 設定して、
アセンブリコードおっかけて見りゃわかるが、
mainQueue の時だけ「何もしない」処理になってる。

mainQueue は共有資源なんだからこれはこういう仕様なんだろう。
cancelAllOperations で意図しない operation が cancel されないように。
52デフォルトの名無しさん:2011/09/05(月) 21:16:02.76
>>49
メインスレッドで実行することを指定しているのだから、逆にマルチスレッドにはなれないだろう。
53デフォルトの名無しさん:2011/09/05(月) 21:19:52.56
>>51に同意
54デフォルトの名無しさん:2011/09/05(月) 21:21:58.97
UIのイベント処理なんかもオペレーションが使われてんだっけ?
55デフォルトの名無しさん:2011/09/05(月) 21:45:09.07
>>54
それは、NSEventな話?
56デフォルトの名無しさん:2011/09/05(月) 22:28:31.74
いや、>>51で意図しない operation が cancel されないように。ってあったから、
意図しないオペレーションってどんなんかなと思って。
57デフォルトの名無しさん:2011/09/05(月) 22:59:44.12
>>56
マルチスレッドな環境では、あるスレッドで実行されているNSOperationの内部で、mainQueueに新しいNSOperationを追加するかもしれない。
だから、ある時点でメイン・スレッドのRunLoopに、どんなNSOparationがスケジュールされているか把握するのは無理。
という意味だと思います。
たとえ、-[NSOparationQueue operations]を呼び出して中身を確認したつもりでも、次の瞬間に新しいNSOperationが増えているかもしれない。
58デフォルトの名無しさん:2011/09/05(月) 23:05:07.32
あぁ、でもそれは、MainQueueにかぎらず、GlobalQueue全般についていえることだね。
5929: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デフォルトの名無しさん:2011/09/06(火) 00:02:38.21
そもそもmainQueueにぶちこんだoperationをまとめてcancelすることが必要になる設計がおかしい
61デフォルトの名無しさん:2011/09/06(火) 00:11:17.56
まぁな
62デフォルトの名無しさん:2011/09/06(火) 11:30:30.58
これで独立できる

売るものはスマートフォンアプリ WEBサイト運営
サーバーはクラウド VPS
電話はスマートフォンSkype
オフィスは地方にプレハブ型の格安高性能オフィスを建て(300万〜500万)
レンタル自習室&シェアオフィスで収入を得ながらそこで開発する
http://tinyurl.com/43xmk7m
http://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デフォルトの名無しさん:2011/09/21(水) 15:28:02.80
定数は一時オブジェクトではないので
65デフォルトの名無しさん:2011/09/21(水) 15:30:50.19
char *hoge() { return "hoge";}
と一緒
6663:2011/09/21(水) 16:13:55.92
>>64-65 サンクス
なるほど。
NSString以外でも、NSData *myDataとかでも同じですよね?
returnによって自動でつくautoreleaseのスコープが伸びるのであって、
一時オブジェクトという感覚を捨てたほうがいい感じでしょうか。
67デフォルトの名無しさん:2011/09/21(水) 16:23:12.35
>>66
なにもかもが違う
68デフォルトの名無しさん:2011/09/21(水) 16:34:53.61
何を聞かれてるのかわからないのに無理に答えなくていいです
69デフォルトの名無しさん:2011/09/21(水) 16:47:27.28
へぇ
70デフォルトの名無しさん:2011/09/21(水) 17:03:54.99
NSString *msg = @"temp";

って

NSString *msg = [[NSString alloc] initWithUTF8String:"temp"] autorelease];
または
NSString *msg = [NSString stringWithUTF8String:"temp"];

とほぼ同義だと思ってるんだが。@"〜"ってNSString用のシンタックスシュガーだろ。
7163:2011/09/21(水) 17:06:58.54
>>67
違うなら違うで、どのあたりか指摘いただけるとありがたいです。

>returnによって自動でつく
とは@の場合に、msgがautorelease扱いになることを指して書きました。
>autoreleaseのスコープが伸びる
とは、
{
NSString *string = [self getString];
}
のように呼び出し元の有効範囲でautoreleaseされるという意味で書きました。

ちなみにこの辺を参考にして、質問しました
http://stackoverflow.com/questions/2279071/nsstring-returning
72デフォルトの名無しさん:2011/09/21(水) 17:12:05.35
return で autorelease が自動でつくなんて初耳だぞ。
returnは関係ないだろ。
73デフォルトの名無しさん:2011/09/21(水) 17:15:50.44
>>71
autoreleaseっていうのは、あとでreleaseするために
AutoreleasePoolに突っ込むっていう操作だよ。
returnで自動で付いたりしないしスコープとも関係ない。
74デフォルトの名無しさん:2011/09/21(水) 17:17:04.26
63 は任意のメソッドに自動で
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
{//スコープ(笑)
...
}.
[pool release]; が付いていて、return の際にはスコープが伸びる(謎)とか思ってるんじゃ無かろうか。
75デフォルトの名無しさん:2011/09/21(水) 17:20:23.35
>>70
@"〜" は CFSTR("〜") と等価みたいだよ。
76デフォルトの名無しさん:2011/09/21(水) 17:46:33.21
伸びるって表現するならスコープじゃなくてライフサイクルでしょ。
77デフォルトの名無しさん:2011/09/21(水) 17:49:10.30
スコープに対してエクステントっていうんだぜ
78デフォルトの名無しさん:2011/09/21(水) 17:52:15.33
>>75
そうなんだ。@"〜"はautoreleaseされないんだな。勉強になった。
7963:2011/09/21(水) 18:04:59.00
自分が考え違いをしていたのだけなんとなく分かってきました。
>>72-73
>returnで自動で付いたりしないしスコープとも関係ない。
はい。
>>74
>return の際にはスコープが伸びる(謎)とか思ってるんじゃ無かろうか。
似たようなことを思ってました。

まだ分かってないんですけど、下の@Aは両方とも問題なく使えますか?
- (id)getData { //@
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://hoge/hoge.xml"]];
return data;
}
- (id)getData { //A
NSData *data = [[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://hoge/hoge.xml"]] autorelease];
return data;
}

呼び出すときの有効範囲は中括弧内ですよね?
{
NSData *data = [self getData];
}
80デフォルトの名無しさん:2011/09/21(水) 18:15:40.59
何を聞きたいのかがよく分らんな。
まず、スタックとヒープの違い、オブジェクトのオーナーシップ、
メインループとAutoreleasePoolの関係を理解しれ。
81デフォルトの名無しさん:2011/09/21(水) 18:21:32.31
>>79
@とAは等価。
@は予めautoreleaseされたオブジェクトをdataに受け取ってる。
Aは自分で生成してautoreleaseしてる。

getDataが返したオブジェクトの有効範囲という意味なら中括弧は無関係。
どこかで現在のAutoreleasePoolが開放されるまでは生きてる。
たぶんフレームワークに制御を戻すまで。
82デフォルトの名無しさん:2011/09/21(水) 18:34:32.76
>>79
AppKit とかが AutoreleasePool 作ってるのを、
言語レベルで勝手に AutoreleasePool で括られてると勘違いしてるようだが、それは違う。
83デフォルトの名無しさん: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デフォルトの名無しさん:2011/09/21(水) 18:57:58.40
じゃあ、混乱させよう
今のMac OS Xでの実装では

- (NSString *)hoge { return @"hoge";}
- (NSString *)fuga { return [NSString stringWithString:@"hoge"];}

で返されるものは同じインスタンス。
8563:2011/09/21(水) 18:59:36.65
みなさんの説明で、ようやく理解できてきたと思います。
スタックありきで考えていました。すんません。自分がスタックと考えていたもの全てヒープなんですね。
>>79の@がひっかかっていた理由が、
スタックに制限されると誤解していたので、スコープで理屈がつくよう自分理論を作ってました。
ありがとうございました。いやマジで。
86デフォルトの名無しさん:2011/09/21(水) 19:08:19.77
>>84
つまり、クラスクラスタの為せる技ってこと?
87デフォルトの名無しさん:2011/09/21(水) 19:12:17.38
>>86
+ (NSString*) stringWithString:(NSString*)s { return s; }
っていう実装になってる事に加えて、
コンパイラが同じ内容の文字列定数をひとつにまとめるようになってる
っていう事では?
88デフォルトの名無しさん:2011/09/21(水) 19:13:31.64
いやこんな風かな?
+ (NSString*) stringWithString:(NSString*)s { return [s autorelease]; }
89デフォルトの名無しさん:2011/09/21(水) 19:14:15.10
あれなんか違いそう
90デフォルトの名無しさん: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デフォルトの名無しさん:2011/09/21(水) 19:26:09.97
へー [NSString stringWithString:@"hoge"] も
autorelease されないんだな。

他の[NSString stringWith〜]はautoreleaseされるのに。

奥が深いというか、変態的というか。 黒魔術の一端を垣間見た気がした。
92デフォルトの名無しさん:2011/09/21(水) 19:26:58.44
されないってなんだよ。release に意味がないだけ
93デフォルトの名無しさん:2011/09/21(水) 19:31:02.89
あぁ定数だから、関係ないのか。
94デフォルトの名無しさん:2011/09/21(水) 19:34:28.55
定数はとにかく使いまわされるっていう事だな。
95デフォルトの名無しさん:2011/09/21(水) 19:34:57.14
つうことはあれか、ソース内に@"〜"の記述が増えれば増えるほど
それが一時的な用途であったにせよ、メモリを圧迫するってことか。
96デフォルトの名無しさん:2011/09/21(水) 19:38:22.24
でもリードオンリのページに置かれてプロセス間で共有されるだろうから、
同時にいくつも起動するプログラムなら節約になりそう。
97デフォルトの名無しさん:2011/09/21(水) 19:45:58.05
>>95
> 容量の初期値は 2500。
http://hmdt.jp/core/string/const.html
98デフォルトの名無しさん:2011/09/21(水) 19:46:23.30
それは文字列の内容が同じ場合でそ
99デフォルトの名無しさん:2011/09/21(水) 19:48:34.78
>>97
あぁつうことは、多少@"〜"が多かろうが少なかろうが、
その領域の容量は予め決まっているから、メモリ的には
あまり関係ないっつうことか。
100デフォルトの名無しさん:2011/09/21(水) 19:50:47.24
文字列定数をまとめるのって実行時にやってたのかよ・・・
101デフォルトの名無しさん: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デフォルトの名無しさん:2011/09/21(水) 20:04:24.45
なるほど、NSString の中身は変更されようがないから、コピーを作る必要がないってことか。
103デフォルトの名無しさん:2011/09/22(木) 02:47:19.46
Constant CFString(=NSString)はかなり前からコンパイル時にgccがCFStringの構造を
直接展開する様になった。アセンブリリストで生成コードを見れば一目瞭然。
Constant CFStringに対してretainやreleaseはNOP扱いで何の効果も無い。
>>65
これが一番適切な答えだね。
>>97
これは化石情報
104デフォルトの名無しさん:2011/09/22(木) 05:16:10.18
質問させてくらはい

x = [[Foo alloc] init];
で init がエラーしたら、この alloc した領域はリークすると思うんですけどどうなんでしょう。
105デフォルトの名無しさん:2011/09/22(木) 08:20:31.11
「init がエラーしたら」ってなんだよ
106デフォルトの名無しさん:2011/09/22(木) 09:42:17.72
>>104
initが責任を負う
107デフォルトの名無しさん:2011/09/22(木) 11:59:58.89
つまり辞任?
108デフォルトの名無しさん:2011/09/22(木) 12:16:02.29
>>104
>>13にサンプル付きで載ってる。
109デフォルトの名無しさん:2011/09/22(木) 16:42:25.26
>>106,108
ありがとん
110デフォルトの名無しさん:2011/09/24(土) 12:10:30.79
正規表現リテラルとか欲しいな
@/hoge/ みたいな
111デフォルトの名無しさん: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デフォルトの名無しさん:2011/09/25(日) 13:38:56.52
>>112
試してみて上手くいくのを採用。
114デフォルトの名無しさん:2011/09/25(日) 18:47:20.02
事故解決しました。
115デフォルトの名無しさん:2011/09/25(日) 23:40:46.43
まあ総当たりだと事故るよな
116デフォルトの名無しさん:2011/09/26(月) 06:14:49.09
>>112
4.非同期にしてGCDしないと受信待ちから抜けられないでアンサー?
117デフォルトの名無しさん:2011/09/26(月) 12:09:55.61
ライフラインお願いします。
118デフォルトの名無しさん:2011/10/03(月) 00:46:55.39
ゲーム開発には明らかに不向きだと思うんだけど、
ocj-cを採用した商用の3Dバリバリなアクションゲームとかあったりするの?
nextstepから随分と長いこと使われてるあたり保守性に優れてそうだし、
長期スパンで使い続ける趣味グラマには良さげなんだけれども
119デフォルトの名無しさん:2011/10/03(月) 01:50:21.96
>>118
一言でゲームといっても実際にはいろいろな種類のゲームがあるよね。
Objective-Cでの開発で不利にならないゲームのジャンルなり何なりがあるんじゃないかなあと思ったり。
120デフォルトの名無しさん:2011/10/03(月) 01:56:38.30
3DバリバリなやつなんてOpenGLなんだから、
OS側のフレームワークとのインターフェイス以外は全部CなりC++なりで書けるじゃん。
121デフォルトの名無しさん:2011/10/03(月) 02:43:31.46
>>119
quakeとか、doomとかをイメージしてまふ>3Dバリバリなアクションゲーム
画像処理系のプロプライエタリィなものは割とある気がするので、そういうのには向いてるのかと

>>120
そりゃま、そうなんだが
obj-cの特性を十分に使って開発されたソフトウェアの実績あるのかが気になったので
122デフォルトの名無しさん:2011/10/03(月) 03:44:49.01
決して言い過ぎではないと思うから言うけど、
>>121
>obj-cの特性を十分に使って開発されたソフトウェアの実績あるのか

んなモンは無い
123デフォルトの名無しさん:2011/10/03(月) 08:37:40.11
Appleの製品じゃね?
124デフォルトの名無しさん:2011/10/03(月) 22:25:12.07
>>121
そのObjective-Cの特性って、例えばどんなのを想定してるの?
125デフォルトの名無しさん:2011/10/03(月) 22:45:52.61
>>124
c++よりも動的な性質を持ったオブジェクト指向とか
特徴的といえば、(id)とかだけど、こういった独特の仕組みつかうことで開発効率あがったりするのかなと
obj-c自体にはあんまり関係なさそうだけどgcdとか
126デフォルトの名無しさん:2011/10/03(月) 23:05:55.03
idが特徴的って…あんま理解してなさそうだな。
127デフォルトの名無しさん:2011/10/03(月) 23:20:20.86
ああ、まったく理解してないぜ。ただの計算機歴史のミーハーだし
ネット上をいくら見回したって、smalltalk由来のオブジェクト指向以上の情報が見当たらのだもん
appleのプログラマが、ひょっこりとこのスレ見てるなんて奇跡でもおこらないかな
128デフォルトの名無しさん:2011/10/03(月) 23:35:50.85
世界初のWebブラウザーとWebObjectsをじっくり調べてごらん。
129デフォルトの名無しさん:2011/10/03(月) 23:43:34.57
Webブラウザの話は知ってるよ。知ってるわよ、そのぐらい。馬鹿にしないでくれる?っと。

奇遇にもちょうどWebObjectの記事を見ていたところw
javaで書き直されてるのね。不遇な子ですこと>obj-c
130デフォルトの名無しさん:2011/10/03(月) 23:53:05.53
>>125
それで、「動的」だと、なぜ開発効率のアップに繋がるんだ?
131デフォルトの名無しさん:2011/10/03(月) 23:56:53.60
その話題に持っていきたいなら隔離スレで頼む

煽りでなく、有益な流れになった試しがないw
132デフォルトの名無しさん:2011/10/04(火) 00:02:33.36
仕様の固まっていない未知のソフトウェアを書く上では型指定されていない方が作りやすかった
当時のレガシーなc++の型システムでは、プログラムの修正がほぼ不可能だったのだと妄想中

単にcとobjective-cしかなかったような気もするが。
でも、あの時代ってSTLもないよね?そんな理由でNSArrayとかが使いやすかったんじゃないの
133デフォルトの名無しさん:2011/10/04(火) 00:03:46.88
>>131
スレ違いスマソ
134デフォルトの名無しさん:2011/10/04(火) 00:06:24.63
>>131
あまり、その話題に持って行くつもりもなかったのだが、
でも、今回の話って、結局そういうレベルの話なのだろう。
135デフォルトの名無しさん:2011/10/04(火) 00:31:42.43
まああそこに落ち着いちゃうのかも知れないけど、落ち着いた先は泥沼なのよね
136デフォルトの名無しさん:2011/10/04(火) 12:48:26.16
Objective-CのObjective-はCの敷居を限り無く下げただけだからCと同じようなもんだと思えばよろし
実際コアな部分は殆どCで書かれてる
137デフォルトの名無しさん:2011/10/04(火) 12:59:57.47
>>132
まさにその罠にはまったのがAPIをC++でやったBeOSだったと記憶してる
138デフォルトの名無しさん:2011/10/04(火) 19:56:59.56
delegateパターンはid型が便利。
OBJ-Cのメリットは、ちゃんと書くとコメントがいらないことだと思う。
139デフォルトの名無しさん:2011/10/06(木) 01:32:05.58
cとc++ => 完全に別物
cobj-c => マクロのっけただけ
って認識であってる?
140デフォルトの名無しさん:2011/10/06(木) 08:50:24.55
だいたい合ってナイ
141デフォルトの名無しさん:2011/10/06(木) 12:27:26.18
極端な例えをする人は「そういうことにしたいんだろうな」としか思えん。
違うと言って「じゃあどう違うの?」「結局マクロみたいなものでやってるってことでしょ?」とか言いそうだし。
142デフォルトの名無しさん:2011/10/06(木) 12:46:57.04
いいえ、事実です。
143デフォルトの名無しさん:2011/10/06(木) 12:51:04.02
まあでもobjcはランタイムの方が本体で、
C言語に対する拡張はそれを便利に使えるようにするマクロ集的なところはあると思う。
C→C++とくらべると、なじんでないと言うか、異質感丸出しというか。ESQL/Cっぽい。
144デフォルトの名無しさん:2011/10/06(木) 13:12:44.40
C++もObjective-Cも
最初の実装はプリプロセッサだったからマクロっぽく見えるんじゃね?
145デフォルトの名無しさん:2011/10/07(金) 15:16:04.88
╭━━━╮┏┓┏━━━╮┈┈┈◤┈┈
┃╭━╮┃┃┃┃╭━╮┃┈◢◣◢◣┈
┃╰━╯╯┃┃┃╰━╯┃┈▉▉▉▋┈
┃╭━╮╮┃┃┃┏━━╯┈◥▉▉◤┈
┗┛┈┗┛┗┛┗┛Ⓢⓣⓔⓥⓔ_Ⓙⓞⓑⓢ
╭━━━━━━━━━━━━╮
┃▉▉▉▉▉▉▉▉▉▉▉▉┃
┃▉┏━━━━━━━━┓▉┃
┃▉┃ⓉⓗⓐⓝⓚⓎⓞⓤ┃▉┃
┃▉┗━━━━━━━━┛▉┃
┃▉▉▉▉▉▉▉▉▉▉▉▉┃
╰━━━━┳━━┳━━━━╯
▁▁▁▁╭╯▁▁╰╮▁▁▁▁
╱▔▔▔▔▔▔▔▔▔╲ ╭╮
▔▔▔▔▔▔▔▔▔▔▔ ╰╯

ずれるかな?
146デフォルトの名無しさん:2011/10/08(土) 00:33:46.34
ずれるかなじゃねーよ、ずれまくってるじゃねーか!
納品する前にちゃんとテストしろよ、ボケが!
あと、コピペできねーぞ。どうなってんだ!
147デフォルトの名無しさん: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触り始めて一週間の素人です。
ご存知の方いたら教えてください。よろしくお願いします。

149デフォルトの名無しさん:2011/10/08(土) 12:28:54.36
>>147
そしてiPhoneデベロッパーたちはDylanを使っているのだな。
150デフォルトの名無しさん:2011/10/08(土) 12:44:26.10
NewtonScriptかも?
151デフォルトの名無しさん:2011/10/08(土) 13:26:00.28
>>146
ずれてないじゃん。
152デフォルトの名無しさん:2011/10/08(土) 15:11:12.45
>>151
メガネ変えろよ
153デフォルトの名無しさん:2011/10/08(土) 15:20:59.41
ズレてねーよ
http://gazo.restspace.jp/img-box/img20111008152021.png

AA用のフォントも持ってないのなら死ねよ
154デフォルトの名無しさん:2011/10/08(土) 15:37:35.32
AA用のフォントとか知るかよ。WindowsのIEで検証しろよ。
155デフォルトの名無しさん:2011/10/08(土) 15:43:36.72
このスレでWinIE前提を唱えるとはかなりのツワモノだなw
156デフォルトの名無しさん:2011/10/08(土) 15:48:46.72
AAってそもそもそういうもんだろ

〓 ウィキペディアより 〓

プロポーショナルフォントのアスキーアート

Internet Explorer5.0での表示を基準としたMS Pゴシック16ピクセル(12ポイント)、行間2ドットを標準として作られている。
数行?十数行であることが多いが、巨大なものでは50行に達する場合もある。
157デフォルトの名無しさん:2011/10/08(土) 15:52:45.78
そもそも>>154にはこれもズレて見えるからどうしようもない。
___________________________________
| /;;::   \ニ..|'         |         |:      /; イЖフ|:/:::,r'::,r''|  ,!゙ -'' |
|, ,/,: -;;;;;;;;;;;;;;;;;;;;;: |            |         |; :;;: : :   〈;;::丶ニフ |::,、/:,,===、 .,===,. |
|,i_, -ー───ァ|==、、_  ,__,,,,..、、|=ェ;、   ,,,,,, ,,,,,, | :;;:/    ,  、  |/ / .r;;;;;ヾ_r;;;; 、 .|
|t'i-、_,},}ノ ,,,:-;;彡-|_ィェァ了 (ェoヮ_ |ェヮ :)  f' _-ェェ‐|,,ノ     〉     |::/ ̄ヾ;;;;ノ l,ヾ;;;ノ, |
|. r;;/,;;;;;;^'''ィ_。 ュ、 |   ´!| |!`    | ´.::;i,  i. `'' ̄|爪      ヽ    ;|       ゞ   / |
|i'"~ ''''':;;、,,  ̄ . |  /u__,ゝ   | ,イ;:'  l    |ノ 丶ヘ_冫ノ    ,|. `トェェェェィ ./ |
|.'ー─^ー'_  ;; .| / _二' _、〉.. |/゙'''=-='''´ ヽ,...|    | |   ヽ   |、 . \二二/./  .|
|'ニニニニヽ_彡、,,|  ´  ̄  `   |'~===' '==='' .|.._,:ν⌒Y⌒ヽ、 ..::| 'ヽ    ̄ /ー- |
|___     /.::|゙ヽゝ、   ,   ノ | `::=====::"   |.Kェエエェエェ-冫::::|   \___/,:  .:::|
|;;''''''''''''':;丶_/,,::::|;;;;; ヽー --''" , |        .,i, |,. ヽ、___, ノ   | ゙''''- 、、  '、_   |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
158デフォルトの名無しさん:2011/10/08(土) 15:54:18.05
>>153
ヒラギノじゃんw
なにがAAフォントだ 捏造すんなw
159デフォルトの名無しさん:2011/10/08(土) 15:56:32.69
いーや、>>157はズレてないよ。
160デフォルトの名無しさん:2011/10/08(土) 15:56:39.68
>>158
バーカ
161デフォルトの名無しさん:2011/10/08(土) 16:08:32.58
>>149
それはそれで面白かったかもね。
動的な言語好きだわ。
162デフォルトの名無しさん:2011/10/09(日) 18:00:09.02
>>145 >>157
Windows7 IE9 をインストールした直後だけど、ずれてる
163デフォルトの名無しさん:2011/10/09(日) 23:29:22.53
メイリオ(笑)だとズレるんかもね
164デフォルトの名無しさん:2011/10/13(木) 18:29:15.24
なんなんだこのヘンタイ構文は
これをエレガントとか言ってる奴は頭腐ってる
165デフォルトの名無しさん:2011/10/13(木) 18:51:31.07
>>164
そんなことより聞いてくれよ
いま屁こいたら身が出たんだが
166デフォルトの名無しさん:2011/10/13(木) 21:05:08.94
で?
167デフォルトの名無しさん:2011/10/13(木) 22:16:03.40
エレガントって言ってる奴いるのかな
v1の二つの言語がしれっと同居してる様は面白いなとは思ったけどw
168デフォルトの名無しさん:2011/10/13(木) 23:08:09.13
しかし、Objective-Cってほんと、エレガントだよなぁ。
169デフォルトの名無しさん:2011/10/13(木) 23:10:09.02
Smalltalk知ってればそれほど違和感無いでしょ。
Objective-C++でSTLとAppKit混ぜたり、SSE使うのにintrinsic functionも
使うから、メッセージ構文如き何でもない。
170デフォルトの名無しさん:2011/10/13(木) 23:28:39.41
懐が広いというのかなんなのか
まあ変態言語なのは間違いないんじゃね
171デフォルトの名無しさん:2011/10/14(金) 01:16:42.13
NeXTとその後継のMacでしかまともに採用されなかった時点で
世のCプログラマがどのように見てたかわかるというもの
172デフォルトの名無しさん:2011/10/14(金) 01:31:00.61
まあ当時はこれしかなかったっていう感じなんだろうな。
173デフォルトの名無しさん:2011/10/14(金) 05:22:50.93
C++は汚いからな
Objective Cは動的な所が敬遠されたんだよな
今では逆に利点だけどさ
もっと早くにgc導入すべきだったよな
174デフォルトの名無しさん:2011/10/14(金) 10:41:50.14
Objective-CのGCってJavaや.NETみたいに透過的に使用できるのか?
175デフォルトの名無しさん:2011/10/14(金) 11:27:24.51
できないと思っていい
176デフォルトの名無しさん:2011/10/14(金) 12:01:58.42
>>174
Collectorが関知するのはObjective-CとCoreFoundationのobjectだけ。
AppleはコンパイラによるAutomatic Reference Countingを主力に考えているから、
GCは既に廃止方向
177デフォルトの名無しさん:2011/10/14(金) 12:02:17.00
>>174
ARCはGCじゃないよ
178デフォルトの名無しさん:2011/10/14(金) 12:04:27.24
GCはもう廃止方向なんだ。短い寿命だったな。
179デフォルトの名無しさん:2011/10/14(金) 12:40:22.42
Objective-Cを拡張していくよりまったく新しい言語考えたほうがいいと思うけどな
まあAppleに任せると謎センスでObjective-C以上にわけのわからない言語に仕上がりそうだけどw
180デフォルトの名無しさん:2011/10/14(金) 12:45:54.01
Dylanがあるじゃないw
181デフォルトの名無しさん:2011/10/14(金) 12:47:51.10
Dylanなんてアップル自身もさじを投げた糞言語だろw
182デフォルトの名無しさん:2011/10/14(金) 12:53:58.48
早すぎただけだよ。今なら逝ける。
183デフォルトの名無しさん:2011/10/14(金) 12:55:43.97
訃報: C 言語の開発者、デニス・リッチー氏が死去
ttp://developers.slashdot.jp/story/11/10/13/0224245/

Google+ で Rob Pike 氏が語ったところによると、C 言語の開発者、K&R の R であるところの Dennis Ritchie 博士が亡くなられた。
70 歳 (Rob Pike 氏による Google+ への投稿) 。

長らく闘病中だったとのことで、先週末に自宅で息を引き取ったそうだ。
184デフォルトの名無しさん:2011/10/14(金) 13:00:53.38
Dylanもヘンタイだから広まらないだろうな
せめてC言語やってればすぐにマスターできますくらいのものでないと辛い
185デフォルトの名無しさん:2011/10/14(金) 13:04:50.23
また一人、業界の大御所が世を去ったか…

                黙祷
186デフォルトの名無しさん:2011/10/14(金) 13:41:29.15
言語だけ良くてもライブラリがしっかりしてなければ広まらないよ
187デフォルトの名無しさん:2011/10/14(金) 13:43:05.30
ブロック構文便利だけど、Objective-Cと混ざるとますますキモチワルイ。インデント的に。
188デフォルトの名無しさん:2011/10/14(金) 13:48:05.65
C#と.NET Frameworkは偉大
189デフォルトの名無しさん:2011/10/14(金) 13:51:36.54
>>183
ある意味ジョブズより偉大
190デフォルトの名無しさん:2011/10/14(金) 14:00:34.30
デニス・リッチーなんて一般的には過去の人扱いだしな
191デフォルトの名無しさん:2011/10/14(金) 14:11:33.10
どっちかといえばカーニハンの方に影響を受けてる気がする。
192デフォルトの名無しさん:2011/10/14(金) 14:12:46.41
go はどうなるんだろ
193デフォルトの名無しさん:2011/10/14(金) 20:47:34.00
Smalltalkライクの記述方法をCライクに変更するだけでだいぶ見やすくなると思う
194デフォルトの名無しさん:2011/10/14(金) 22:10:51.40
記述方法はpascalライクにした方がコンパイル速いんじゃないの?
195デフォルトの名無しさん:2011/10/15(土) 01:04:15.93
なんで?
196デフォルトの名無しさん:2011/10/15(土) 02:17:40.99
シンタックスカラーリングが当たり前のご時世に
そんな所で速度稼ごうとか思わんだろ
素直に分散コンパイル環境にする
197デフォルトの名無しさん:2011/10/15(土) 02:39:09.71
言語のせいじゃないだろ。ジョブズがC++選択してもMFCみたいなうんこにはならなかっただろうな。
198デフォルトの名無しさん:2011/10/15(土) 02:43:32.67
まあ当時C++は選択しようがないけどな。
199デフォルトの名無しさん:2011/10/15(土) 02:55:28.07
>>197
KT7の頃のMacAppやCWの方が現在のMFCより何倍もマシだからな
つかMFCって進化してるのか?
200デフォルトの名無しさん:2011/10/15(土) 03:01:14.01
文字列とかコンテナ類がテンプレートベースになってATLと共用になったくらいじゃない?
201デフォルトの名無しさん:2011/10/15(土) 05:47:31.35
やっぱMFCは進化の袋小路か
ObjCも色々変わって大変だけど
進化しないよりはマシだよな
202デフォルトの名無しさん:2011/10/15(土) 05:52:01.90
>>193
ならないよ。
http://www.macruby.org/documentation/rubycocoa-to-macruby.html
MacRubyはlabeled parameter使えるからまだ良いけど、
># RubyCocoa code
>NSFileManager.defaultManager.createFileAtPath_contents_attributes(p, c, a)
これは最悪だろ。
203デフォルトの名無しさん:2011/10/15(土) 06:07:54.14
ST風はわかりやすいと思うけど
@なんちゃらはわかりにくいな
204デフォルトの名無しさん:2011/10/15(土) 16:38:16.99
>>202
正直そっちのほうが見やすい
205デフォルトの名無しさん:2011/10/15(土) 16:40:59.65
普通にtabでインデントできる方が色々とありがたい。
206デフォルトの名無しさん:2011/10/15(土) 16:44:20.26
>>202
>>NSFileManager.defaultManager.createFileAtPath_contents_attributes(p, c, a)

これは嫌だw今のでいいよ
207デフォルトの名無しさん:2011/10/17(月) 12:59:47.44
性格の異なる複数の言語の構文が同居してる時点で気持ち悪い
流行らなかった理由はそこにあるんだろうね
208デフォルトの名無しさん:2011/10/17(月) 13:53:11.79
それぞれの言語がもつ膨大な資産をほとんどシームレスに使用できるなんて、
素晴らしいじゃないか。それに比べたら見た目の気持ち悪さなど些細なことだ。
209デフォルトの名無しさん:2011/10/17(月) 14:06:18.45
さすがにそれは苦しいw
210デフォルトの名無しさん:2011/10/17(月) 16:10:52.20
まあ俺が知る言語の中じゃヘンタイ度はピカイチ
でもそれがカッコいい
211デフォルトの名無しさん:2011/10/17(月) 16:25:21.65
えー、Pythonよりもー?
ヘンタイなのー?
212デフォルトの名無しさん:2011/10/17(月) 17:22:49.35
Pythonはインデント以外には変態要素ない気がするが
213デフォルトの名無しさん:2011/10/17(月) 18:20:55.35
__class__
214デフォルトの名無しさん:2011/10/17(月) 18:25:04.34
もともとSmalltalk自体ヘンタイだからなw
215デフォルトの名無しさん:2011/10/17(月) 20:18:52.79
そりゃタイヘンだ
216デフォルトの名無しさん:2011/10/17(月) 22:33:03.57
変体を重ねて美しくなるのさ
217デフォルトの名無しさん:2011/10/18(火) 03:05:35.65
メソッドを、いちいち [ ] で囲むのは、最初は面倒だと思ったけど、
だんだん人のソースを読むようになったら、

・[xxx yyy] だとメソッド
・xxx.yyy だとプロパティ

で、これは意外と見やすい(わかりやすい)かな、と思うようになった。
218デフォルトの名無しさん:2011/10/18(火) 08:56:39.84
[ ]はともかく、ラベル付き引数のおかげで読みやすさは一番だと思う
219デフォルトの名無しさん:2011/10/18(火) 10:14:55.75
Objective-C++でC++のクラスは扱えるけどC++でObjective-Cのクラスは扱えないのが辛い
だから基本的にクラスはC++で書いてる
正確にはCでも使えるようにCで書いたソースをC++のクラスでラップしてる
Objective-Cのクラスを扱うのはMacのAPIを利用する時だけ
220デフォルトの名無しさん:2011/10/18(火) 12:29:31.26
そんなことしたら、NSArrayやNSDictionaryで使えないじゃん
221デフォルトの名無しさん:2011/10/18(火) 14:23:26.94
自分で書いたコードをマック以外の環境でも必要とされるっての?
ちょっと羨ましいかもw
222デフォルトの名無しさん:2011/10/18(火) 14:29:16.65
OpenGL使ったゲーム系はAndroidでも共有できるしね。
223デフォルトの名無しさん:2011/10/18(火) 14:30:33.13
普通はコアな部分は極力プラットフォームに依存しないようにするな。
224デフォルトの名無しさん:2011/10/18(火) 14:43:30.73
頓智.com の人が言っていたけど、セカイカメラはほとんど C で書いたので、
iphoneアプリから Android に移植するときに、すごく楽だったといっていた
(Objective-C への依存を極力なくした)
225デフォルトの名無しさん:2011/10/18(火) 15:19:15.64
環境に依存する必要のない部分で依存させるようなコードを書く奴はど素人だけでしょ
226デフォルトの名無しさん:2011/10/18(火) 15:22:48.66
GPSとか、加速度センサとか、UI回りとか、Objective-Cに依存しなけりゃならん部分は結構あると思うんだが。
227デフォルトの名無しさん:2011/10/18(火) 16:00:47.14
APIを組み合わせるだけのアプリ開発してるならそうかも
228デフォルトの名無しさん:2011/10/18(火) 16:24:14.30
フルスクラッチで全部手作りかよ
229デフォルトの名無しさん:2011/10/18(火) 16:33:39.44
Cだって依存する環境だけどな・・・
230デフォルトの名無しさん:2011/10/18(火) 16:53:33.98
環境に依存する必要のない部分で依存させるようなコード
って例えばどういうコードなんだ?
231デフォルトの名無しさん:2011/10/18(火) 16:58:01.72
俺は独自の組込用RDBMSはCで書いてる
WinのアプリもMacのアプリも同じものを使ってる
232デフォルトの名無しさん:2011/10/18(火) 17:01:51.58
>>230
ありがちなのは、MVCのMの部分とか。
233デフォルトの名無しさん:2011/10/18(火) 17:12:31.14
例えば?って聞いてるのに、抽象的な回答する奴にはイラっとする。
234デフォルトの名無しさん:2011/10/18(火) 17:15:00.31
>>231
ディスクI/O部分は、POSIX使ってるの?
235デフォルトの名無しさん:2011/10/18(火) 17:15:20.84
むしろ例えばなんて聞いてるような奴が開発やってること自体
理解できない俺はおかしいのか?
236デフォルトの名無しさん:2011/10/18(火) 17:17:22.49
メタファの使用は開発現場ではごく普通だろ
237デフォルトの名無しさん:2011/10/18(火) 17:21:10.95
例えばでMVCのM
データベース自作してるやつがいる
知らなくても流れみればわかる話だろ
238デフォルトの名無しさん:2011/10/18(火) 17:24:02.51
>>234
依存部分と非依存部分をきっちり分けて、
依存部分は取り替えられるようなつくりにしとけばいいんだよ。
239デフォルトの名無しさん:2011/10/18(火) 17:24:25.37
MVCのMとデータベースは直接的な関係はないじゃん?
ORMの話か?
240デフォルトの名無しさん:2011/10/18(火) 17:25:52.50
>>238
POSIXは非依存部分と考えていいの?
241デフォルトの名無しさん:2011/10/18(火) 17:26:42.41
まあ必要性がわからなかったり、そもそも必要がない人は、ガチガチに依存して書いておけばいいんじゃね?
書き捨てならその方が手間はかからないし。
242デフォルトの名無しさん:2011/10/18(火) 17:30:57.68
>>240
いやだから、ファイルI/Oのモジュールを差し替えられるようにしとけば、
POSIX使うのとかWin32使うのとか、そこだけ作って差し替えれば
よそに持っていった時に最適な方法を使えるじゃん。

POSIXなら概ね非依存だろうけど、最適かどうかはまた別だよね。
243デフォルトの名無しさん:2011/10/18(火) 17:36:41.25
POSIXならWindowsでもMacでもUnixでも使えるじゃん。
いちいちWin32やCocoaで使えるインターフェース設計してそれ用のラッパ作るのって
そういうライブラリを作るのが目的とかじゃなければ、よっぽど時間と工数に恵まれた
環境じゃなきゃ現実的じゃないべ。
244デフォルトの名無しさん:2011/10/18(火) 17:40:48.52
何? 依存性を考慮して作ったから移植が簡単だと?それは良かった。
先月リリースしたiPhoneアプリのAndroid版を今月中にリリースしてくれ。
言語はたしか、Javaだったな。 じゃ、宜しくっ!
245デフォルトの名無しさん:2011/10/18(火) 17:42:22.60
しかしRDBMSを独自に組めるとかどんだけ頭いいんだ
数十万ステップオーダーだろ
246デフォルトの名無しさん:2011/10/18(火) 17:43:26.74
>>243
まあそうだけど、ちりばめないでまとめておくのは良い習慣でしょ。
247デフォルトの名無しさん:2011/10/18(火) 17:46:05.85
たいがいは、オプソのDBFileで十分だろ。
もちっと性能が求められるなら、いちいち作るよりMySQLの商用ライセンスでも買った方が時間も手間もかからない。
248デフォルトの名無しさん:2011/10/18(火) 17:50:35.06
>>247
そういう話ではないのだが
249デフォルトの名無しさん:2011/10/18(火) 17:51:42.67
俺はアプリに組み込む目的には専らsqlite使ってるな。
C#で書いたツールで作ったデータをiOSで使うみたいな事もできて便利。
250デフォルトの名無しさん:2011/10/18(火) 17:55:13.48
iPhoneの標準DBもSQLiteだしな。
251デフォルトの名無しさん:2011/10/18(火) 18:18:53.77
>>244
いまは Java を使わなくても C で Androidアプリ作れるよ。
もちろんコンパイル時にターゲットは固定されるけど、
現状では ARM がほとんどなので、そこに目をつぶれるなら。

もちろん、ビューの切り替え等は Java の SDK の API 使ったほうが楽なので、
C で書けるからと言って楽なわけではない。

iphone と Android で C で共有というのは、
GUI ではなくロジックの部分を、なるべく C で書いたら、楽に移植できたということでしょ。
252デフォルトの名無しさん:2011/10/18(火) 18:27:48.20
そりゃそうだろ
253デフォルトの名無しさん:2011/10/18(火) 18:47:55.66
プログラマ的思考の奴とシステムエンジニア的思考の奴が言い争ってる感じだな
254デフォルトの名無しさん:2011/10/18(火) 18:49:32.52
それはちょっと違うな
255デフォルトの名無しさん:2011/10/19(水) 04:07:41.41
わりとboostが普通につかえてるな
256デフォルトの名無しさん:2011/10/20(木) 10:14:55.85
むしろ使えないとおかしくね?
257デフォルトの名無しさん:2011/10/20(木) 16:53:11.64
なんで?
258デフォルトの名無しさん:2011/10/20(木) 21:56:49.76
コンパイラはGCCなんだからCやC++同様に使えて当たり前って話だろ
259デフォルトの名無しさん:2011/10/20(木) 22:24:47.85
>>258
既にコンパイラとしてのGCCは捨てた。
260デフォルトの名無しさん:2011/10/20(木) 22:40:16.03
まだ移行中ってとこだべ
261デフォルトの名無しさん:2011/10/24(月) 21:39:25.32
Push通知機能のアプリを受託で実装しています。

自分の登録しているディベロッパーでApp IDsを作成し、
Apple Push Notification serviceを有効にする等の作業で作成した証明書では
とりあえずpush機能を実装できました。

ただお客様の登録しているディベロッパー上で証明書を作成する作業が、
自分のMac上でできるものなのか良くわかりません。

もしPush通知アプリを実装したことのある方、
このあたりのノウハウを教えて頂けたら幸いです。


262デフォルトの名無しさん:2011/10/25(火) 01:06:55.88
ttp://journal.mycom.co.jp/column/iphone/039/index.html
PDFファイルをいじるアプリを作りたくて,中の文字をいじれるように上のサイトを参考にして作ってた
のですが,上のPDF-5.zipにあるコードで作ると,最初のサンプルコード以外PDFファイルだと文字の抽出がうまくいかないのですが
なぜかわかる方アドバイスしていただけませんか?(もちろん新しいファイルとコード内での読みこむファイル名等を変えてはいます)
263デフォルトの名無しさん:2011/10/25(火) 04:41:39.54
>>261
まるでObjC関係ないし、そもそもどうやってリリースするつもりでいたんだよ
264デフォルトの名無しさん:2011/10/25(火) 07:07:10.95
>>261,262
スレチ
265デフォルトの名無しさん:2011/10/25(火) 10:17:28.76
>>261
新Mac板のiphone開発スレで聞いたほうがいいと思う
266デフォルトの名無しさん:2011/10/25(火) 16:23:04.13
C既習を前提としないObjective-Cの入門サイトor書籍ってないの?
Objective-Cはネット探しても他のメジャーな奴に比べてまだまだ少なくて困る
267デフォルトの名無しさん:2011/10/25(火) 16:36:18.80
正直Cの知識が無いやつにObjective-Cを触って欲しくない
268デフォルトの名無しさん:2011/10/25(火) 16:52:16.47
>>266
これ読んで感想教えて。

世界一わかりやすいObjective‐Cプログラミングの授業
http://www.amazon.co.jp/dp/4883377490
269デフォルトの名無しさん:2011/10/25(火) 16:52:17.26
欲しくないっていうか無理でしょ普通に考えて。
270デフォルトの名無しさん:2011/10/25(火) 17:19:34.35
評判いいC入門と評判いいobj-c本に分けて当たったほうが無駄なく済むと思う
271デフォルトの名無しさん:2011/10/25(火) 17:23:29.08
Cを知らずにいきなりObjective-Cをやる奴は、前戯無しでいきなり挿入するようんなもんだろ。
272デフォルトの名無しさん:2011/10/25(火) 18:20:37.05
こないだのテレビ番組じゃド素人が簡単なアプリ作れてたみたいだけど。
273デフォルトの名無しさん:2011/10/25(火) 18:38:26.46
でも、今Macの上で取りあえずC勉強しろって言われても地味すぎてつまらんだろ。
ある程度成果物ができてこないとモチベーションが続かない。仕事なら別だが。
274デフォルトの名無しさん:2011/10/25(火) 19:20:59.67
んー、やっぱしCからやったほうがいいの?
いろんな言語を使うならCをやっといた方がスムーズに新しい言語を学べるかもしれんが、
そうじゃないしCを学ぶのってただの時間の無駄にしか思えなくてあんまCをやる気にならない。
どうせCマスターしてもObjective-Cと違う所がたくさん出てくるんでしょ?
275デフォルトの名無しさん:2011/10/25(火) 19:34:48.45
目的によるけど、iPhone のプログラム作れるようになりたいとかなら、初心者向けの本いっぱい出てるから、
ここでグダグダ言ってないで、さっさと本屋さん行って良さげな本を買ってきて、実際に手を動かすのが一番。
276デフォルトの名無しさん:2011/10/25(火) 20:26:08.72
まあ明確な目的があるなら、とにかく始めるのが一番だよね。
行き詰まったら、その時に必要な知識を仕入れればいいし。

>>274
Objective-CはC+αなんだから、少しも無駄にはならないし、避けては通れないと思うよ。
277デフォルトの名無しさん:2011/10/25(火) 21:14:47.04
んだな。詰まったらC本買う、くらいの気構えでいんじゃね
やってみりゃ、すぐ>>264の言ってることがどういう意味なのか分かる
278デフォルトの名無しさん:2011/10/25(火) 21:15:25.22
わり、>>276さんのまちがい
279デフォルトの名無しさん:2011/10/25(火) 21:43:23.00
まずはK&Rを読み込んでから話だ
Cもできないプログラム言語の初学者に
ObjCはいまいちだと思うが
280デフォルトの名無しさん:2011/10/25(火) 22:20:41.47
ぐぬぬ、Cは避けれそうにもないか・・・?
やりたいこと(作りたいもの)はいろいろ明確にあるんだけどねー。
じゃ、Cからやってきますわ
281デフォルトの名無しさん:2011/10/25(火) 22:41:19.64
>>280
>やりたいこと(作りたいもの)はいろいろ明確にあるんだけどねー。
これが色々明確にあるひとは作る側に回る必要は無いと思うよ。
作れる人はいくらでも集められるし、これがある人は自分で作ってる暇はすぐになくなる。
282デフォルトの名無しさん:2011/10/25(火) 23:20:06.51
K&Rなんて読んだ奴は例外なく糞コード吐くからやめてくれ
283デフォルトの名無しさん:2011/10/25(火) 23:53:36.05
今時Cからやる必要なんて皆無。というか時間の無駄。
284デフォルトの名無しさん:2011/10/26(水) 00:01:47.67
>>283
だから、Cもやった事無い人は何からはじめればいいんでしょう?って質問がそもそもなんで、
是非それに答えてやってください。参考図書とか参考サイトとか。
285デフォルトの名無しさん:2011/10/26(水) 00:07:31.97
Cなんか無理にやらなくていいよ、斜め読み程度で
書店で数冊MacなりiPhoneの本買って、さっさと作り始める方が早い
286デフォルトの名無しさん:2011/10/26(水) 00:15:29.23
>>284
とりあえず始めるほうが早く覚えられる
一見は百聞にしかずと言うだろ
287デフォルトの名無しさん:2011/10/26(水) 01:16:21.79
とりあえず>>285的な感じで始めてみて、しばらくしたら壁にぶつかるから、
そしたらそれを乗り越えられそうな本なりサイトなりを探して読む。以降繰り返し。
実際に行き詰ってみれば、何が足りないのかわかるでしょ。
そしたらその都度知識を仕入れればいいじゃん。
288デフォルトの名無しさん:2011/10/26(水) 01:26:30.85
>>282
ちゃんと読んだことねえだろ
カーニハンはマジ導師

ま、どっちにしろCはいずれ避けて通れないし
Smalltalkも避けれないがな
289デフォルトの名無しさん:2011/10/26(水) 01:47:55.64
K&Rを本当の意味で理解できる奴なんて一握りだからな
下手に齧った奴は糞コードを吐くだけなので薦めない方がいい
290デフォルトの名無しさん:2011/10/26(水) 01:51:03.85
そもそもK&Rは初心者向けのものじゃないよ
291デフォルトの名無しさん:2011/10/26(水) 08:06:16.74
K&Rは面白いからな
薦めたくなるんだよ
292デフォルトの名無しさん:2011/10/26(水) 11:04:46.10
Cを知らんと、なぜオブジェクト変数の宣言に、*がひっついてるのかがピンとこないだろうな。
あと、配列とか、structとか、enumとか、NULLって何?とか、マクロの使い方とか、制御文
や四則演算とか、Core〜系APIの呼び出しとか、Cの基本知識は結構大事だと思うよ。
Objective-C++にまで手を出すとなったら、C++の前提として、Cの知識は必須だし。
293デフォルトの名無しさん:2011/10/26(水) 19:36:22.88
さすがにそこまで知らないレベルは、そもそもどんな言語でもまともに扱えないだろうし、
並の知能があれば調べればすぐに分かる。
「Objective-CをやるのにCから始めなければならない」かどうかという話を
「Objective-CをやるのにCの知識は不要」とまで極論付けるのは、どういう思考回路なのか。
294デフォルトの名無しさん:2011/10/26(水) 19:43:40.64
初学の趣味プログラマなら最初は興味が持続するのが大事だしな
ある程度わかりだしたらCとかSTとかの重要性とか
面白さがわかるんじゃなあかな
295デフォルトの名無しさん:2011/10/26(水) 19:44:18.94
だからといって害になりかねない初心者本はオススメ出来ないな
296デフォルトの名無しさん:2011/10/26(水) 19:45:21.10
初心者にとってCでやっかいなのは、たぶんポインタがらみだよね。
で、objcをやるにしても、ポインタがらみは普通にわかってないと困るんじゃないの?
297デフォルトの名無しさん:2011/10/26(水) 19:47:49.27
まあ必要性を感じたところで勉強すればいいわけだけど。
298デフォルトの名無しさん:2011/10/26(水) 20:16:54.42
NSString *str; とかの * はオブジェクトを表すお約束だと思えばポインタ分からなくても大丈夫だったりするんじゃないかな。
(で、error:(NSError **)error ではまる。)
299デフォルトの名無しさん:2011/10/26(水) 22:04:46.92
たまに、Appleのソースでも、->演算子をみかけたりするけどな。
300デフォルトの名無しさん:2011/10/26(水) 22:14:38.37
他人が書いたコードを読めないっていうのは、勉強する上でも圧倒的に不利だね。
301デフォルトの名無しさん:2011/10/26(水) 22:37:28.00
rubyCocoaとかのLLバインドが初学者向けに正式に定着すりゃ良いんだけどねえ
302デフォルトの名無しさん:2011/10/27(木) 05:16:00.94
>>298
>(で、error:(NSError **)error ではまる。)

まさに、それどういう意味なのかな?
303デフォルトの名無しさん:2011/10/27(木) 07:55:25.90
普通にオブジェクトが参照で
変数に入れれる言語が多いしね
扱い違うのは混乱するのかね
STよりにF-Scriptみたいなの欲しいね
304デフォルトの名無しさん:2011/10/27(木) 09:19:53.29
>>293
そういう話をしているのではなくて

「プログラミング未経験者なんだけどそういう人にお勧めの本はない?」
に対して「Cの入門書やってろ!」から入るからおかしな事になってるんだろう、

まあ、そういう本でオススメできるのが無いと言うのが一番問題なんだけど。

C++だってCの知識は必要だけどだからといっても未経験者がC++を学ぶ為にいきなり読み始める
事を前提とした本はあるだろ。そうでないと目的に到達する前に力つきるよ。

例えば、K&Rが良いと聞いてこれを読み始めてXcodeでのhello world!にたどりつけない人もいる気がする。
305デフォルトの名無しさん:2011/10/27(木) 10:13:03.10
お前何十年も修行して達人にでもなるのを待ってから戦場に出るつもりか?
気の長なげェ話だな

ベルセルク 第24巻より
306デフォルトの名無しさん:2011/10/27(木) 12:15:06.03
戦わずして勝つ…!

ニートより
307デフォルトの名無しさん:2011/10/27(木) 12:48:49.80
果報は寝て待つ。

生活保護受給者より
308デフォルトの名無しさん:2011/10/27(木) 14:09:59.88
目的意識と行動力が強い人なら
とっくに開発環境とサンプルコードダウンロードして
見よう見まねで作り始めてるさ
309デフォルトの名無しさん:2011/10/28(金) 04:01:03.09
まともな判断力があるならiOS/Androidやるかな・・いまは
310デフォルトの名無しさん:2011/10/28(金) 10:04:19.52
iOSで動作するAndroidってでないかなぁ。
技術的には可能だと思うけど。
311デフォルトの名無しさん:2011/10/28(金) 10:11:56.48
仮想環境?
312デフォルトの名無しさん:2011/10/28(金) 20:08:56.79
Wine(Win32 API over POSIX)みたいなものかな?

個人的には、逆にAndroidで動作するiOSが面白そうに思える
あるいはCocoa over Windowsでもいい
技術的には可能なはず....(誰がやるん?という話は置いといて)
GNUstepはWindows版もあるけど、なかなか安定していない

PDA(あるいはTablet device)だと、GNUstepをベースにした
mGSTEPという軽量版があって、これはSHARP Zaurs等で動く
ただしXlib前提なので、それがAndroid移植のネックになるかも
313デフォルトの名無しさん:2011/10/28(金) 20:12:00.62
bsd系のOSにはlinuxのエミュレーションがあったりするから、やれば出来そうだね。
314デフォルトの名無しさん:2011/10/28(金) 20:14:31.04
Android上で動作するiOSって難しいと思うなぁ。
エミュレータレベルなら出来そうだけど。

iOS上のAndroidは比較的簡単じゃね?
Android端末はLinuxにAndroidスタックをポーティングしてる。
iOSにもポーティングできるだろ。
しかもオープンソースだし。
315デフォルトの名無しさん:2011/10/28(金) 21:42:33.50
技術的には可能でもアポーが許可しないよ。Adobe Flashと同じ様に。
316デフォルトの名無しさん:2011/10/28(金) 23:08:40.21
>>314
階層化アーキテクチャという言葉を知っているかい?

AndroidがスタックしているのはLinuxカーネル上であって
(POSIX互換な)Linux API上ではない。残念ながらiOSは
クローズソースだから、外の人はカーネルIFは触れない
従って、Androidは対Linuxには移植が容易でも
iOS上への移植は技術的に困難を極める

後は仮想環境だけど、期待される性能を出すのは(おそらく)困難だろう

オープンソースだから何でもできると考えるのは浅はかな素人思考
317デフォルトの名無しさん:2011/10/28(金) 23:10:24.95
脱獄しちゃえばJAVA走るしiDroidなんてのもあるから光明ありそうだけど、Appleのお墨付きは絶望的だろうねえ
318デフォルトの名無しさん:2011/10/28(金) 23:16:56.37
Androidはとっととx86出せと。ポーティングはあるが、3系がなくて片手落ちだ。
319デフォルトの名無しさん:2011/10/28(金) 23:17:25.20
>>316
bsd系のOSってlinuxのバイナリをそのまま動かすための機能が入ってるのが多いけど、
それはlinuxのカーネルインターフェイスをエミュレートするものだよ。
だから同じような方式で出来そうなもんだけどね。
320デフォルトの名無しさん:2011/10/28(金) 23:24:02.49
>>312
>あるいはCocoa over Windowsでもいい
YellowBox for Windows?
わりと安定して動いてたんだけどね。まあ、方向性が違っちゃったって事で。

321デフォルトの名無しさん:2011/10/28(金) 23:30:50.26
>>319
階層化アーキテクチャという言葉を知っていますか?

BSDのLinuxエミュレーションはBSDカーネルIFが公開されていて、
しかもBSDカーネルのコード自身もオープンだから実現できた技術
どちらもUNIX由来のカーネルIFでカーネル空間内で実行されるから、
一般的な用途ではまず支障のない性能(低オーバヘッド)を達成できた

カーネルIFが公開されていないiOSとは、まったく事情が異なりますヨ
322デフォルトの名無しさん:2011/10/28(金) 23:37:58.26
>>321
iOSのカーネルってXNUじゃないの?
323デフォルトの名無しさん:2011/10/28(金) 23:41:41.28
いや、自分はiOSハッカーとかそういう類の人じゃないからよくしらないけどね。
JBの仕掛けを作ってる人たちはその気になればそれなりにやれるんじゃないのかと思って。
324デフォルトの名無しさん:2011/10/29(土) 06:08:16.09
>>321
AndroidがLinuxカーネルにポーティングされてるからって、iOSでもカーネルにポーティングしなきゃならんわけではなかろ?
Androidの下側のインターフェイスは公開されてるんだから、階層が違っても可能だと思うがなぁ。
確かにパフォーマンスは期待できないかもしれないが。
325デフォルトの名無しさん:2011/10/29(土) 08:00:45.98
「階層化アーキテクチャという言葉を知っていますか?」
と言っておけば取り敢えず何か言った気になれるということを学習した
326デフォルトの名無しさん:2011/10/29(土) 11:46:57.99
試してないけどin-the-boxていう
DalvikのiOSポートがあるね
327デフォルトの名無しさん:2011/10/31(月) 22:10:34.20
>>326
インストールしてみた
デモの通りにjavaのclassをdxしたjarが動いた
Hello Worldなw
328デフォルトの名無しさん:2011/10/31(月) 22:16:25.02
>>321
カーネルインターフェイスってなんだよw
Androidのアプリは基本vmで動いてるんだし
libcなどのライブラリもある
まるごとAndroidのシステムを動かす必要はないんだしな
329デフォルトの名無しさん:2011/10/31(月) 22:17:58.76
まだ続いててワロタ
330デフォルトの名無しさん:2011/11/01(火) 08:14:42.13
必死で反論を考えて痛んだろw
331デフォルトの名無しさん:2011/11/01(火) 21:09:15.58
初めて見たとき、@" "とか[]とか*とかで、なんか気持ち悪い!って思いましたが。

やってみるといいですねこれ。
332デフォルトの名無しさん:2011/11/02(水) 12:37:24.21
NetHack厨だった俺には特に違和感なかった。
333デフォルトの名無しさん:2011/11/14(月) 22:37:26.50
シングルトンインスタンスの作成
http://developer.apple.com/jp/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/chapter_3_section_10.html

このListing 2-15 シングルトンの実装の最後に
「必要に応じて割り当てと初期化を通じて他のインスタンスを作成する機能も必要になることがあります。そのような場合は、Listing 2-15に示したようにallocWithZone:以降の各メソッドをオーバーライドしません。」
ってあるんですが、
このシングルトンにプロパティを持たせる場合は「+ (MyGizmoClass*)sharedManager」だけ残して後は消してね。って意味でしょうか?
その場合、どうやってプロパティを初期化するんでしょうか?
334デフォルトの名無しさん:2011/11/14(月) 23:21:21.21
>>333
> 「+ (MyGizmoClass*)sharedManager」だけ残して後は消してね。って意味でしょうか?

そういう意味だと思います。

> このシングルトンにプロパティを持たせる場合は...その場合、どうやってプロパティを初期化するんでしょうか?

で、そのプロパティの話はどこから出て来たんだ?
まあ、プロパティの初期化なら、単純にinit...メソッド書くだけだけど?
335デフォルトの名無しさん:2011/11/15(火) 00:18:04.53
>>333
>>334 氏も触れているが、プロパティを持たせる件はどこから?
「インスタンスを作成する機能が必要な場合は」だよね。私には使いどころがイマイチわからないけど。

で、このドキュメントは英語版で更新されているので微妙に悩んだらそちらをあたってみる事もオススメ
します。実装も少し変わってるし。
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW32


336デフォルトの名無しさん:2011/11/15(火) 01:08:18.27
横からなんだが、
英語の方のsynchronizedが消えた理由と、
allocWithZoneでretainしているのに、copyWithZoneでしていない理由がワカラン
どうでもいいと言えば、それまでなんだけどさ
337デフォルトの名無しさん:2011/11/15(火) 08:46:22.78
プロパティってのはこのシングルトンのインタンス変数にアクセスするためのインターフェースの事です。
そのプロパティにアクセスした時の初期値を>>333のシングルトンのコードの場合、どこで初期化するば良いのか知りたかったのです。
シングルトンがインスタンス変数を持つ場合は>>333のコードの+ (id)allocWithZone:以降はいらないとなると
残った+ (MyGizmoClass*)sharedManagerの中で問題ってことですよね。
>>335の英語版ドキュメントの方が新しいので今後はそちらを参考にしょうと思います。

>>336
シングルトンなのでコピーさせないようにしてるのでは。
338デフォルトの名無しさん:2011/11/15(火) 09:23:49.53
そもそも、シングルトンを複数生成やコピーできないようにするコードって必要なの?
プログラマが気をつければ済む話じゃない? ARC に移行したら retain や release は使えないし。
まぁ大規模プロジェクトや不特定多数に使われるライブラリなら分かるけど。

って訳で、+ sharedXXX だけ定義して使ってる。
インスタンスが必要なければクラスメソッドで済ませちゃうし。
339デフォルトの名無しさん:2011/11/15(火) 09:27:12.68
>>336
実装が変わってるのは旧版だとアナライザちゃんが警告するんだけど?って文句が出たから
言ってみれば今のはアナライザちゃんを騙すためのごまかしが入ってる
340デフォルトの名無しさん:2011/11/15(火) 09:36:00.88
>>338
俺もそんな感じで使ってる。趣味開発なら問題無いしな。

>>339
なるほど。納得した。
でもsynchronizedまで外していいのかね。
341デフォルトの名無しさん:2011/11/15(火) 10:33:21.52
>>338
別のクラスの中に埋めたりした時にもシングルトンである事を保証したいような時に使うかな?
シングルトンなオブジェクトを別のオブジェクトに埋めないように気をつけるか、
埋めたオブジェクトを複数生成したりしなければ問題ないかと。

でも、これらに気をつけながら使うぐらいならわざわざシングルトンの実装はしないな。
342デフォルトの名無しさん:2011/11/15(火) 11:52:35.79
>>341
埋めるってどうやって? C++ なら分かるけど、ObjC だとポインタで持つしかないよね? サブクラスのこと?
343デフォルトの名無しさん:2011/11/15(火) 19:40:25.28
>>337
> プロパティってのはこのシングルトンのインタンス変数にアクセスするためのインターフェースの事です。

なんか、「プロパティ」と「インスタンス変数」と「インターフェース」の言葉の意味をどう解釈して良いのか分からないぐらい、意味不明な内容なのだが...

普通に考えると、シングルトン・オブジェクトにアクセスするインターフェースは、+ (MyGizmoClass*)sharedManagerということになると思うのだが。
344デフォルトの名無しさん:2011/11/15(火) 20:39:14.03
>>343
また横からなんだが、
@interface Singleton : NSObject {
int value;
}
+ (id)sharedInstance;
@property int value;
@end
ならvalueプロパティが、インスタンス変数valueにアクセスするインターフェースになるんじゃ

それと今は、
NSFileManagerのように、defaultManagerとalloc-initで得られるインスタンスが異なるから、
そういうケースでalloc以降をオーバーライドすると、allocしたやつがreleaseできなくなるって話だよね?
プロパティ持たせるだけなら、alloc以降もオーバーライドしないといかんし。
345デフォルトの名無しさん:2011/11/15(火) 20:55:39.70
>>344
そういうことなら、結局のところ、シングルトンのプロパティはinit...メソッドの中で初期化すればいい。
という話でいいのかな?
346デフォルトの名無しさん:2011/11/15(火) 22:08:05.03
>>345
alloc-initでshared...と同じインスタンスを返す仕様だと、
initをオーバーライドしないと、alloc-initで取得した場合に、
初期化済みのインスタンスに再度親クラスのinitを呼ぶことになるから、
それが嫌なら、何らかの対策は必要になるんじゃないかな。
NSObjectのinitなら単にself返すだけとドキュメントに書いてあるけどね。
347700:2011/11/16(水) 10:32:58.96
これからiPhone/iPodのアプリの開発をはじめたいんだけど、
端末は第三世代と第四世代の2つ(どっちかをiPhone、もう片方がiPod Touch)
があればいいのかな?
348デフォルトの名無しさん:2011/11/16(水) 10:52:47.63
スレ違いだから良く分からんが全部持っとけばいいんじゃね?
ObjCがどれでも使えるのは間違いないよ
349デフォルトの名無しさん:2011/11/16(水) 21:45:17.31
iPhoneアプリのInstagramみたいにiOS5のTwitter機能使いつつ投稿クライアント名を任意にしたいんだけど、どうすればいいの?教えてエロい人
350デフォルトの名無しさん:2011/11/20(日) 05:27:53.65
勉強してみるかな
351デフォルトの名無しさん:2011/11/20(日) 16:07:25.96
UIView.hにある以下は何を表しているのでしょうか?
@interfaceは class : supper class という書き方しか知らないのですが。

@interface UIView(UIViewGeometry)
352デフォルトの名無しさん:2011/11/20(日) 16:48:17.24
353デフォルトの名無しさん:2011/11/23(水) 17:23:22.58
windows7 でのGNUStepのgccにてobjective-cなのですが、
@autoreleasepool { }ブロックがコンパイルできなくて困っています。
これがコンパイルしたいコードです
//main.m
#import <Foundation/Foundation.h>

int main(void)
{
@autoreleasepool {
id obj = [[[NSObject alloc] init] autorelease];
}
return 0;
}

Makefileです
main.exe: main.o
gcc $^ -o $@ -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base -enable-auto-import
main.o: main.m
gcc -c -o $@ $^ -I /GNUstep/System/Library/Headers -fconstant-string-class=NSConstantString

clean:
@rm -rf *.exe *.o
354353 :2011/11/23(水) 17:25:18.76
エラー内容です。
main.m: In function 'main':
main.m:6:2: error: stray '@' in program
main.m:6:3: error: 'autoreleasepool' undeclared (first use in this function)
main.m:6:3: note: each undeclared identifier is reported only once for each func
tion it appears in
main.m:6:19: error: expected ';' before '{' token
355デフォルトの名無しさん:2011/11/23(水) 17:31:23.78
autoreleasepoolやめて手で書けば
356デフォルトの名無しさん:2011/11/23(水) 17:34:49.11
>>353
blocksにはClangが必要
357353 :2011/11/23(水) 17:38:55.56
>>356
ありがとうございます。
そうなんですか・・・
MaxでのXCodeでもそうなんですか?
358デフォルトの名無しさん:2011/11/23(水) 17:40:30.07
>>356
なんでBlocks? ARCの話だろ
359デフォルトの名無しさん:2011/11/23(水) 17:41:54.49
ARCの話ともちょっと違うかも
360353 :2011/11/23(水) 18:31:18.30
調べてみたらMaxでも新しいXCodeなら使える?らしいですね
ttp://stackoverflow.com/questions/7926843/a-fail-concerning-the-expression-autoreleasepool
手でNSAuto〜でやることにします。
ありがとうございました。
361デフォルトの名無しさん:2011/11/23(水) 20:00:10.17
gccを使わず、clangにすればいい。
362デフォルトの名無しさん:2011/11/23(水) 21:18:00.25
winでgnu stepでgccとかって
なんかの修行?
363デフォルトの名無しさん:2011/11/23(水) 22:04:37.76
>>362
今手元にMacが無いんですが、今後objective-cやる予定があって、
その練習です。なのでこの環境でアプリ作る予定ではないです。

>>361
clangでやったらヘッダーが無いとか色々怒られて面倒になってしまいました
364デフォルトの名無しさん:2011/11/23(水) 22:06:06.40
勉強なら仮想環境(VMWare)上でやればいい
365デフォルトの名無しさん:2011/11/23(水) 22:52:42.88
>>364
う〜んどうやらグレーな感じですし、今回はやめておきます。
366デフォルトの名無しさん:2011/11/23(水) 23:07:28.63
プログラミングで遊ぶのにMacいいよ
いい機会だし一台手に入れてみては
367デフォルトの名無しさん:2011/11/23(水) 23:13:34.83
>>366
お金たまったら手に入れたいな〜と妄想中ですわぁ
368デフォルトの名無しさん:2011/11/24(木) 01:08:58.21
Mac Mini買っとき
369デフォルトの名無しさん:2011/11/24(木) 09:49:52.99
miniは、なかなかよい
370デフォルトの名無しさん:2011/11/24(木) 23:51:19.37
色の配列を作成したい。

Color list[] = { "ffffff", "ffcccc" };

みたいなことをしたい。
371デフォルトの名無しさん:2011/11/25(金) 00:15:01.31
共通の定数を定義したcommon.hを作成し、
他の複数のファイルから#importするとリンクエラーになる。
回避策ない?
372デフォルトの名無しさん:2011/11/25(金) 00:25:13.62
なにをどんな風に書いてんの?
373デフォルトの名無しさん:2011/11/25(金) 02:20:26.39
インポートは何回やってもいいはずだが、
インクルードはだめだけど
374デフォルトの名無しさん:2011/11/25(金) 02:29:13.98
同じ定義が複数のファイルに含まれる事になってduplicate symbolとかそんな話でしょ。
375デフォルトの名無しさん:2011/11/25(金) 18:25:59.32
extern使え
376デフォルトの名無しさん:2011/11/25(金) 21:42:59.95

377デフォルトの名無しさん:2011/12/01(木) 00:06:34.95
クラスの引数のラベルって第2引数からしかつけられないのかね?
第1引数はメソッド名がラベル扱い?
378デフォルトの名無しさん:2011/12/01(木) 00:22:32.62
VBとかの引数ラベルとはまた別の考えの物だから
379デフォルトの名無しさん:2011/12/01(木) 00:23:01.83
137:デフォルトの名無しさん :sage:2010/10/17(日) 12:28:41
メソッドの第一引数のコロンの前はメソッド名なのに、第二引数以降はコロンの前がラベルになってる。

アンバランスな気がするんだけど、言語デザイン的に理由があるのかね。

コロンを縦に並べたときの見栄えのためだけに、第一引数の前のラベルはなかったことにしたの?

138:デフォルトの名無しさん :sage:2010/10/17(日) 14:07:02
全部メソッド名なんだが。
ラベルなんてものはない。

140:デフォルトの名無しさん :sage:2010/10/18(月) 10:28:46
http://developer.apple.com/jp/documentation/cocoa/conceptual/objectivec/Articles/chapter_2_section_3.html

ラベルって呼ぶんだよね、実は。
便宜上そう呼んでるだけっぽいけど

143:デフォルトの名無しさん :sage:2010/10/18(月) 14:00:40
>>140
ObjCの専門用語としてラベルって言ってるんじゃなくて
日常英語としてラベルって書いてるんだろうね
380デフォルトの名無しさん:2011/12/01(木) 01:37:00.20
構文では単にセレクタとなってるね
しかしそもそも第一引数にも:ついてる
381デフォルトの名無しさん:2011/12/01(木) 01:39:55.72
allocみたいな:がない奴は単項セレクタで引数ではない
382デフォルトの名無しさん:2011/12/06(火) 09:23:40.61
CもC++もObjCも慣れたらどうってことは無いな
ObjCは活躍の場が限られすぎるところが問題だが
383デフォルトの名無しさん:2011/12/06(火) 11:08:23.45
勝谷君
384デフォルトの名無しさん:2011/12/06(火) 13:10:38.28
やってみる
385デフォルトの名無しさん:2011/12/06(火) 16:48:51.89
質問です。
ObjCではシングルトンインスタンスは作りっぱなしのコードばかり見つかるんですが、
それはOSがお片付けしてね!って思想ですか?
もちろんメモリ以外のリソースは、
それ用のメソッドを用意しなければならないですが。
386デフォルトの名無しさん:2011/12/06(火) 16:52:33.36
シングルトンを一々解放する必要がある設計ってなによ?
387デフォルトの名無しさん:2011/12/06(火) 17:20:59.95
>>385
他の言語だといちいち自分で解放するの?
388385:2011/12/06(火) 17:26:03.67
CやC++でヒープに確保していたシングルトンインスタンスは解放していたので。
ただ解放しないという方針でよさそうですね。
ありがとうございました。
389デフォルトの名無しさん:2011/12/06(火) 17:53:40.59
自力リファレンスカウンタ方式なら通常運用で解放できるんじゃね?

static long refCount = 0;
@implementation Hoge
static Hoge *sharedInstance = nil;
- (id)allocWithZone:(NSZone *)zone
{
refCount++;
// 以下テンプレ通り
}
- (id)retain
{
refCount++;
return self;
}
- (id)autorelease
{
[[[Foo alloc] initWithObj:self] autorelease];
return self;
}
- (oneway void)release
{
if(--refCount == 0) [self dealloc]:
}
@end
@implementation Foo
- (id)initWithObj:(id)inObj { obj = [inObj retain]; }
-(void)dealloc { [obj release]; [super dealloc]; }
@end
とか
390デフォルトの名無しさん:2011/12/06(火) 19:05:51.90
@imp...
+ (id)alloc...{
if (!sharedInstance) { ... }
...
}
- (void)dealloc {
...
sharedInstance = nil;
}
...
@end
参照カウンタはNSObject任せでいいような。
391385:2011/12/06(火) 21:14:15.76
>>389-390
状況によってはこっちの挙動のがいい場合もありそうですね
ありがとうございます。
392デフォルトの名無しさん:2011/12/06(火) 23:27:40.83
>>389
面白いなあ。キミ頭おかしいんじゃね?
自力リファレンスカウンタ(笑)
393デフォルトの名無しさん:2011/12/10(土) 15:24:50.29
UDPプログラムを作っている時、エラーが出てきてとれません。

参考サイト
http://www.geekpage.jp/programming/macosX-network/udp.php

エラーが出ているところ
addr.sin_addr.s_addr = inet_addr("127.0.0.1");

エラー内容
file://localhost/Users/user1/Desktop/wol/wol/Wol.m: warning: Semantic Issue: Implicit declaration of function 'inet_addr' is invalid in C99

なにか追加したらいいんでしょうか?
394デフォルトの名無しさん:2011/12/10(土) 15:48:59.03
#include <arpa/inet.h>
395デフォルトの名無しさん:2011/12/10(土) 16:06:42.01
>>394
ありがとうございました。それで消えました。
396デフォルトの名無しさん:2011/12/10(土) 16:13:02.79
スレチだしエラーくらい自分で読めって感じだけどな。
397デフォルトの名無しさん:2011/12/10(土) 16:31:48.37
ググればすぐに解決することを聞いてくる奴は無能以下だよな
398デフォルトの名無しさん:2011/12/10(土) 21:20:09.88
>>397
未満だろ
無能に謝れ
399デフォルトの名無しさん:2011/12/10(土) 21:35:34.54
文脈をみれば以下で自然。
予想以下とか、予想を含まないから。
400デフォルトの名無しさん:2011/12/10(土) 23:47:57.37
困った、バカだ
401デフォルトの名無しさん:2011/12/11(日) 10:33:32.17
以下でOK
402デフォルトの名無しさん:2011/12/14(水) 11:35:33.11
すみません。教えてください。
(1)を(2)に書き換えるべきか悩んでいるのですが、(2)のほうがメモリの効率は良いのでしょうか?
(NSStringの割り当てはメモリに残り続けると何かで読んだので、気になっています)
それとも、これはあんまり意味のない書き換えで、メモリがきついなら、ループの何回かに一回、
NSAutoreleasePoolを挟んでおけばおkですか?

(1)NSString
for(int i = 0; i < newDataArray.count; i = i + 1) {
 NSString *threadString = [newDataArray objectAtIndex:i];
 <中略>
}

(2)NSMutableString
NSMutableString *threadString = [[NSMutableString alloc] init];
for(int i = 0; i < newDataArray.count; i = i + 1) {
 [threadString setString:[newDataArray objectAtIndex:i]];
 <中略>
}
[threadString release];
403デフォルトの名無しさん:2011/12/14(水) 11:40:38.13
(1) の方が良いに決まってるだろ。

> [threadString setString:[newDataArray objectAtIndex:i]];
Array から取り出した String を一々コピーしてどうする。
404402:2011/12/14(水) 11:51:41.88
>>403
ありがとうございます。
メモリに残るというのは、NSString *msg = @"hoge"; のように定数を設定した場合の話ですよね。
助かりました。
405デフォルトの名無しさん:2011/12/14(水) 11:53:40.04
処理が要素を読むだけなら(1)の一択

>NSStringの割り当てはメモリに残り続けると何かで読んだので、
意味が分からない NSStringリテラルの話?


あと、高速列挙使った方がいいかな

int i = 0; // インデックスが必要なら
for(NSString *threadString in newDataArray) {
// なにかする
i++; // インデックスが必要なら
}

>NSAutoreleasePoolを挟んでおけばおkですか?
うん
406402:2011/12/14(水) 12:13:56.07
>意味が分からない NSStringリテラルの話?
リテラルの話です。仕様の細かい話を読んで、理解しきれず変に混乱してしまったみたいです。スマソ。

>あと、高速列挙使った方がいいかな
使ってなかった。ありがとー!
407デフォルトの名無しさん:2011/12/18(日) 07:48:15.32
plistファイルを読み込みたく、以下のように記述しました

NSString *path = [[NSBundle mainBundle] pathForResource:@"hogehoge" ofType:@"plist"];
NSArray *array = [NSArray arrayWithContentsOfFile:path];

しかし、これだとerror: initializer element is not constantがでます
そういう場合はどこに原因があるのでしょうか
408デフォルトの名無しさん:2011/12/18(日) 08:42:27.37
>>407
エラーメッセージでぐぐれ。

書く内容の問題ではなく、書く場所の問題。メソッド (や関数) の中に書けば OK。
409デフォルトの名無しさん:2011/12/20(火) 22:02:15.93
これで独立できる

売るものはスマートフォンアプリ WEBサイト運営
サーバーはクラウド VPS
電話はスマートフォンSkype
オフィスは地方にプレハブ型の格安高性能オフィスを建て(300万〜500万)
レンタル自習室&シェアオフィスで収入を得ながらそこで開発する
http://bit.ly/iLIpJa
http://bit.ly/m7nkew
410デフォルトの名無しさん:2011/12/21(水) 00:31:16.55
地方でシェアオフィスが成功すると信じるあなたは事業失敗に突き進むと予言しときます
411デフォルトの名無しさん:2011/12/21(水) 08:17:47.23
>>410
それ、定期的に流れるスパムだよ
412デフォルトの名無しさん:2011/12/21(水) 17:21:27.29
クラスの中で変数をセットする場合って、たとえば、
name = @”hoge”; ではなく、self.name = @”hoge”; もしくは、[self setName:@”hoge”];とやるべき?
publicな変数にそうしたほうがいいのは分かるけど、作法として、privateな変数にまでそうやるべきもの?
privateを含む全ての変数に@property,@synthesizeを設定するのは、ちょっと面倒に感じるのだけど。
413デフォルトの名無しさん:2011/12/21(水) 17:31:31.47
オーナーシップ
GC、ARC
で答えが微妙に違う


KVO発動させなくていいなら割とどうでもいい
414412:2011/12/21(水) 20:20:34.18
>>413
>GC、ARC
iOS用に書いてたんだけど、ARCになるとルール全然違うのね。うへえ。
>KVO発動させなくていいなら割とどうでもいい
参考になった。ありがとう。
415デフォルトの名無しさん:2011/12/21(水) 21:13:11.69
半端な知識でインスタンス変数に生で代入したりするとメモリリークしまくる
だけだから素直にプロパティ使った方がいいと思うけどね
モダンランタイムになってから自分で変数用意してやる必要無いし
手間としてはそんな変わらん
416デフォルトの名無しさん:2011/12/21(水) 21:13:55.54
まあARC使うならあんまり気にしなくていいけど
417デフォルトの名無しさん:2011/12/21(水) 21:48:56.85
>>411
そんなスパムにコメントしたあたくしがこっぱずかしー
418デフォルトの名無しさん:2011/12/21(水) 22:44:48.35
穴を見つけて入れ!
419デフォルトの名無しさん:2011/12/22(木) 00:18:13.73
アホな質問でごめん。以下のfuncで
messageの解放がはじまるのは、forループが終わった後で、
regexpの解放がはじまるのは、funcを抜けた後という理解で合ってる?
つまり、スコープ内でのautoreleaseオブジェクトの生存が保証されてるのか、ということなんだけど。

たとえばfuncをバックグラウンドで実行させている途中でメモリの解放がかかったときのために、
(まさか、いらないとは思うんだけど)関数内の頭と尻尾で手動でallocとreleaseしたほうがよいのかとか混乱中。

- (void)func:(NSArray *)sourceArray pattern:(NSString *)pattern relace:(NSString *)replace {
 NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error];
 for(NSString *message in sourceArray) {
  NSString *replaced = [regexp stringByReplacingMatchesInString:message options:0 range:NSMakeRange(0,message.length) withTemplate:replace];
  /* 中略 */
 }
}
420デフォルトの名無しさん:2011/12/22(木) 00:42:02.76
message は retain されてないから、解放も糞もない。
regexp の解放は、func を呼び出す状況に依るだろう。
421デフォルトの名無しさん:2011/12/22(木) 01:15:47.16
>>419
ARC かどうかで微妙に違う。ARC 無効の場合、
・message は sourceArray が retain してるものを参照してるので、
 sourceArray から削除されない限り有効。
・regexp は一番内側の autorelease pool が解放されない限り有効。
 自分でわざわざ autorelease pool を生成/解放しない限り、
 スコープを抜けても有効。特に、return してもまだ生きてる。

ARC の場合、regexp や message などの変数はデフォルト __strong なので、
代入した時点で retain され、スコープから抜ける時に release される。
(スコープから抜けても sourceArray や autorelease pool が所有権を
持ってるので、ただちに解放される訳ではない。)
422419:2011/12/22(木) 03:15:34.82
>>420
>>421
ありがとう。もうちょっと、教えて。すまん。

>・regexp は一番内側の autorelease pool が解放されない限り有効。
つまり、メインスレッドでイベントループが進行しても、バックグランドで実行中のfuncのなかの
(regexpが登録されている)内側のautoreleaseプールが解放されることはない?
自分でわざわざautorelease poolを作成していない場合の話として。

それは、メインスレッドで解放されるプールと、regexpの登録されているプールの場所が違うからか、
それとも、スコープを抜けないとregexpのrelease処理を実行しないからなのか、どっちなんだろう?
#なんとなくメインスレッドが進行すると、1つしかないプールを空っぽにされそうなイメージがあるのだけど

早くARCに移ったほうがいい気がしてきた。
423デフォルトの名無しさん:2011/12/22(木) 04:37:47.37
・autoreleasepoolはthread local
・main thread以外のthreadのpoolは自分でつくらないといけない
424419:2011/12/22(木) 13:52:01.64
>>423
ありがとう。ここまで教えてもらって、やっと分かってきた。
ARCを使わない場合に、サブスレッドでNSAutoreleasePoolを自分で作らないといけないのは、以下の全部?

(1)NSThread detachNewThreadSelector:@selector
(2)self performSelector:@selector
(3)GCD:dispatch_async
(4)非同期通信:NSURLConnection connectionWithRequest:request delegate:delegate

(1),(2)で、自分でプール管理しないといけないのは分かる。(3),(4)の場合、自動的にNSAutoreleasePoolを用意してくれるのかな?
質問のバックグラウンド処理は(4)の後のconnectionDidFinishLoadingでの処理なんだけど。
425デフォルトの名無しさん:2011/12/22(木) 14:00:35.91
Objective-CでCGI書けますか?
426デフォルトの名無しさん:2011/12/22(木) 14:10:37.24
駆けます。
427デフォルトの名無しさん:2011/12/22(木) 14:12:53.04
ありがとうございます

Hello WorldのCGIだけでも教えてください orz
428デフォルトの名無しさん:2011/12/22(木) 14:28:26.57
int main() {
printf("Hello World\n");
}
429デフォルトの名無しさん:2011/12/22(木) 16:15:14.45
こんにちわ、はじめたばっかりでよくわからないんですが、xcode4.2で、外部ファイルはどうすればいいですか?
4.1以下はリソースフォルダの中に入れれば良いみたいですが、4.2で初めて触りだしたので、よくわかっていません。
ネット上にも情報少なく…。お願いします。
430デフォルトの名無しさん:2011/12/22(木) 16:20:41.98
スレチ
431デフォルトの名無しさん:2011/12/22(木) 16:36:58.80
>>424
「いけない」のは 1 だけ。

2: そもそもスレッド関係ない。-[NSObject performSelector:] は呼び出したスレッドでの実行。
performSelectorInBackground:withObject:のことをいっているのならば
(1と同様に)自分で作らないといけない。

3: GCDのqueueがプールを用意しているから、自分では作らなくてもよい。
ただし、そのプール内のオブジェクトがいつ解放されるのかは保証がないので、
オブジェクトを大量に作成する場合などには自前で用意したほうがよいこともある。

4: これもスレッドは関係ない。
NSURLConnectionはスレッドではなくRunLoopによるイベント駆動型の非同期処理。
-[NSURLConnectionDelegate connectionDidFinishLoading:]は
+[NSURLConnection connectionWithRequest:delegate:]を実行したのと同じスレッドで呼ばれる。
432419:2011/12/22(木) 21:36:40.25
>>431
>2: そもそもスレッド関係ない。-[NSObject performSelector:] は呼び出したスレッドでの実行
>+[NSURLConnection connectionWithRequest:delegate:]を実行したのと同じスレッドで呼ばれる。
このあたりが、ごっちゃになってた。

丁寧に教えてくれて、ありがとう。かなり助かった。
433デフォルトの名無しさん:2011/12/24(土) 19:23:51.25
高速列挙では順番が保証されないというのを見かけて気になってるのだけど、
以下のような単純なarrayやmutableArrayでも、高速列挙で順番が狂うことがあるの?
こういう場合なら順番が狂うという例を教えてもらえないかな。

NSArray *array = [NSArray arrayWithObjects: @”One”, @”Two”, @”Three”, @”Four”, nil];
for(NSString *string in array) { NSLog(@"%@", string); }

NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:array];
[mutableArray addObject:@”Five”];
for(NSString *string in multableArray) { NSLog(@”%@”, string); }
434デフォルトの名無しさん:2011/12/24(土) 19:55:56.82
> 高速列挙では順番が保証されないというのを見かけて

何処で見かけたの?
435433:2011/12/24(土) 20:19:16.08
>>434
ttp://d.hatena.ne.jp/watanata2000/20110104/1294108945
このブログの記事。なんか自分が勘違いしてるのかもしれない。
436デフォルトの名無しさん:2011/12/24(土) 20:58:19.47
配列なら保証されてると思うけど、どうなんだろね。

http://developer.apple.com/jp/devcenter/ios/library/documentation/ObjC.pdf
「明確な順序を持つコレクションや列挙子(配列から派生したNSArrayインスタンスやNSEnumerator インスタンス)の場合、
列挙はその順序に従って行われるため、必要な場合は反復をカウントする だけでコレクション内を指す正しいインデックスが得られます。」

「For collections or enumerators that have a well-defined order―such as NSArray or NSEnumerator instance derived from an array―
the enumeration proceeds in that order, so simply counting iterations will give you the proper index into the collection if you need it.」

詳解Objective-C2.0の2刷にも「配列の場合は先頭から順番」と書いてあるけど、

翻訳がミスってるのか、実装がおかしいか、何か勘違いがあるのか、最近変わったのかも。
437436:2011/12/24(土) 21:10:34.19
そのサイトのコードを見ると
for (UIScrollView *scrollView in self.scrollView.subviews) {

UIScrollView *scrollView = [self.scrollViews objectAtIndex:index];
だから、
高速列挙はsubviewsのviewをとってて、
もう一つはscrollViewsのオブジェクトを取得してるから、サイトに載せる時に書き間違えてなければ
高速列挙の方は
for (UIScrollView *scrollView in self.scrollViews) {
じゃないのかな。
subViewsがscrollViewsと同じかどうかはこれだけじゃわからないけど。
438デフォルトの名無しさん:2011/12/25(日) 07:09:32.06
>>436-437
ありがと。配列なら問題なさそうだけど、なんか気になるなあ
439デフォルトの名無しさん:2011/12/25(日) 17:47:58.73
荻原本の第3版が出てた。ARC関連が追加っぽい

荻原本
http://amazon.jp/dp/4797368276
440デフォルトの名無しさん:2011/12/26(月) 00:43:31.85
画面遷移するときのアニメーションで、『右から左方向にスライド』するプロパティが無いか探しています。
どこかのサンプルから拾ってきた画面遷移するメソッドなんですけど、
ソースに、いろいろプロパティを設定してみたのですが、その思うようなプロパティが見つからないです。

-(IBAction)showTableLight{
//使う変数
TLLightViewController *controller = [[TLLightViewController alloc] initWithNibName:@"TLLightViewController" bundle:nil];
//プロパティ色々
//controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; //横回転フリップ
//controller.modalTransitionStyle = UIModalTransitionStylePartialCurl; //ページ送り
//controller.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; //じわじわとみえてくる表示
//controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; //下から上方向にスライド表示
//controller.modalPresentationStyle = UIModalPresentationCurrentContext; //下から上方向にスライド表示
//controller.modalPresentationStyle = UIModalPresentationFormSheet; //下から上方向にポップアップでスライド表示
//controller.modalPresentationStyle = UIModalPresentationFullScreen; //下から上方向にスライド表示(画面全体)
//controller.modalPresentationStyle = UIModalPresentationPageSheet; //下から上方向にスライド表示(ページ全体)
//画面遷移
[self presentModalViewController:controller animated:YES];
//解放
//[controller release]; //xcode3迄
controller = nil;
}
441デフォルトの名無しさん:2011/12/26(月) 00:53:34.37
スレチ
442デフォルトの名無しさん:2011/12/26(月) 17:52:06.23
>>438
そのブログが阿呆なだけ
443デフォルトの名無しさん:2011/12/26(月) 17:55:45.72
何でWindowsに開発環境を用意してくれないのですか?
QuickTimeというksみたいなものはWindowsにあるのに何でですか?
444デフォルトの名無しさん:2011/12/26(月) 18:35:17.44
>>443
GNUStep
445デフォルトの名無しさん:2011/12/26(月) 18:44:11.61
>>443
MSがVisualStudio for Mac出してWindowsPhoneの開発ができるようになったら俺も賛同するよ
446デフォルトの名無しさん:2011/12/26(月) 18:56:46.83
>>445
ここに書くんだから「Appleは」なわけがなでしょ
こんな所にそんなこと書いても何の意味もないじゃん

まさか >443 はそこまで馬鹿じゃないでしょ?
447デフォルトの名無しさん:2011/12/28(水) 00:07:55.83
>>445
普通にVSなんていらねえわな
448デフォルトの名無しさん:2011/12/28(水) 02:23:20.52
2005くらいのVSはけっこう好きだな。
最近のはVSもXcodeも同じくらいイライラする。
449デフォルトの名無しさん:2011/12/28(水) 10:21:24.68
>>446
日本語で
450デフォルトの名無しさん:2011/12/28(水) 10:34:05.33
>>449
要点だけにすると

>443 スレ違いだボケ
451デフォルトの名無しさん:2011/12/28(水) 11:02:59.02
ocの開発環境の話題なのにスレ違いでもないと思うけど
452デフォルトの名無しさん:2011/12/28(水) 11:39:30.02
ここは言語のみでしょ。
453デフォルトの名無しさん:2011/12/28(水) 12:00:48.56
Cocoa等のフレームワークの話ならまだしも開発環境の話はすれ違いでしょう
フレームを望んでるなら釣れやすい新板の、Xcodeスレがあるし
454デフォルトの名無しさん:2011/12/28(水) 15:50:43.04
Cocoaどこの細道じゃ
455デフォルトの名無しさん:2011/12/29(木) 19:03:23.65
知らん
456デフォルトの名無しさん:2011/12/30(金) 22:03:06.26
perlみたいに、NSString *strのなかに直接文字列を放り込む方法ってない?
ダブルクオートを逐一変換するのは面倒なので。

$str =<<EOF;
[生文字列]
EOF

NSString *str = "[ダブルクオートを変換した文字列]";
457デフォルトの名無しさん:2011/12/30(金) 22:08:33.33
>>456
ない。
458デフォルトの名無しさん:2011/12/30(金) 22:52:24.85
その内 C++11 に導入された raw string リテラルも使えるようになるんじゃ
459456:2011/12/31(土) 00:51:50.38
>>457
ありがと
460デフォルトの名無しさん:2011/12/31(土) 02:04:00.13

MuchaSukebeObject Class reference

MSPanty Class

MSObject / MSGoods / MSPanty

- Example -

MSPanty *panty = [[MSPanty alloc]initWithPantyStyle:bikiniStyle];
panty.color = [MSColor romancePinkColor ];
panty.material = [MSMaterial materialWithsatin:0.6 silk:nil cotton:nil nylon:0.2 polyester 0.2 mesh:NO];
panty.size = smallSize;
panty.smell = [MSSmell lightCheeseSmell];
panty.stainOfCrotch = vaginalDischargeWithBrown;
[self.view addSubview:panty];
461デフォルトの名無しさん:2011/12/31(土) 02:43:29.78
viewかよ!!
462 【大吉】 【569円】 :2012/01/01(日) 06:27:36.32
!
463デフォルトの名無しさん:2012/01/01(日) 11:10:11.78
>>461
あああ悔しー
CもObjective-Cも読めないー
面白さを理解したいー
こんな風にツッコミたいー
464デフォルトの名無しさん:2012/01/01(日) 15:12:25.87
>>460
こういう例とかセンスで本とかチュートリアル出してくれたら
習得が早いんじゃないかと真剣に思った。

465デフォルトの名無しさん:2012/01/01(日) 16:33:34.64
キモイ
466デフォルトの名無しさん:2012/01/01(日) 22:46:34.28
一般論として、(1)よりもゾーンを使う(2)のほうが動作は速い?
速度が速くなるのは、インスタンスのメンバ変数を頻繁に呼び出す場合?

(1)receivedData = [[NSMutableData alloc] init];
 commentArray = [[NSMutableArray alloc] init];
(2)receivedData = [[NSMutableData allocWithZone:[self zone]] init];
 commentArray = [[NSMutableArray allocWithZone:[self zone]] init];
467デフォルトの名無しさん:2012/01/02(月) 00:14:14.29
>>466
ゾーンなんて使ったことないし、普通は使う必要ないと思ってる。
468デフォルトの名無しさん:2012/01/02(月) 01:25:19.55
NSCreateZone()使ってゾーンを確保してページングが起こっても関連があるもの全部がオンメモリになるようにインスタンスを的確に確保すれば速くなるかもね
469466:2012/01/02(月) 05:16:50.75
>>467-468
なるほど。なんとなく感じが分かった。ありがと。
470デフォルトの名無しさん:2012/01/03(火) 04:41:25.22
NSRegularExpressionOptionsに
NSRegularExpressionCaseInsensitive, NSRegularExpressionDotMatchesLineSeparators
の両方を設定するは、どうやったらできる?

 NSRegularExpressionOptions options = NSRegularExpressionCaseInsensitive;
 NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:regexString options:options error:&error];
471デフォルトの名無しさん:2012/01/03(火) 06:09:54.00
論理和
472デフォルトの名無しさん:2012/01/03(火) 11:50:46.23
まあ、いまなら普通に足してもいいけど
473デフォルトの名無しさん:2012/01/03(火) 12:25:43.40
>>470
NSRegularExpressionOptions options = NSRegularExpressionCaseInsensitive | NSRegularExpressionDotMatchesLineSeparators;

>>471
論理和って普通 || を指すのでは? wikipedia によれば | は「ビット単位OR」らしい。

>>472
それは嫌。
474デフォルトの名無しさん:2012/01/03(火) 15:30:42.98
>>473
ORは論理和。ビット幅など関係ない。普通は|を意味するが||も含むと思う。
ただ条件式での優先度が違うでしょ。

>typedef NSUInteger NSMatchingOptions;
まあ足してもいいな。
475デフォルトの名無しさん:2012/01/03(火) 15:51:11.65
>>474
|| にはビット幅は関係ないけど、| には関係あるよ。

で、この手の演算には + や - ではなく、ちゃんと | や & を使うべき。
A | B で A と B の同じビットが立ってたら + だと違う結果になるから。
476デフォルトの名無しさん:2012/01/03(火) 16:05:11.67
>>475
>>473
>論理和って普通 || を指すのでは?
に関しての見解も聞かせてくれよ。
477デフォルトの名無しさん:2012/01/03(火) 16:35:28.82
>>474
>>typedef NSUInteger NSMatchingOptions;
>まあ足してもいいな。
今なら普通に足してもいいってのはちゃんとオプションの今の値を見て書いたんだよ。
型は関係ない
そのうち普通に足すとダメになるかもだし
478470:2012/01/03(火) 16:59:34.26
>471-477
ありがとう。

479デフォルトの名無しさん:2012/01/04(水) 03:26:05.31
UIlabelのpositionの取得方法ってありますか?
480デフォルトの名無しさん:2012/01/04(水) 07:27:16.65
>>479
positionってframeとかboundsの事か?
プロパティで(もちろんメッセージ送っても)取れるけどスレが微妙に違うな。
481デフォルトの名無しさん:2012/01/04(水) 09:00:23.18
>>479
Cocoaスレでも、同じこと聞いてたひとかえ?

こっち行ってみな。
[SDK]iPhoneアプリ開発初心者質問箱20[touch][iPad]
http://anago.2ch.net/test/read.cgi/mac/1321865528/
482デフォルトの名無しさん:2012/01/04(水) 12:50:28.01
>>480,481
レスありがとうございます。
移動してみます。

483デフォルトの名無しさん:2012/01/05(木) 05:38:28.22
この言語仕様が汚いから変えて欲しいな
シンプルにたのむぜ
484デフォルトの名無しさん:2012/01/05(木) 06:13:35.78
字面は汚いと思う
485デフォルトの名無しさん:2012/01/05(木) 14:01:56.09
了解で〜す
486デフォルトの名無しさん:2012/01/05(木) 22:57:19.00
>>483
むしろ、純粋にCをOOP化してる言語な気がするけどなぁ
487デフォルトの名無しさん:2012/01/05(木) 23:25:49.20
C++と比較すればなんて綺麗な言語仕様でしょう
488デフォルトの名無しさん:2012/01/05(木) 23:26:57.01
うむ
489デフォルトの名無しさん:2012/01/05(木) 23:31:36.94
第1034019283次OOP宗教戦争勃発か…
490デフォルトの名無しさん:2012/01/05(木) 23:48:55.47
 いい加減、SmalltalkにCをインラインに書く仕様がした方といいと思うけどな。
XCode4.0以降、実装は実質そうなっているぽいが?
491デフォルトの名無しさん:2012/01/05(木) 23:52:24.24
たとえば、今のObjCのどんなとこがいやなの?
492デフォルトの名無しさん:2012/01/06(金) 01:06:08.31
(ほとんどの言語がそうだけど)複数の返値を認めてほしいなあとか、思った。
493デフォルトの名無しさん:2012/01/06(金) 01:13:19.27
面倒がらずに構造体
エラーとか、別の意味のものを複数ならポインタで十分では
494デフォルトの名無しさん:2012/01/06(金) 01:18:18.31
メソッドに複数の戻り値を指定できると便利かもしれんけど、
もし仮にそういう仕様を実現する場合、戻り値の受け記述は
=だけでは表現できなくなっちゃうね

そう言う意味では、構造体を戻り値にした方が確かにしっくり来る
495493:2012/01/06(金) 01:25:07.91
luaなんかはこんな感じで=だけで複数戻り値できるけどね

x, y = func();

function func()
return 1, 2;
end
496デフォルトの名無しさん:2012/01/06(金) 01:27:11.79
>>495
なんということだ、その手があったか
便利すぎる。。
ところでluaって言語初めて聞いた。。
497デフォルトの名無しさん:2012/01/06(金) 01:30:17.14
PHPみたいに、list($a,$b,$c)=func(); じゃ駄目?
aString, bString, cString = [self getTripleStringWithIntA:aInt, bInt:bInt cInt:cInt];
とか出来ると凄く記述が楽になるんだけど。
498デフォルトの名無しさん:2012/01/06(金) 01:34:31.03
複数戻り値をもつ言語って結構あるんだな
逆に、カンマ区切りで複数戻り値表記ができる場合の
弊害って何かあんのかね…。
499493:2012/01/06(金) 01:40:03.49
>>497
そういう場合は大抵abcに関係があるだろうから、
構造体や辞書で表してもスッキリする気がする。

意味がバラバラなら、今度は順番を気にする必要が出てくる。
これは戻り値だけじゃなくて引数にも言えることだけど、
Objective-cはラベルが付いてるから。

だから、できることがそんなにメリットになるのかな。
できたらそれはそれで、使うだろうけど。
500デフォルトの名無しさん:2012/01/06(金) 01:43:57.01
>>499
確かにObjective-Cのメソッドメッセージの表現は、
各引数の意味とメソッド名をかねられる、まれにみる秀逸表現なのに、
複数戻り値にすることによって、結局、
「あれ?2番目の戻り値ってなんだっけ?」
的なことになっちゃうな
501デフォルトの名無しさん:2012/01/06(金) 02:00:48.52
[self age];
502デフォルトの名無しさん:2012/01/06(金) 02:14:04.07
言語仕様はともかく字面は高度に汚いと思う。
503デフォルトの名無しさん:2012/01/06(金) 02:15:06.27
>>502
どの辺が?
504デフォルトの名無しさん:2012/01/06(金) 02:15:30.59
Scheme で多値は割と便利だけど、Obj-Cで語るのはC言語に多値が導入されてからにしてくれ。
505デフォルトの名無しさん:2012/01/06(金) 02:16:04.40
>>504
たすかに
Obj-CはCのスーパーセットだからね
506デフォルトの名無しさん:2012/01/06(金) 02:19:55.25
Cでできる記述は、全てObjective-Cコード上でも使える
これが強みじゃない?
Cがわかってる人には、逆に入りやすい言語だと思うのよObj-C
507デフォルトの名無しさん:2012/01/06(金) 02:22:57.00
唐突に何今更なことを
508デフォルトの名無しさん:2012/01/06(金) 02:24:42.53
メソッドメッセージコールと関数コールが共存してるソース見るとObj-Cらしさを感じる

オブジェクトに対する操作とそれ以外の操作の表現が明確に違うのは、慣れるとわかりやすい
509デフォルトの名無しさん:2012/01/06(金) 02:26:01.37
>>503
特に嫌いなのはインデントだな
ずーっと右端の方で固まって、左側がすっかすかになるのがヤダ。
510デフォルトの名無しさん:2012/01/06(金) 02:28:01.58
>>509
それ、Obj-Cに限った話か?
511506:2012/01/06(金) 02:32:05.66
>>507
す、すまぬ。。
512デフォルトの名無しさん:2012/01/06(金) 02:57:08.15
obj-cの独特な表現を最初見た時は何じゃこれって思ったけど、
慣れてくると、むしろ癖になる不思議
513デフォルトの名無しさん:2012/01/06(金) 07:46:28.70
Obj-CよりC#のがよっぽどいい
514512:2012/01/06(金) 08:10:21.73
つまり、Java記法がよいと
515デフォルトの名無しさん:2012/01/06(金) 08:43:39.15
間をとってRuby最強!
516デフォルトの名無しさん:2012/01/06(金) 10:59:45.74
>>513
DelphiやVisual Basic のような簡単さと

C++の良いところ取りだからね。

これはいいと思うよ。
517デフォルトの名無しさん:2012/01/06(金) 11:33:41.62
俺もC#はけっこう好きだな。
お手軽感と強力さが両方ある。
518デフォルトの名無しさん:2012/01/06(金) 13:19:46.54
C#は言語そのものよりライブラリが強力すぎる
あれならバカでもプログラミングできる
519デフォルトの名無しさん:2012/01/06(金) 13:23:23.02
Cocoaの事か・・・
520デフォルトの名無しさん:2012/01/06(金) 13:56:28.55
.NETの話を持ち出すとCocoaのほうが優れてる!と暴れる奴がいるので禁止
521デフォルトの名無しさん:2012/01/06(金) 22:28:08.67
アニメーション機能はCocoaの勝ちだな。
522512:2012/01/06(金) 22:38:21.13
Core Animationも魅力的だけど、Core Audioも使いこなしてみたい
523デフォルトの名無しさん:2012/01/06(金) 23:36:39.85
CoreAudioは悪夢だわ
524512:2012/01/06(金) 23:47:14.34
>>523
どゆこと??
525デフォルトの名無しさん:2012/01/07(土) 01:42:21.02
>>512
Objective-Cの記法は、独特だけどいいよね

クラスメソッドは先頭に+、インスタンスメソッドは先頭に-をつける
というところも、staticだの何だのつけるよりわかりやすい

// Class method
+ (void)classMethod:(id)arg {
// operation code here ...
}

// Instance method
- (id)method:(NSObject*)arg1 with:(int)args2 {
// operation code here ...
return obj;
}

引数ありメソッドの記法には、慣れるまでは、わかりにくく思えるが、
慣れると、引数の意味がメソッドメッセージ名に含まれてるので、
驚くほどわかりやすい
526デフォルトの名無しさん:2012/01/07(土) 01:48:49.44
>>525
メソッド呼び出しとかだと

Obj obj = [Obj alloc];
[obj initWithString:@"Hello"];

とかね。
正直、最初見たときは、ものすごい違和感を感じた

Smalltalkやってる人にとってはそうでもないのかもしれないけど。
527デフォルトの名無しさん:2012/01/07(土) 02:28:06.02
>>526
init系methodの返り値捨てたらダメだろ
Objのroot classがNS系でない独自仕様ならばその限りではないけど
528デフォルトの名無しさん:2012/01/07(土) 02:37:37.39
>>527
NS系なら、こんな感じで入れ子にするよね

※int型変数aの値を出力するとき

NSString *str = [[String alloc] initWithFormat: @"a = %d, a"];
NSLog(str);

それか、+stringWithFormat:使って

NSLog([NSString stringWithFormat: @"a = %d, a"]);

か?w
529デフォルトの名無しさん:2012/01/07(土) 02:41:53.46
>>527
あれ?
NSObjectのサブクラスのinit系methodは、

[obj initWithString: @"hoge"];

で、objが参照するオブジェクトを初期化してくれないんだっけ?
530デフォルトの名無しさん:2012/01/07(土) 03:29:16.27
してくれる。527は勘違いしてる
531デフォルトの名無しさん:2012/01/07(土) 03:52:52.55
obj = [obj initWithString: @"hoge"];
532531:2012/01/07(土) 03:56:36.90
>>531と書いてみたけど、やっぱダメだな。
533デフォルトの名無しさん:2012/01/07(土) 07:18:54.88
initが失敗してnilを返したときにどうしようも無くなるな。
534デフォルトの名無しさん:2012/01/07(土) 09:32:48.32
謹製のクラスクラスタがallocで返すのはファクトリオブジェクトなので使えません。

id obj = [NSString alloc]; // ファクトリオブジェクト
NSLog(@"%@(%p)", NSStringFromClass([obj class]), obj);
obj = [obj initWithString:@"Hello"]; // 文字列を持てる通常のインスタンス
NSLog(@"%@(%p)", NSStringFromClass([obj class]), obj);
535デフォルトの名無しさん:2012/01/07(土) 10:03:34.80
で?
536デフォルトの名無しさん:2012/01/07(土) 10:09:04.77
説明が足りないな

allocで返されたファクトリオブジェクトは -initXXX 内で
- (id)initXXX
{
id obj = [[Siblingclass alloc] initXXX.];
self = [super init];[self release]; // ファクトリオブジェクトがシングルトンなら不要
return obj;
}
のように自分の親類クラスを生成初期化して返します。
つまり、+allocが返すインスタンスと、-initXXXの返すインスタンスは別物です。
537デフォルトの名無しさん:2012/01/07(土) 10:31:24.35
で?
538デフォルトの名無しさん:2012/01/07(土) 10:54:56.19
え? ここまで書いても分からないの?
539デフォルトの名無しさん:2012/01/07(土) 13:10:18.50
こんなのわかってない奴いんのかよって話
ドヤ顔で書くなよ
540デフォルトの名無しさん:2012/01/07(土) 13:12:26.99
>>536
そうなの?init(初期化)と言ってるくせにまた内部で+allocしてんの?
んな馬鹿な。。
だったら何のために+allocメソッドがあるの?
initXXXが-initXXXである必要は?
ほんとにそうなら、+allocなんか要らなくて、それこそ、+initXXXで
あってもいい気がするんだが
541デフォルトの名無しさん:2012/01/07(土) 13:45:22.05
>539-540
何をどう返せばいいか分からないw
542デフォルトの名無しさん:2012/01/07(土) 14:37:35.68
allocationとinitializationの違いがわからない人がいるらしい
543デフォルトの名無しさん:2012/01/07(土) 15:34:21.04
馬鹿を馬鹿と見抜けない人には(Objective-Cを使うのは)難しい
544デフォルトの名無しさん:2012/01/07(土) 16:19:15.37
UILabelにカスタムプロパティを追加する方法はUILabelのサブクラスを作るしかないのでしょうか?

545デフォルトの名無しさん:2012/01/07(土) 16:24:52.92
何を返せばいいかわかんないから個別に答えるか

>>539
>524からの流れを読もうね?
>529,530のような人がいるから書いてるんだよ

>>540
その疑問は確かにそうなのだが、
外部の使う人から見た時どう見えるかとか、
コーディングのバランスの問題とか、
クラスクラスタのルートクラスにファクトリ書くのはどうなの?とか、
The Objective-C Programming Languageでallocとinitはセットで使うように規定されてるとか、
等々の大人の事情だと思ってください
546デフォルトの名無しさん:2012/01/07(土) 16:25:12.38
547デフォルトの名無しさん:2012/01/07(土) 16:31:19.95
>>544

@interface UILabel(Hoge)
@property (copy) NSString *extendedText;
@end

@implementation UILabel(Hoge)
@synthesize extendedText;
@end
で出来なかったっけ?
548デフォルトの名無しさん:2012/01/07(土) 16:39:13.26
>>547
ありがとうございます。
試してみます。
次は初心者板に移動します。
549デフォルトの名無しさん:2012/01/07(土) 16:57:42.58
>>547が使ってんのは「カテゴリ」だからそれ調べろ
550デフォルトの名無しさん:2012/01/07(土) 17:56:11.97
>>536のように、まるでうそがほんとうのことのように書いてある
恐ろしいスレだ
551デフォルトの名無しさん:2012/01/07(土) 18:09:21.38
>>550
クラスクラスタの話だよ
分かってる?
552デフォルトの名無しさん:2012/01/07(土) 18:19:07.19
この話の発端は>>526, >>527, >>529だと思うけど、その内容と
>>536は、同じ話を対象にしてるのだろうか。。
553デフォルトの名無しさん:2012/01/07(土) 18:23:48.04
どうあっても俺は間違ってないって言いたいのなら、もうそれでいいよ
554デフォルトの名無しさん:2012/01/07(土) 18:32:49.06
>>533,534等、実装次第で不都合が出てくるから分けるなって言いたいだけだろ。
id array = [NSArray alloc];
[array init];
[array count];
こんなことやっても動かんぞ。
555デフォルトの名無しさん:2012/01/08(日) 12:37:48.31
>>491
カスケードが使えない
556デフォルトの名無しさん:2012/01/08(日) 12:45:01.55
>>518
そのうちclangあたりが.netバックエンドに対応すんじゃね。
.netのスクリプティングランタイムなら
Objective-Cとも相性いいだろうし
557デフォルトの名無しさん:2012/01/09(月) 12:01:15.44
>>554
これ、実装的にまるっきり別物になってないか?
id array = [[NSArray alloc] init];
はinitの戻り値をarrayで受けてるんだから、
id obj = [NSArray alloc];
NSLog(@"%@(%p)", NSStringFromClass([obj class]), obj);
id array = [obj init];
NSLog(@"%@(%p)", NSStringFromClass([array class]), array);
NSLog(@"%ld: ", [array count]);
で、普通に動くだろ。
558デフォルトの名無しさん:2012/01/09(月) 12:56:24.51
>>557
どうも>>554によると、
[obj init];
単独と、戻り値を受けずにobjを使うことはできないんだと。。
559デフォルトの名無しさん:2012/01/09(月) 13:05:18.26
>>557
>>526,527からの流れを見ろよ
initの戻り値を捨てるなって話なんだからさ
んなことは解ってるし、誰に向けて書いたレスかちょっとは考えてくれよ

>>558
お前も曲解すんな
>>544にそんなこと書いてないだろ
560デフォルトの名無しさん:2012/01/09(月) 13:06:28.31
>>559
>>544には書いてネェよw>>554なw
561デフォルトの名無しさん:2012/01/09(月) 13:28:02.69
>>554
>こんなことやっても動かんぞ。
だけじゃ、戻り値受けなしでは使えないと言ってるのと同義だろう。。
562デフォルトの名無しさん:2012/01/09(月) 13:43:24.56
>>561
>>533,534にも言及してるし、全然同義じゃないだろ。
流れも読めって。
563デフォルトの名無しさん:2012/01/09(月) 15:29:31.69
>>562
いや、そう読ませたいなら>>434で完璧に終わってるだろ、
allocの戻り値とそれを因数にしたinitの戻り値は違うとこれ以上無い書き方がしてあって
>>554書いていることは混乱が増すだけ。

564デフォルトの名無しさん:2012/01/09(月) 15:30:15.81
すまん、
>>434>>534の間違い。
565デフォルトの名無しさん:2012/01/09(月) 15:59:04.35
>>563
終わってるなら、それ以降の流れにはならないんじゃね?
それ以降も続くなら別の手法で理解の助けとするでしょ。
>>534ではエラーにはならないからな。

initの戻り値を捨てた結果どうなるかっていう、実際のテストケースで
もし混乱するなら、どっちにしろ>>534が理解できてない。
566デフォルトの名無しさん:2012/01/09(月) 17:03:03.78
>>565
>実装次第で不都合が出てくるから分けるなって言いたいだけだろ。
って書いたんだろ?
わけても全然問題なくね?っていわれてファビよるなよ
567デフォルトの名無しさん:2012/01/09(月) 17:09:49.91
因数
568デフォルトの名無しさん:2012/01/09(月) 17:12:36.40
>>566
問題があるのに、
問題無いのがあるからOKっていうのはダメだろ。
ファビョッてるとか無駄に煽るなよ。
569デフォルトの名無しさん:2012/01/09(月) 17:26:45.63
(´・ω・`)
570デフォルトの名無しさん:2012/01/09(月) 17:29:57.75
(;_;)
571デフォルトの名無しさん:2012/01/10(火) 15:36:37.86
この3つの違いがよくわかりません。
というか、アクセサメソッドをどうして設定する必要があるかよくわからないです。。。
よかったら教えてください

@interface BackView : UIView {
//NSString *strHTML;
}
@property (strong, nonatomic) NSString *strHTML;

---------------------------------------------------------

@interface BackWebView : UIView {
NSString *strHTML;
}
//@property (strong, nonatomic) NSString *strHTML;

---------------------------------------------------------

@interface BackWebView : UIView {
NSString *strHTML;
}
@property (strong, nonatomic) NSString *strHTML;
572デフォルトの名無しさん:2012/01/10(火) 17:56:13.27
番号振っとけよ
上と下は@synthesizeで変数名変えなきゃ等価
中は変数は確保するけどアクセッサは作らない。
573デフォルトの名無しさん:2012/01/10(火) 18:51:08.97
変数の宣言についておしえてほしいんですが、
例えば、このスレにあった
MSPanty *panty = うんぬん;

MSPanty* panty = うんうん;
とではなにが 違うんでしょう?
アスタリスクは変数名にくっつけて書くものと思っていたのがobjective-cでは離れているコードをたまに見かけます
単に方言のようなものでコンパイル時には同じあつかいなのでしょうか?

574デフォルトの名無しさん:2012/01/10(火) 19:16:09.07
同じ
575デフォルトの名無しさん:2012/01/10(火) 19:25:57.37
>>574
ありがとうございます
すっきりしました
576デフォルトの名無しさん:2012/01/10(火) 20:14:36.02
C従来のポインタ表現なら、上だよね。。
だから、おれはキャストのときも(MSPanty *)の様にして書く
577デフォルトの名無しさん:2012/01/10(火) 20:48:47.93
俺もそう書くけど、型なんだからくっつける言われたことあるな
578デフォルトの名無しさん:2012/01/10(火) 20:59:58.46
いい加減ポインタなんてものは捨てるべきだと思う
579デフォルトの名無しさん:2012/01/10(火) 21:12:21.39
だって参照より早いんだもん
580デフォルトの名無しさん:2012/01/10(火) 21:14:39.88
型 T に対して、
T*p;
T *p;
T* p;
T * p;
のどれも同じ意味。(スペースは無視される。)

C 言語では伝統的に T *p; だけど、C++ では T* p; と書く人が多いね。
自分は T *p; と書く。理由は、T* p, q; だと q も(ポインタじゃないのに)ポインタに見えるから。
581デフォルトの名無しさん:2012/01/10(火) 21:17:06.26
うむ、やっぱ T *p;だよ
Objective-CはCのスーパーセットなんだからCの書き方に準拠したいし
582デフォルトの名無しさん:2012/01/10(火) 21:50:02.93
好みの問題だし、どっちでもいいじゃん。
583デフォルトの名無しさん:2012/01/10(火) 21:51:39.08
ほんとにどうでもいいよ。
どこでインデントするかと同じ好みの問題。
好きにしろ。
584デフォルトの名無しさん:2012/01/10(火) 21:55:17.96
で、MSPantyってなんやねん
585デフォルトの名無しさん:2012/01/10(火) 22:10:22.17
好みと言うよりはコーディング規約のような
もしかしたらバグも防げるかもしれないし
586デフォルトの名無しさん:2012/01/10(火) 22:18:47.18
何のバグだよバカ
587デフォルトの名無しさん:2012/01/10(火) 22:21:53.56
T* p; 派の人が怒ってます。。
588デフォルトの名無しさん:2012/01/10(火) 22:29:35.21
constで修飾すること考えると
T* p; --> T* const p;
の方が自然だよ。*pと書く人は
T *p; --> T *const p;
には抵抗あるんじゃない?
589デフォルトの名無しさん:2012/01/10(火) 22:42:58.95
T *const p;
って普通に書くよ
590デフォルトの名無しさん:2012/01/10(火) 23:33:09.04
てか、それなら
const T *p;
って書かない?普通。。
591デフォルトの名無しさん:2012/01/10(火) 23:39:01.76
T*を一種の型と見るならT* pが自然だろ
だから
const T* p
592デフォルトの名無しさん:2012/01/10(火) 23:40:45.08
書かない
593デフォルトの名無しさん:2012/01/10(火) 23:41:18.99
T *cont p;

const T *p;
は別物
const T *const p;
もあるよ。
調べてみてね
594デフォルトの名無しさん:2012/01/10(火) 23:41:52.09
オブジェクト変数は、実質構造体なんだから、T *p;のほうがしっくり来たから
おれはT *p;でかいてるなぁ
まあ、どっちも合ってるからどっち使ったっていいんだけど
595デフォルトの名無しさん:2012/01/10(火) 23:46:22.28
あ、構造体へのポインタか
596デフォルトの名無しさん:2012/01/10(火) 23:52:56.71
お前らObjective-Cの話をしろよ
細かいこと気にしてるとハゲるぞ
597デフォルトの名無しさん:2012/01/10(火) 23:54:40.04
もう手遅れだからいいんだよ
598デフォルトの名無しさん:2012/01/10(火) 23:55:20.58
まあ、アスタめんどかったら、id型使えばよいのだ
599デフォルトの名無しさん:2012/01/10(火) 23:56:36.92
32bitOSで128bitの構造体Tへのポインタを宣言する場合、

T* p ←32bitのポインタ型だと分かりやすい
T *p ←128bitの構造体と思いきや32bitのポインタ型
T * p ←優柔不断
600デフォルトの名無しさん:2012/01/11(水) 00:02:40.25
???
変数名の直前にアスタが来るのがポインタの表記
だから、
>T *p ←128bitの構造体と思いきや32bitのポインタ型
などとはみじんも思わない

構造体のポインタだろうなとすぐわかるけど。。。
601デフォルトの名無しさん:2012/01/11(水) 00:09:00.94
まあ、普通アスタを変数名の直前に書く
その理由は>>580
602デフォルトの名無しさん:2012/01/11(水) 00:11:43.66
俺も>>580の最後には同意
Objective-C勉強したてのころそれでハマった
603デフォルトの名無しさん:2012/01/11(水) 00:11:49.41
>>596
Objective-CはCの完全上位互換なんだから、Cの話はObjective-Cの話でもある
604デフォルトの名無しさん:2012/01/11(水) 00:20:57.50
もうObj-Cなんか捨ててC#にしようぜ
C#はISO標準化されてるんだから、MacOS XとiOSのネイティブコードにコンパイルできる公式コンパイラ作ってくれよ
IDEは我慢してやるからさ
@とか-とか[]とかキモすぎなんだよ
605デフォルトの名無しさん:2012/01/11(水) 00:22:55.46
Java的な記法も俺は好きだよ
ただ、それをここで言うなよ。。
606571:2012/01/11(水) 00:27:58.73
>>572
ありがとうございます。おかげで理解できました
607デフォルトの名無しさん:2012/01/11(水) 00:55:46.90
>>604
mono touchはどうしてるんだろう?Objective-Cにコンバートしてるんだろうか?
608デフォルトの名無しさん:2012/01/11(水) 01:01:34.01
よろしい、ならば間をとってObjective-Dだ
609デフォルトの名無しさん:2012/01/11(水) 01:03:12.54
monoはJavaと同じインタプリタランタイムだから、iOS上で動く
JITさえ作っちゃえば、あとは中間言語に置き換えるコンパイラは何だっていいはず
610デフォルトの名無しさん:2012/01/11(水) 01:12:38.43
mono touchネイティブにコンパイルしてるはず
611デフォルトの名無しさん:2012/01/11(水) 01:12:51.51
は が抜けた
612デフォルトの名無しさん:2012/01/11(水) 01:14:10.08
>>610
うん、JITがしてるよ
613デフォルトの名無しさん:2012/01/11(水) 01:18:25.13
それmono touchは違うだろ
614デフォルトの名無しさん:2012/01/11(水) 01:22:32.25
>>613

どうなっとるの?
こんな感じ??

1. C#で中間コード(バイトコード生成)
 →これにより、マルチプラットフォームを実現

2. iOS、Android OS用にコンパイラが用意されてて、上記のバイトコードを
 ターゲットのプラットフォーム用のコンパイラでバイトコードにコンパイル

3. ネイティブコード(=アプリ)をAppStore, android marketで配布
615デフォルトの名無しさん:2012/01/11(水) 01:23:26.11
>>614
修正w

1. C#で中間コード(バイトコード)生成
 →これにより、マルチプラットフォームを実現

2. iOS、Android OS用にコンパイラが用意されてて、上記のバイトコードを
 ターゲットのプラットフォーム用のコンパイラでネイティブコードにコンパイル

3. ネイティブコード(=アプリ)をAppStore, android marketで配布
616デフォルトの名無しさん:2012/01/11(水) 01:25:17.80
617デフォルトの名無しさん:2012/01/11(水) 01:29:40.67
ほう、JITはないけどMono VMは一緒にセットになってるんだね
618デフォルトの名無しさん:2012/01/11(水) 01:34:07.03
MonoがじわじわとJavaの領域を乗っ取り始めてるんだな
619デフォルトの名無しさん:2012/01/11(水) 01:51:42.68
Javaに比べるとC#ははるかに良い言語だから使えるならMonoを使うわな
620デフォルトの名無しさん:2012/01/11(水) 04:01:44.10
>>617
>ほう、JITはないけどMono VMは一緒にセットになってるんだね

VM と言うか、ランタイムがつくと思った方がいいかも。
621デフォルトの名無しさん:2012/01/11(水) 11:11:18.54
Objective-CでCGI書いた人おる?
622デフォルトの名無しさん:2012/01/11(水) 11:45:41.31
CGIとはなにか、その動作原理は?ってことが分かってたらObjCだろうと何でもいいよ
CGIを作るに当たって便利なパッケージがあるかどうかが聞きたいのなら
ストレートにそれを聞けばいい
623デフォルトの名無しさん:2012/01/11(水) 12:23:25.45
いやそんなスカしたこと言われても…
便利なframeworkがあったらなんとかなるもんでもないでしょあれ?
Apple製のObjCランタイムがないと動かないんじゃないの?
そういう細かい話があるから実際CGI書いて動かした人を尋ねたほうが早いんだよ
624デフォルトの名無しさん:2012/01/11(水) 12:26:28.96
GCIなんて標準入出力さえ扱えればどんな言語でも書けるじゃん。
625デフォルトの名無しさん:2012/01/11(水) 12:26:52.60
typo
626デフォルトの名無しさん:2012/01/11(水) 12:30:27.99
結局何が知りたいんだよ
いるかいないかじゃ、いるに決まってるだろ
「Objective-C CGI」でググれカス
627デフォルトの名無しさん:2012/01/11(水) 12:40:02.10
Objective-CでWindowsアプリ書いた人おる?
628デフォルトの名無しさん:2012/01/11(水) 12:41:52.91
629デフォルトの名無しさん:2012/01/11(水) 12:41:59.33
Windowsアプリとはなにか、その動作原理は?ってことが分かってたらObjCだろうと何でもいいよ
Windowsアプリを作るに当たって便利なパッケージがあるかどうかが聞きたいのなら
ストレートにそれを聞けばいい
630デフォルトの名無しさん:2012/01/11(水) 12:42:29.95
(´・ω・`)
631デフォルトの名無しさん:2012/01/11(水) 12:49:37.56
(´・ω・`)とはなにか、その動作原理は?ってことが分かってたらObjCだろうと何でもいいよ
(´・ω・`)を作るに当たって便利なパッケージがあるかどうかが聞きたいのなら
ストレートにそれを聞けばいい
632デフォルトの名無しさん:2012/01/11(水) 13:07:29.18
iPhoneの修理って、現状は本体交換しかないってほんと?
全体に影響のない故障でも一律本体交換なの?
633デフォルトの名無しさん:2012/01/11(水) 13:22:32.28
>>626
いや、だから素直に居たら居るて答えてくれればいいだけで
居ないんならヌルーでいいよ
聞かれている言葉に素直に耳を傾けようよ君は
634デフォルトの名無しさん:2012/01/11(水) 13:23:47.98
>>633
少しプロジェクトが難航しててイライラしててな
すまんかった
635632:2012/01/11(水) 13:33:19.13
おう、誤爆してたわ、スマソ
636デフォルトの名無しさん:2012/01/11(水) 13:34:43.30
つーか>>623だけ全然わかってないような・・・
637デフォルトの名無しさん:2012/01/11(水) 13:52:11.15
ランタイムは今のところAppleのとGnuStepかな?
両方にNSProcessInfoがあるからそれ使っとけ
638デフォルトの名無しさん:2012/01/11(水) 14:13:27.18
それ使ってなにすんの?
639デフォルトの名無しさん:2012/01/11(水) 14:23:12.21
それは教えられない
CGI作るには有用だけどね
640デフォルトの名無しさん:2012/01/11(水) 14:31:06.54
>>634
こちらこそ忙しい時に
くだらない質問に付きあわせてしまって申し訳なかった(´・ω・`)がんばってくだちい
641デフォルトの名無しさん:2012/01/11(水) 14:32:42.75
frothkitとかCappuccinoとかCocotronとか気になる単語はめっちゃあるんだよ
でも日本語ソースは全くない
もう日本人でも日本語情報はあてにしてないのが現状だろ
ググッても意味のない時代がきてるよ
642デフォルトの名無しさん:2012/01/11(水) 14:35:37.98
キチガイ多め
643デフォルトの名無しさん:2012/01/11(水) 14:40:44.43
欲しいものをちゃんと説明した上で欲しいといえない→正常
欲しいものは、はっきり欲しいと言えという人→キチガイ
644デフォルトの名無しさん:2012/01/11(水) 20:48:16.63
どーでもいいことですぐピキる
それが2chくをりてぃー
645デフォルトの名無しさん:2012/01/11(水) 20:56:49.31
どうでもいいかどうかは俺が決める
646デフォルトの名無しさん:2012/01/11(水) 21:13:37.87
いや、俺が決める
647デフォルトの名無しさん:2012/01/11(水) 21:17:52.10
どーでもいい
[おまえら release];
648デフォルトの名無しさん:2012/01/11(水) 22:02:25.44
Objective-C CGI 基本編

#import <Foundation/Foundation.h>
#include <stdio.h>

int PrintString(NSString *format, ...)
{
int result = 0;
va_list ap;
va_start(ap, format);
NSString *str = [[NSString alloc] initWithFormat:format arguments:ap];
va_end(ap);
result = printf("%s", [str UTF8String]);
[str release];
return result;
}
int main( int argc, char *argv[])
{
id pool = [[NSAutoreleasePool alloc] init];
id env = [[NSProcessInfo processInfo] environment];
for(NSString *key in env) {
PrintString(@"%@ -> %@<BR>¥n", key, [env objectForKey:key]);
}

[pool release];
return 0;
}


あとは自分で頑張れ
649デフォルトの名無しさん:2012/01/11(水) 22:07:16.73
どったの?急に
650デフォルトの名無しさん:2012/01/11(水) 22:16:19.37
ヘッダは?
651デフォルトの名無しさん:2012/01/11(水) 22:17:32.75
ヘッダなんかいらねぇよ、ハゲ
652デフォルトの名無しさん:2012/01/11(水) 22:20:55.72
@implementation ChoiHoge

// ...

@end

@interface ChoiHoge : KusoHoge
{

}

// ...

@end

がいないお。。。
653デフォルトの名無しさん:2012/01/11(水) 22:26:35.54
>>651
"Content-Type: text/html\n\n"
くらいは最初に必要なんじゃないの?
654デフォルトの名無しさん:2012/01/12(木) 06:16:41.01
655デフォルトの名無しさん:2012/01/12(木) 16:17:32.37
メソッド一つでカテゴリ分けるのってやめたほうがいいかな
150行くらいだけど
656デフォルトの名無しさん:2012/01/12(木) 16:19:00.56
見やすくなるんならいいんじゃね?
657デフォルトの名無しさん:2012/01/12(木) 16:21:28.02
>>656
そうだよね。このままで行くことにする
サンクス
658デフォルトの名無しさん:2012/01/13(金) 02:06:37.52
iPhoneのUItextViewのカーソル位置ってどうやって取得すんの?
selectedrangeは指定用っぽいんだけど
659デフォルトの名無しさん:2012/01/13(金) 02:21:21.07
ん?selectedRangeから取得じゃだめなの??

以下抜粋

selectedRange
The current selection range of the receiver.

@property(nonatomic) NSRange selectedRange
660デフォルトの名無しさん:2012/01/13(金) 02:38:35.59
UITextViewのオブジェクトをaTextViewとすると、

aTextView.selectedRange.location

で取れないの?。。。。。
661デフォルトの名無しさん:2012/01/13(金) 02:41:34.96
分かってないだけでしょ
readonlyなプロパティはあってもwriteonlyなプロパティなんかないよ
662デフォルトの名無しさん:2012/01/13(金) 11:52:06.04
>>661
いくらでもあるが、
例えばAutioUnitのkAudioUnitProperty_MakeConnection
663デフォルトの名無しさん:2012/01/13(金) 13:38:59.59
ちょっと何言ってるかわかりませんね
664デフォルトの名無しさん:2012/01/13(金) 19:35:32.95
>662さんはObjective-Cに規定されてるpropertyと一般的なpropertyの区別がつかないんじゃないの?
665デフォルトの名無しさん:2012/01/13(金) 20:16:19.61
読みにきたら例外投げるとか
どれだけ意味があるのかわからんけど
666デフォルトの名無しさん:2012/01/14(土) 07:14:29.27
stream関連は、writeonlyがある様に思えるが。
667デフォルトの名無しさん:2012/01/14(土) 08:31:24.82
@property 宣言しなくても、setXxx: メソッドがあれば obj.xxx = ... って書けるよ。
668デフォルトの名無しさん:2012/01/14(土) 11:20:12.21
というかpublic メンバはふつーに->で参照できるっしょ
669デフォルトの名無しさん:2012/01/14(土) 11:36:19.67
>>668
隠そうと思えばいくらでも隠せるから
670デフォルトの名無しさん:2012/01/14(土) 11:47:43.23
だから何なの?w
671デフォルトの名無しさん:2012/01/14(土) 21:21:53.26
iPhoneのアプリIBで組んでるとステータスバー押してもスクロールビューとかテーブルビューとかがscrolltopしないの俺だけ?
672デフォルトの名無しさん:2012/01/14(土) 21:43:40.58
スレチ
673デフォルトの名無しさん:2012/01/14(土) 21:52:15.98
>>672
iPhoneネイティブすれあったのね。サンクス
674デフォルトの名無しさん:2012/01/19(木) 17:02:49.80
iPhoneスレに書けないんでこっちに書くが、
タブ型のiPhoneアプリで、
UIVIewのアニメーションブロックでアニメーションをしているときに、
タブを切り替えると、即座にアニメーションが終了してしまう(animationDidStopが呼ばれる)
何か解決方法ない?
675デフォルトの名無しさん:2012/01/19(木) 17:58:15.20
>>674
死ねよ
676デフォルトの名無しさん:2012/01/19(木) 18:00:38.43
>>674
スレ違い。この板にも iOS プログラミングのスレあるよ。mac 板も復活したし。で、標準のタブコントローラ使ってるなら、タブ切り替えたらビューも切り替わるから、アニメーションが止まるのは仕様じゃないかな。
677!674:2012/01/20(金) 00:26:00.23
すれ違いちゃあそうかもしれんけど、少しくらいいいだろう
全然関係ない話じゃないんだから
>>975はもう来なくていいよ
678デフォルトの名無しさん:2012/01/20(金) 00:37:49.80
ダメだよ
つーかこいつiPhone板にもマルチしてるし
679デフォルトの名無しさん:2012/01/20(金) 05:48:42.90
カス野郎だな
680デフォルトの名無しさん:2012/01/20(金) 08:30:09.19
わかんないからってたたいちゃだめ
681デフォルトの名無しさん:2012/01/20(金) 10:38:22.38
俺はわかんないけどスレ違いのマルチ野郎は容赦なく叩くよ
やってること荒らしだしね、花王のコピペと同じ
682!omikuji !dama:2012/01/20(金) 19:24:57.99
質問。たぶんCの話だと思うけど^ってなに?メッセージ構文の直前に付いてるのをよく見かけるんだが、bit ORだとしても意味がわからん。
683デフォルトの名無しさん:2012/01/20(金) 19:35:53.80
Blocks
684デフォルトの名無しさん:2012/01/23(月) 00:24:28.13
ARCについて質問です。
下のClassAのfunメソッドで__weakインスタンス変数oを初期化してますが
本来なら__weakのため初期化した瞬間にNSObjectは解放されますが
@propertyでstrongを記述してるので、インスタンス数oは__weakでなく__strongになるんでしょうか?


@interface A: NSObject {
  __weak id o_;
}
@property (strong, nonatomic) id o;
@end

@implementation A
@synthesize o = o_;

- (void)fun {
 o_ = [[NSObject alloc] init];
}

685デフォルトの名無しさん:2012/01/23(月) 00:31:07.96
>>684
ごめんなさい。この質問スルーでお願いします。。
686デフォルトの名無しさん:2012/01/23(月) 00:45:51.24
回答求む>>682
687デフォルトの名無しさん:2012/01/23(月) 01:01:34.39
688デフォルトの名無しさん:2012/01/23(月) 02:21:55.94
blocksっていうclang系の拡張。
所謂レキシカル・クロージャ。
689デフォルトの名無しさん:2012/01/23(月) 18:59:11.66
>>688
ありがとう色々調べられた。
しかし結局意味がわからん。
690デフォルトの名無しさん:2012/01/23(月) 19:16:18.77
諦めろ
691デフォルトの名無しさん:2012/01/23(月) 19:58:01.38
>>689
qsort(3)の第4引数に直接関数書けるようにした
みたいな感じ
692デフォルトの名無しさん:2012/01/23(月) 20:02:19.44
あとその直接書いた関数の中から、字面上で外側のスコープにあるものが見える事も重要。
693デフォルトの名無しさん:2012/01/23(月) 20:20:46.32
>>691
OSX 10.6以降では実際書けるし。
/usr/include/stdlib.h
void qsort_b(void*,size_t,size_t,int (^)(const void*,const void*));
694デフォルトの名無しさん:2012/01/23(月) 20:38:34.24
691が言ってるのはそれだろ
695デフォルトの名無しさん:2012/01/24(火) 01:12:44.13
Grand Central Dispatchでディスパッチキューに登録されたタスクを実行中の場合、
このタスクを途中で強制的に停止&削除するにはどうすればいいんでしょう??
696689:2012/01/24(火) 04:35:03.46
>>691
理解したぜ!ようはfunctionでスコープ前の変数はconstant化してキープするってか。
697689:2012/01/24(火) 04:37:11.18
>>693とか意味わかんね
698デフォルトの名無しさん:2012/01/24(火) 04:37:53.47
可愛そうに
699689:2012/01/24(火) 04:42:11.49
>>698
レス早すぎだろw
700689:2012/01/24(火) 04:48:56.59
なんで^が( )の中に入ってる?^{ aaa }か^( aaa ){ bbb }とかvoid (^aaa) (void) = ^{bbb}じゃないのん?
701デフォルトの名無しさん:2012/01/24(火) 05:23:52.06
変数名が省略されてるだけだろ。阿呆かお前
702689:2012/01/24(火) 05:38:12.42
>>701
理解した。ありがとう。
703デフォルトの名無しさん:2012/01/24(火) 13:32:26.54
C言語は書き方が変態。字面で見たまんますんなり頭にはいってこない。
関数ポインタとかブロックスの構文とか、読んだ後に頭で咀嚼しないといけない。
この書き方を考えた奴は頭が捻くれているとしか思えない。
その点、Lisp系の言語は読みやすくていいね。
704デフォルトの名無しさん:2012/01/24(火) 13:36:23.14
call-with-current-continuation とかそういうのですかそうですか
705デフォルトの名無しさん:2012/01/24(火) 13:38:39.67
>>703
ポーランド記法信者乙
706デフォルトの名無しさん:2012/01/24(火) 14:05:08.52
char* a[] = { "hhh", "CCC", "zzz", "QQQ" };
qsort_b(a, 4, sizeof(char*),
  ^(const void* x, const void* y) {
    return strcasecmp(*(char**)x, *(char**)y);
  });

(sort '("hhh" "CCC" "zzz" "QQQ")
    #'(lambda (x y)
      (string<= (string-downcase x)
            (string-downcase y))))
707デフォルトの名無しさん:2012/01/31(火) 21:04:50.73
来季はロシアっ娘達も参戦してくるし、ヨナや安藤も復帰してくる可能性があるから、
真央ちゃんにとっては、台乗りできる最後のチャンスかもしれないよ。
708デフォルトの名無しさん:2012/01/31(火) 21:05:50.25
スマヌ。ゴバクシタ
709デフォルトの名無しさん:2012/02/01(水) 01:30:54.49
>>706
型を省略できることが利点ってこと?
710デフォルトの名無しさん:2012/02/01(水) 02:05:50.34
大差ないじゃんって思って書いた。
711デフォルトの名無しさん:2012/02/01(水) 15:27:21.00
The WinHttpGetIEProxyConfigForCurrentUser function retrieves the Internet Explorer proxy configuration for the current user.

Syntax
BOOL WINAPI WinHttpGetIEProxyConfigForCurrentUser(
__inout WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *pProxyConfig
);

Parameters
pProxyConfig [in, out]

A pointer, on input, to a WINHTTP_CURRENT_USER_IE_PROXY_CONFIG structure. On output, the structure contains the Internet Explorer proxy settings for the current active network connection (for example, LAN, dial-up, or VPN connection).
Return value
Returns TRUE if successful, or FALSE otherwise. For extended error information, call GetLastError. Among the error codes returned are the following.
712デフォルトの名無しさん:2012/02/01(水) 17:18:13.30
>>711
は(´・Д・`)?
713デフォルトの名無しさん:2012/02/01(水) 18:21:41.92
@interface MyUIButton : UIButton {
NSString *source;
}
@property(nonatomic, copy) NSString *source;
のように拡張して、button.source = @"hoge"; のように使おうとすると、

-[UIRoundedRectButton setSource:]: unrecognized selector sent to instance 0x8830ca0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIRoundedRectButton setSource:]:

とエラーが出た。どう対処したらよいか教えて。
UIButtonの拡張自体が良くないなら、その理由についても少しかみ砕いて教えてほしい。
Webでそのような記事を見かけたけど、うまく理解できなかった。
714デフォルトの名無しさん:2012/02/01(水) 18:30:18.17
サブクラスを作るんじゃなくカテゴリでUIButtonそのものを拡張すると
幸せになれるかもしれないね
試したわけじゃないけど
715デフォルトの名無しさん:2012/02/01(水) 18:34:34.48
>>713
buttonがMyUIButtonのインスタンスじゃない
716デフォルトの名無しさん:2012/02/01(水) 18:38:32.06
>>714
カテゴリで変数を追加しようとしたら、
lvars may not be placed in categoriesとエラーが出た。カテゴリに変数って追加できるもの?
717デフォルトの名無しさん:2012/02/01(水) 18:45:00.19
エラーしか読んでなかった

エラー内容:
buttonがMyUIButtonではなくUIRoundedRectButtonのインスタンスであったためsourceプロパティがなかった

原因:
buttonを生成するときにMyUIButtonを指定しなかった

また、UIRoundedRectButtonと同形状のボタンが必要な場合は
@interface MyUIButton : UIRoundedRectButton {
とする。

修正法:
IBで作っている場合は
http://sazameki.jp/translations/xcode4/IDEs/Conceptual/Xcode4TransitionGuide/InterfaceBuilder/InterfaceBuilder.html
の「Interface Builder オブジェクトにクラスを割り当てる」を参照
まずUIRoundedRectButtonを配置してそのクラスをMyUIButtonに変更する
718デフォルトの名無しさん:2012/02/01(水) 18:47:48.86
>>716
associatedObjectを使えば出来なくはない。
719デフォルトの名無しさん:2012/02/01(水) 18:54:08.84
>>713
そもそも何がしたいのさ?
たぶん、view をいじるんじゃなくて、controller でなんとかすべきだと思うよ。
720デフォルトの名無しさん:2012/02/01(水) 18:59:21.06
>>716
意外と簡単だった

- (NSString *)source
{
id result = objc_getAssociatedObject(self, @"source");
return [result copy];
}
- (void)setSource:(NSString *)string
{
objc_setAssociatedObject(self, @"source", string, OBJC_ASSOCIATION_COPY);
}
721713:2012/02/01(水) 19:54:43.63
レスしてくれた人、ありがとう。

>>717
>@interface MyUIButton : UIRoundedRectButton {
cannot find interface declaration for 'UIRoundedRectButton', superclass
と出るのだけど、なにかを@importすれば使えるようになる?

>>719
テーブルセルのなかでボタンを自動生成するようにしてたのだけど、追加情報が必要になって、
最初は、associatedObjectを使ってたのだけど、>>720のようにクラスタ内でやる方法が思いつかず、
外部からデータを埋め込んでいたら、キー管理が煩雑になったので、派生クラスを使おうと思い立った。

>>720
ありがとう。とても参考になった。
OBJC_ASSOCIATION_COPYした場合に、deallocでのreleaseは考える必要ある?
722デフォルトの名無しさん:2012/02/02(木) 00:14:14.10
>>721
親玉がdeallocされたら自動でreleaseされるので考える必要ないです
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocAssociativeReferences.html#//apple_ref/doc/uid/TP30001163-CH24-SW3
Listing 6-1の下にちょろっと書いてる
723デフォルトの名無しさん:2012/02/02(木) 01:56:16.03
>>722
>Listing 6-1の下にちょろっと書いてる
ありがとう。OBJC_ASSOCIATION_RETAINは書いてるけど、OBJC_ASSOCIATION_COPYのほうは書いてないね。
まあ、RETAINで解放されるなら、COPYでも解放されるだろうけど。
724デフォルトの名無しさん:2012/02/02(木) 20:10:36.75
何だこの糞言語は?
作ったやつバカだろ?[]が気持ち悪いんだよさっさと消えろ
725デフォルトの名無しさん:2012/02/02(木) 21:32:16.06
最初期に読んだオブジェクト指向の本がその人のだったかも。
726デフォルトの名無しさん:2012/02/04(土) 01:44:54.48
>>724
[おまえ release];
727デフォルトの名無しさん:2012/02/04(土) 02:19:54.21
てか、
[おまえ dealloc];
のほうがいいな。retainカウント考慮するまでもなく即刻消えていただいておk>>724
728デフォルトの名無しさん:2012/02/04(土) 02:39:09.48
>>724
>何だこの糞言語は?

obj-c は確かに色々酷いけど、[] 表記に文句言う程度の人に言われる筋合いはないと思うの。
729デフォルトの名無しさん:2012/02/04(土) 02:41:57.02
わざわざ書き込んだ>>724は、きらいといいつつ気になっちゃってるかわいいやつ
きらいきらいも好きのうち
730デフォルトの名無しさん:2012/02/04(土) 02:45:59.88
Brad Coxの話にでもなるかと思ったらみんな罵り合いの方が好きだった
731デフォルトの名無しさん:2012/02/04(土) 23:35:50.55
C#と違いCの上位互換であり
C++よりOOP純度が上でしかも易しい
触ったことないけどObjC最高!
732デフォルトの名無しさん:2012/02/04(土) 23:38:20.69
最後の一行で台無し
733デフォルトの名無しさん:2012/02/05(日) 00:42:33.68
俺はこの言語1番好き
734デフォルトの名無しさん:2012/02/05(日) 00:57:42.14
エラーの出し方が糞
どこで引っかかってるのかエラー見るだけじゃわからんこと多すぎだろ
死んでいいと思う
735デフォルトの名無しさん:2012/02/05(日) 02:19:00.66
ガベージコレクションがついたらつかうかもしれない(もうついたの?)
736デフォルトの名無しさん:2012/02/05(日) 04:07:19.38
ついたよー
ただしOSXのみな
737デフォルトの名無しさん:2012/02/05(日) 05:20:17.26
Javaに慣れすぎなんじゃね?
738デフォルトの名無しさん:2012/02/05(日) 05:40:22.72
iPhoneにはガベコレないけどARCが出たからいいじゃん
739デフォルトの名無しさん:2012/02/05(日) 06:56:11.86
C#好きが嫉妬して吠えてるのか?
740デフォルトの名無しさん:2012/02/05(日) 08:15:58.33
嫉妬する理由が思い当たらんのだが
741デフォルトの名無しさん:2012/02/05(日) 11:03:13.57
じゃ、なんできらいだぁってガキみたくわざわざ書き込みにくるんだろうなぁ
742デフォルトの名無しさん:2012/02/05(日) 11:07:53.72
そういえば、C#スレでC#嫌いだってレス見たことないな・・・
743デフォルトの名無しさん:2012/02/05(日) 11:47:30.54
単純にObjective-CがC#より扱いにくいからでしょ
C#やJavaから入った奴からすれば発狂するレベルだと思うわ
744デフォルトの名無しさん:2012/02/05(日) 11:49:29.72
おれはOOPはJavaから入ったけど、Obj-Cはおもしろいなとは思ったけど
扱いにくいとは思わなかった
745デフォルトの名無しさん:2012/02/05(日) 15:42:57.26
OOPはC front(C++の初期ね)とsmalltalkからなせいかObje-CはsmalltalkとCのアイノコでちょっちキモイわ
っつっても感じたのはNextStepの頃なので今は慣れたけど
746デフォルトの名無しさん:2012/02/05(日) 16:43:17.31
いやー普通にこの言語開発したやつが頭悪すぎなだけだとおもうわw
汎用性のない言語だし閉鎖的だし、便利にしてやろうとがんばったけど自己満足で終わって大不評みたいな?
Iphoneが終わったらこの言語もまた一部の偏狭的なマニアだけが使う言語になるだろ
747デフォルトの名無しさん:2012/02/05(日) 16:47:10.69
お前がそう思うんならそうなんだろ
748デフォルトの名無しさん:2012/02/05(日) 17:24:44.76
iPhoneのせいで>>746みたいなカスがよってきてウザいわー
749デフォルトの名無しさん:2012/02/05(日) 17:31:08.70
ObjC信者はObjCが最強だと思ってるんだから放っといてやれよ
その信念はC++信者より強固だからな
言うだけ無駄
750デフォルトの名無しさん:2012/02/05(日) 18:15:57.99
スマートフォン自体がうざいんんだよ。





しょうもない、ガキ、糞共が。逝け
751デフォルトの名無しさん:2012/02/05(日) 18:51:54.45
>>746
はははっ、そうかそうか。
752デフォルトの名無しさん:2012/02/05(日) 18:53:10.93
>>749
あなたはC#ユーザーですね(^_^)
753デフォルトの名無しさん:2012/02/05(日) 18:53:48.22
>>746
汎用性があって開放的でみんなが便利だって言ってる言語ってなに?
754デフォルトの名無しさん:2012/02/05(日) 18:59:44.13
>>750
哀れだ。。
755デフォルトの名無しさん:2012/02/05(日) 19:22:18.72
気をつけろ、お前ら全員中二病に見えるぞ
言語で熱く語り出すのだけはやめておけよ、絶対だぞ、ぜったい語るなよ
756デフォルトの名無しさん:2012/02/05(日) 19:22:57.40
釣られすぎだろ
757デフォルトの名無しさん:2012/02/05(日) 19:32:51.29
まあAppleが採用していなければこの世から消えていた言語だからな
758デフォルトの名無しさん:2012/02/05(日) 19:34:59.64
MSがObj-C採用してたらそんなに叩かないくせに。。
759デフォルトの名無しさん:2012/02/05(日) 19:40:43.02
もっと文句が出てたと思うがw
760デフォルトの名無しさん:2012/02/05(日) 19:43:10.42
そのくらいC#大好きなんだねみんな。ちょっとびっくり
761デフォルトの名無しさん:2012/02/05(日) 20:09:19.54
Objective-C : NeXTとAppleの系統以外で採用されず
C# : 頼んでもいないのにオープンソースプロジェクトが立ち上げられUNIXやLINUXで動作する環境が整えられている

どちらが優れているかなんて言うまでもないだろ
762デフォルトの名無しさん:2012/02/05(日) 20:38:14.85
GNUstep も知らないのにレスするなよ
763デフォルトの名無しさん:2012/02/05(日) 20:43:02.04
GNUstepはNeXT系だろうが
馬鹿はお前だろ
764デフォルトの名無しさん:2012/02/05(日) 21:19:29.98
まあ信者以外は糞だとe思ってるよwこの言語はw
今まで見た言語の中で一番糞
もちろんXcodeもなw
糞言語に糞エディタw
765デフォルトの名無しさん:2012/02/05(日) 21:20:56.23
>>761
そりゃ言語じゃなくて環境の話だろ。
Objectiv-Cという言語に限ればWindowsでもUnixでも利用可能だ。
766デフォルトの名無しさん:2012/02/05(日) 21:21:14.69
なんか伸びてると思ったらクズみてぇなレスつけてんじゃねぇよ、クズども
767デフォルトの名無しさん:2012/02/05(日) 21:21:47.31
>>764
どこら辺が糞だと思うの?
具体的に頼む。
768デフォルトの名無しさん:2012/02/05(日) 21:32:33.65
誰がこんなマイナー言語をわざわざWinやlinuxでやるんだよw超少数派だろw
糞なところは散々既出
良いところは継ぎ接ぎ感はあるが比較的習得が容易な言語だというところ
769デフォルトの名無しさん:2012/02/05(日) 22:46:57.92
やはり具体的に言えないのか
770デフォルトの名無しさん:2012/02/05(日) 22:57:23.76
Blocksが素敵すぎると思ったが、ARCが実装されて
もはや無敵の言語なったんじゃね?これ。
デザパタを強要する仕組みも、慣れれば自然と構成を
考える習慣が身についてこれしかないと思えてくるしな。
CoreDataは、某MSのADOなんかよりずっと洗練されて
るし、CoreGraphicsのアニメーションの扱いやすさなん
かもうWindows環境になんか戻れないって感じだよな。
771デフォルトの名無しさん:2012/02/05(日) 23:02:43.15
長文書いてる奴は一言にまとめてくれないか?
772デフォルトの名無しさん:2012/02/05(日) 23:14:38.13
>>768みたいな奴にはObjective-Cも糞にしか見えないだろ。
可哀相だが俺にはどうすることもできない。
773デフォルトの名無しさん:2012/02/05(日) 23:19:35.85
馬鹿は二言以上の文章は理解不能らしい
774デフォルトの名無しさん:2012/02/05(日) 23:35:12.91
ObjCが前世紀に全然流行らなかったのは
ObjCのシンタックス覚えていくときオブジェクト思考を
ある程度前提とするのに一般人がオブジェクト指向を
イマイチわかっていなかったことと、実行速度も
遅かったことが原因だったわけだが
JAVAやRuby/Python等によってオブジェクト指向が
パンピーにも理解されてきて実行速度もかなり
改善されてきつつある。
つまりようやく時代がObjCに追いついてきたといえよう。
触ったことないけどObjC最高!
775デフォルトの名無しさん:2012/02/06(月) 02:00:55.09
>>763
Win は NeXT系 ですねわかります。
776デフォルトの名無しさん:2012/02/06(月) 20:05:00.91
さすがですね。
777デフォルトの名無しさん:2012/02/06(月) 22:34:27.99
SOAPとは何だったのか
CORBAとは何だったのか
WindowsCEとは何だったのか
778デフォルトの名無しさん:2012/02/07(火) 07:34:34.12
http://apple.slashdot.jp/story/12/02/06/1128242/
やっぱりCだからクラッシュがおおいのだろうか、他の理由だろうか
779デフォルトの名無しさん:2012/02/07(火) 10:25:52.17
Cの部分よりもObjectiveの部分だと思う
780デフォルトの名無しさん:2012/02/07(火) 10:40:31.25
iOS系のプログラミングスレの質問はびっくりするぐらい低レベルだからね
あのレベルの人たちからするとObjCのような低級言語はかなりきついと思う
無効なオブジェクトへのアクセス一発で落とせるからな
781デフォルトの名無しさん:2012/02/07(火) 11:33:46.61
ObjCはヌルポで落ちないから逆に親切らしいぞ
782デフォルトの名無しさん:2012/02/07(火) 11:56:16.63
ヌルポはExceptionなのでキャッチして捨てるという荒業を使えば落ちないよ?
783デフォルトの名無しさん:2012/02/07(火) 15:24:43.88
メモリリークでメモリワーニング食らって落とされてる系が多いに一票
784デフォルトの名無しさん:2012/02/07(火) 16:15:47.00
iphoneユーザとして2年、iphoneアプリ開発者として半年、Andoridユーザとして2か月(買ったばかり)の者だけど、
アプリにもよるんだろうけどメモリの制限はAndoroidのほうが、厳しい気がする。

2chまとめというアプリが iphoneでもAndoridでもあるけど、
iphone(3GS)では一度も落ちたことがないのに、Android(イーモバGS02、2.3.5)では、たびたび落ちる。
785デフォルトの名無しさん:2012/02/07(火) 17:07:04.78
何でそれがメモリの制限の話になるの?
786デフォルトの名無しさん:2012/02/07(火) 17:17:37.05
馬鹿にはわからない深い考察ってものがあるんだよ
787784:2012/02/07(火) 17:22:26.52
書き方が足りなかった。
androidで落ちるときに、「メモリが足りないので強制終了します」と表示されるので。
788デフォルトの名無しさん:2012/02/07(火) 17:23:08.93
裏にいる人も活発にメモリを使うとか、そんな感じなんだろうか。
789デフォルトの名無しさん:2012/02/07(火) 17:34:27.74
いやだってjavaじゃん
790デフォルトの名無しさん:2012/02/07(火) 17:47:53.57
javaだと?
791デフォルトの名無しさん:2012/02/07(火) 18:20:50.52
Javaがどーした?
792デフォルトの名無しさん:2012/02/07(火) 18:55:31.91
これだけ ぬるぽ が出てるのに誰もガッしないのはやはりObjCスレだからか?
793デフォルトの名無しさん:2012/02/07(火) 19:16:01.59
>>792
がっ
794デフォルトの名無しさん:2012/02/07(火) 23:48:15.96
795デフォルトの名無しさん:2012/02/08(水) 06:03:15.70
アプリ作ってると数時間でメモリが残り1G切るんだけどなんでだ?
ちなみにメモリは16G
796デフォルトの名無しさん:2012/02/08(水) 10:04:25.88
宇宙刑事シャリバンは、僅か1ミリ秒で赤射蒸着を完了する
797デフォルトの名無しさん:2012/02/08(水) 13:41:47.36
どうやって計ったの?
798デフォルトの名無しさん:2012/02/08(水) 14:17:29.22
いやそういう設定
799デフォルトの名無しさん:2012/02/08(水) 15:49:07.32
そこで、Apple としては、Objective-C# なんてどうですかね? w
800デフォルトの名無しさん:2012/02/08(水) 16:13:49.97
>>799
Objective-C++/CLIとセットで?
801デフォルトの名無しさん:2012/02/08(水) 16:54:47.77
Objective-VBだろ
C++/CLIはオワコン
802デフォルトの名無しさん:2012/02/08(水) 18:33:31.34
C#で開発させろとは言わないがそれと同等以上の環境はほしいな
803デフォルトの名無しさん:2012/02/08(水) 18:39:32.36
最近は馬鹿プログラマーはC#に集中しているのか?
804デフォルトの名無しさん:2012/02/08(水) 18:43:26.82
C#使ってる時に限れば、Visual Studioはなかなか素晴らしいよ。
805デフォルトの名無しさん:2012/02/08(水) 18:54:35.12
Visual StudioでObjective-Cも書きたいとこだなー
806デフォルトの名無しさん:2012/02/08(水) 19:02:57.27
>>804 Visual Studioのどこら辺が素晴らしいの?
807デフォルトの名無しさん:2012/02/08(水) 19:10:04.87
>>806
デバッガまわりかな。
あと補完とかリファクタとかも、Xcodeがぎこちなく感じる。
808デフォルトの名無しさん:2012/02/08(水) 20:00:58.53
慣れの問題じゃね?
809デフォルトの名無しさん:2012/02/08(水) 20:04:31.45
XCodeのデバッガはGDBだからGDB触ったことないと分らんだろうな。Unixでは定番のデバッガだけど。
810デフォルトの名無しさん:2012/02/08(水) 20:10:29.49
Xcode以前から普通に触ってるけど。
811デフォルトの名無しさん:2012/02/08(水) 20:11:37.32
GUIのフロントエンドだとdddなんかも使ってたよ。
812デフォルトの名無しさん:2012/02/08(水) 20:40:24.00
どっちにしろコマンド打たんといかんからGDBの知識はいるな。
813デフォルトの名無しさん:2012/02/09(木) 10:07:34.34
>>803
Javaから移行してる奴が多いんだから言わずもがなだろ
814デフォルトの名無しさん:2012/02/10(金) 00:29:56.71
NSMutableDictionaryでテーブルを表示して、その一行を削除したいんだけど、
NSMutableDictionaryにはkeyか全てを消すメソッドしか見当たらないのよね。
どうしたもんかしら。
815デフォルトの名無しさん:2012/02/10(金) 00:32:16.47
一行とかイミフ
816デフォルトの名無しさん:2012/02/10(金) 03:12:26.89
まず日本語
817デフォルトの名無しさん:2012/02/10(金) 07:08:21.10
翔泳社の「入門 Objective-C 2.0」てのを買ったんだけど、
「サンプルプログラムはxxxxフォルダにあります」という記述がちらほら。
CD-ROMとかついてないのにどこにあるの?どっかウェブで公開されてるの
かな。どこにも書かれてないようだけど…

誰か知ってる人いますか?
818デフォルトの名無しさん:2012/02/10(金) 09:43:16.51
ウェブ検索したら一発で出てきたぞ。
http://www.seshop.com/product/detail/10899/
819デフォルトの名無しさん:2012/02/10(金) 12:35:57.27
>>818
う、そのページ一度見たのに...ぼけてたのかな。
どうもありがとう。
820デフォルトの名無しさん:2012/02/10(金) 16:18:53.74
どうでもいいけどその本って、訳が微妙だよね。
あぁ、こういう文が原文だったのだろうな・・・とかいうのが感じれたり、
いちいち私たち私たちうるさい。
別に、分かりづらいことはないけどさ。
821デフォルトの名無しさん:2012/02/10(金) 17:10:18.95
どうでもいい
822デフォルトの名無しさん:2012/02/10(金) 19:01:35.49
教えてください。質問スレってどこでしょうか。お願いします。

ここでよろしければ教えてください。
UILabelで、英文を並べると、例えば「I am a pen.」って指定すると、
[I am a pen.]
っと、width指定サイズいっぱいいっぱいに表示されてしまい、解決方法を知りたく思います。
お願いします。
823デフォルトの名無しさん:2012/02/10(金) 19:02:22.83
[I    am    a    pen.]
ですね。>>822は半角スペースでキャンセルされたようです。
連投失礼しました。
824デフォルトの名無しさん:2012/02/10(金) 19:09:20.95
>>822
板違い。
[SDK]iPhoneアプリ開発初心者質問箱22[touch][iPad]
http://anago.2ch.net/test/read.cgi/mac/1328439802/
825デフォルトの名無しさん:2012/02/10(金) 19:19:20.61
>>824
誘導ありがとうございます
826デフォルトの名無しさん:2012/02/13(月) 01:59:37.93
obj-cしか出来ないけど将来大丈夫かな?
スクリプト言語のjsとかphpすら使った事がない。html.cssはデザインのセンスはないけど使える。
みんな他の言語使えるの?
827デフォルトの名無しさん:2012/02/13(月) 02:05:34.95
ObjC以外ならC、C++、Java、VB、C#、VB.NET、C++/CLI、JavaScript、Perl、PHPやれる
ObjC以外は全部仕事で使ってる
828デフォルトの名無しさん:2012/02/13(月) 02:25:05.70
>>826
Obj-Cができるなら、とりあえずCはOKってことでしょ?
それから、オブジェクト指向プログラミングについてもOK
なんだから、あとは何とでもなるよきっと
829デフォルトの名無しさん:2012/02/13(月) 08:20:28.11
>>826
心配なら勉強すればいい。けど、必要もないのに勉強だけしてもなかなかできるようにはならないかもね。

>>828
んなこたーない。retain/release に頼らずにメモリ管理できなきゃ C ができることにはならない。
830デフォルトの名無しさん:2012/02/13(月) 10:11:35.53
retain/releaseをちゃんと使えるなら、他のもすぐに使えると思う。
831デフォルトの名無しさん:2012/02/13(月) 13:29:47.03
retain/release 出来るなら、GC も ARC もすぐ使いこなせて当然だろうに……
832デフォルトの名無しさん:2012/02/13(月) 14:16:57.75
Cにはretain/releaseもGCもARCも無いわけで
833デフォルトの名無しさん:2012/02/13(月) 16:09:04.33
この頭の固さが全てを物語っている。
オブジェクト思考的言語を扱う者は統計的にとんでもない勘違的な間違いをする可能性的な傾向的にある。
それがオブジェクト思考的言語である的なー
834833:2012/02/13(月) 16:31:24.17
すまん、睡眠が少なかったのだと思う。
忘れてくれ。
とにかく寝たい
835デフォルトの名無しさん:2012/02/13(月) 18:27:58.22
GCはBoehmとかわりと使われてるじゃん。
836デフォルトの名無しさん:2012/02/13(月) 18:31:08.65
言語の仕様として存在するわけじゃないから
837デフォルトの名無しさん:2012/02/13(月) 18:34:45.17
C自体は超絶プリミティブな言語なんだから、
色々な道具を使ったり、必要とあらば作ったりもできるっていうのが
使いこなせるっていう事だと思うけどね。まあCに限った話じゃないけど。
838833:2012/02/13(月) 19:52:06.09
要は、プログラマーはバカばっか((いい意味で)自分目線)てことですよね。
839デフォルトの名無しさん:2012/02/14(火) 01:01:01.11
つmalloc/free
840デフォルトの名無しさん:2012/02/15(水) 02:43:36.73
ここD言語より勢いないじゃないか…
841デフォルトの名無しさん:2012/02/15(水) 02:44:34.42
幾つもスレがあるからな。
842デフォルトの名無しさん:2012/02/15(水) 04:19:40.01
>>840
この言語に関しては一番活発なのはApple板
843デフォルトの名無しさん:2012/02/15(水) 10:53:42.75
NSMutableDictionaryのデータをTableView(Macのアプリ)にソートして表示させるにはどうすればいいですか?
1列だけならNSArrayに格納してソートして表示させることはできました。
今度はNSMutableDictionaryの複数の列をTableViewに表示したいのです。
844デフォルトの名無しさん:2012/02/15(水) 11:14:35.50
>>843
array1 = { 3, 1, 2 }
array2 = { "b", "c", "a" }
があって、array1 でソートしたら
array2 = { "c", "a", "b" }
array2 でソートしたら
array1 = { 2, 3, 1 }
になって欲しいってこと?

複数の配列を使うかわりに、各行の情報を一つにまとめたクラスか NSDictionary の配列を使うべき。
845デフォルトの名無しさん:2012/02/15(水) 11:44:48.60
>>844
そういうことです。
データはNSMutableDictionaryで持っています。
知りたいのはNSMutableDictionaryの「ソートの方法」と「Table Viewへの表示方法」です。
846デフォルトの名無しさん:2012/02/15(水) 11:45:43.98
>>843
{
"key1"="value1";
"key2"="value2";
...
}
見たいな辞書があって
これとキーが同一の辞書が複数あってその配列を
列=同一キーで表示するってことだよね?

一列だろうと何列だろうと同じ方法で出来るよ
NSArrayControllerを使えばもっと楽かな?
847デフォルトの名無しさん:2012/02/15(水) 11:46:41.56
順序を定義するためにもう1個別の配列を使う。
848デフォルトの名無しさん:2012/02/15(水) 12:01:27.98
ソートは「NSArray ソート」でぐぐればいくらでも例が出てくる。
NSDictionaryを複数列のTableViewに表示するのは複数列のTableViewに何か表示する時の一番基礎
本家ドキュメントでも、どんな入門書でも必ずこのやり方が書いてある。
ほっとくのが一番。
849844:2012/02/15(水) 12:42:47.13
>>845
勘違いしてた。もともとデータは NSMutableDictionary で持ってるのね。
この配列をソートするには比較関数を渡してやる必要がある。たとえば、

NSMutableArray *array;  // NSMutableDictionary の配列

// key1 に対応する値が整数の場合
[array sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
  int num1 = [[obj1 objectForKey:@"key1"] intValue];
  int num2 = [[obj2 objectForKey:@"key1"] intValue];
  if (num1 < num2) {
    return NSOrderedAscending;
  } else if (num1 > num2) {
    return NSOrderedDescending;
  } else {
    return NSOrderedSame;
  }
}];

// key2 に対応する値が文字列の場合
[array sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
  NSString *str1 = [obj1 objectForKey:@"key2"];
  NSString *str2 = [obj2 objectForKey:@"key2"];
  return [str1 compare:str2];  // localizedStandardCompare: とかの方がいいかも
}];
850デフォルトの名無しさん:2012/02/15(水) 17:10:43.76
何でそんな面倒くさいことを教えるかな
NSArrayControllerを使えば一般的なソートだったらコーディングすらいらないじゃん

NSDictionary
↑自分で詰め込む
NSArray
↑CocoaBindingsか自分で設定
NSArrayController
↑CocoaBindingsで各列に接続
NSTableColumn

てやれば勝手にテーブルに表示してくれるし、カラムヘッダクリックすれば勝手にソートされる
851デフォルトの名無しさん:2012/02/15(水) 20:26:25.74
たしかに、3ミスもしといてノーミス選手相手に金メダルよこせというのは
おこがましいにも程があるわな。
852デフォルトの名無しさん:2012/02/16(木) 10:55:39.29
そうだな
853デフォルトの名無しさん:2012/02/16(木) 12:18:50.43
>>851
今のルールはチャレンジャーを評価する方向に振ってるからありえるだろ。
854デフォルトの名無しさん:2012/02/16(木) 12:39:10.56
あぁまたこんなとこに誤爆っとった。スマヌ
855デフォルトの名無しさん:2012/02/16(木) 12:42:28.20
自演の誤爆・・・
856デフォルトの名無しさん:2012/02/17(金) 02:51:25.06
山ライオンでobj-cに変化ってくるの?
857デフォルトの名無しさん:2012/02/17(金) 03:13:36.18
多分、Siri も Mountain Lion に来るね。
858デフォルトの名無しさん:2012/02/17(金) 03:17:32.14
そんなあちこちで動かしたら鯖もたないんじゃね?
859デフォルトの名無しさん:2012/02/17(金) 10:20:45.12
>>858
iPhoneの数に比べたらMac OSは誤差だろ
860デフォルトの名無しさん:2012/02/17(金) 11:22:27.94
>>735
もうついたよ!
はやくしないとなくなっちゃうよ‼
861デフォルトの名無しさん:2012/02/17(金) 12:01:07.96
objcのGCはすでにオワコン
信者が崇拝してるだけで、みんなARCに移住中
862デフォルトの名無しさん:2012/02/17(金) 12:09:43.00
Luaにすら負けそう
863デフォルトの名無しさん:2012/02/17(金) 12:21:53.31
あぁ〜、クッ
864デフォルトの名無しさん:2012/02/17(金) 13:09:49.25
おでも最近ようやくARC使い始めた
865デフォルトの名無しさん:2012/02/17(金) 17:10:55.65
NSArray *array = @[ a, b, c ];
NSDictionary *dict = @{ k1 : o1, k2 : o2, k3 : o3 };
NSNumber a = @123, b = @YES, c = @'x';
866デフォルトの名無しさん:2012/02/17(金) 17:12:27.32
あらあら
867デフォルトの名無しさん:2012/02/17(金) 17:51:19.94
うふふ
868デフォルトの名無しさん:2012/02/17(金) 17:55:09.08
>>861
ARCって何に使うの?

869デフォルトの名無しさん:2012/02/17(金) 18:17:58.15
おーとまちっくりふぁれんすかうんてぃんぐやで。
870デフォルトの名無しさん:2012/02/17(金) 18:18:16.72
ググレばか
871デフォルトの名無しさん:2012/02/17(金) 18:21:31.31
ARCって、こんなコード書いても大丈夫なん?

MyObject *mo = [[MyObject alloc] init] retain] retain] retain];

872デフォルトの名無しさん:2012/02/17(金) 18:22:30.74
明示的にretainを書くのはエラー。
873デフォルトの名無しさん:2012/02/17(金) 18:25:31.22
そうなんだ? じゃこれははてな

MyObject *mo = [[MyObject alloc] init] copy] copy] copy];
874デフォルトの名無しさん:2012/02/17(金) 18:31:21.27
変数が参照してるの以外はすぐ捨てられちゃうはず。
875デフォルトの名無しさん:2012/02/17(金) 18:45:27.31
まじですか。基本的にretainもreleaseもいらないってことですね。
かなり便利そうですね。
876デフォルトの名無しさん:2012/02/17(金) 19:32:10.87
でも俺はいまだに信じられないw
877デフォルトの名無しさん:2012/02/17(金) 19:36:30.72
俺も信じられないので「はず」と書いたw
878デフォルトの名無しさん:2012/02/17(金) 19:52:57.58
deallocが呼ばれるか試したらいいじゃん
879デフォルトの名無しさん:2012/02/17(金) 20:07:12.77
言いだしっぺが試すの法則
880デフォルトの名無しさん:2012/02/17(金) 20:21:42.07
呼ばれるに決まってるモノを試す必要はない。
「信じられない」とか言ってる奴がやれよ。
881デフォルトの名無しさん:2012/02/17(金) 20:24:35.13
まあちゃんとやっているのでだろうが信じられないんだよw
自嘲の「w」だぞ。なにマジ言っているんだか
882デフォルトの名無しさん:2012/02/17(金) 20:36:57.94
MyObject *mo = [[MyObject alloc] init] copy] copy] copy];
だと最終的にdeallocが4回呼ばれるってことだよぜ?
883デフォルトの名無しさん:2012/02/17(金) 20:41:14.28
やればわかるよ
884デフォルトの名無しさん:2012/02/17(金) 20:55:11.81
信じられないのはARC全般な
retain/release/autoreleaseの美しさ(オーナーシップの委譲を全く意識せずにできるところとか)に魅了されて使い込んでいたのとCなのにていう
retain/releaseが「使えない」、自分で明確に破棄できない(nil突っ込んだらいいんだけど)てのにCなのにていう
885デフォルトの名無しさん:2012/02/17(金) 20:55:28.48
信じられないっていうのは、魔法のようで素晴らしいって意味だよハゲども。
886デフォルトの名無しさん:2012/02/17(金) 20:56:58.36
笑った。うまいこというね
887デフォルトの名無しさん:2012/02/17(金) 20:58:19.16
試してみました。
そしたらなんと驚愕の結果となりました。
888デフォルトの名無しさん:2012/02/17(金) 21:07:27.57
ARCではコンビニエンスコンストラクタってナニに使うの?
889デフォルトの名無しさん:2012/02/17(金) 21:10:58.11
NSCopyingプロトコルに適合したMyObjectのdeallocに
- (void)dealloc
{
NSLog(@"dealloc");
}
と書いて、(dealloc内で[super dealloc]の呼び出しもいらないんですね!)

MyObject *mo = [[[[[MyObject alloc] init] copy] copy] copy];
NSLog(@"end");

ってやったら、ログが
dealloc
dealloc
dealloc
end
dealloc

って出ましたよ。
つまり、NSLog(@"end");に来る前に、不要な3つがリリースされてるみたい。
つうことは単にautoreleaseつけてるわけでもなさそう?
なんかかしこいかも。
890デフォルトの名無しさん:2012/02/17(金) 21:18:24.62
おつかれさま。その場その場でreleaseなのねえ。賢いねえ
(アバターつまんない/思ったよりショボい)
891デフォルトの名無しさん:2012/02/17(金) 21:21:02.02
AutoreleasePoolへは、コンビニエンスコンストラクタ的な名前のメソッドから返したオブジェクトが突っ込まれる。
892デフォルトの名無しさん:2012/02/17(金) 23:12:31.36
独立の仕方
スマートフォンアプリを中心に売る
サーバーはクラウド VPS
電話はスマートフォンSkype
オフィスはコワーキングスペースを借りる
http://bit. ly/sHz1UU
または
地方にプレハブ型の格安高性能オフィスを建て(300万〜500万)
レンタル自習室&シェアオフィスで収入を得ながらそこでアプリを開発する
http://bit. ly/iLIpJa
http://bit. ly/m7nkew
893デフォルトの名無しさん:2012/02/17(金) 23:18:27.19
リンクうぜえ…
894デフォルトの名無しさん:2012/02/17(金) 23:29:02.03
このコピペも息が長いな
895デフォルトの名無しさん:2012/02/18(土) 04:49:16.10
この言語は、あと何年もつかね?
896デフォルトの名無しさん:2012/02/18(土) 05:19:16.41
897デフォルトの名無しさん:2012/02/18(土) 17:51:15.09
>>895
appleが持つ間ずっと。
これから膨大なクラスライブラリを書き換える体力なんてappleにはないし、
objcをc/c++へ書き換えることに、ほとんどなんのメリットもない。
898デフォルトの名無しさん:2012/02/18(土) 18:27:17.79
MacのクラスライブラリもObjCで記述されてるのはインタフェースの部分だけだがな
899デフォルトの名無しさん:2012/02/19(日) 02:10:22.42
iOS5でカレンダーのイベント追加でアラームが付かなくなってしまった…
どうしたらこれは解決出来るんだろう
900デフォルトの名無しさん:2012/02/19(日) 03:06:58.08
マルチ乙。スレチ乙
901デフォルトの名無しさん:2012/02/19(日) 03:32:00.41
>>900
Objective-Cのプログラムに関する質問はどこでするのが正しいのでしょうか
902デフォルトの名無しさん:2012/02/19(日) 03:34:51.17
903デフォルトの名無しさん:2012/02/19(日) 03:53:28.11
>>902
ありがとうございます。
ご迷惑をお掛けしました。
904デフォルトの名無しさん:2012/02/19(日) 03:55:18.40
>>897
だよな。よく考えたらAppleは世界一の会社だしobjcを追求し続けるか。
905デフォルトの名無しさん:2012/02/19(日) 14:50:18.25
>>889
えっ?
[super dealloc];
いらないの??

それだと、単にLog吐き出す不完全なオーバーライドになってないか??
906デフォルトの名無しさん:2012/02/19(日) 15:04:01.73
ARCならいらない。
907デフォルトの名無しさん:2012/02/19(日) 15:10:20.53
[super dealloc] は必ずこの文として必要だったから、ARCでは勝手に呼ぶようになったのでしょう
908デフォルトの名無しさん:2012/02/19(日) 15:11:26.89
そうなんだね。例えばここか
http://www.zero4racer.com/blog/261

便利そうだけど、自分のコントロール範囲外で何がか処理されるのは、何となく不安

まあ、他の言語でもGCは普通にあるし、気にしなくていいといえばそうなんだろうけど
909デフォルトの名無しさん:2012/02/19(日) 15:35:10.90
ARCを使うとして、メンバ変数にオブジェクトをずっと保持しておきたい時にはどうすればいいんでしょうか。
単に、

MyObject *myObject_;

を定義して、
init メソッド内で

myObject_ = [[MyObject alloc] init];

ってやればいいんですかね? どっかで勝手にリリースされないですか?
それとも strongつけてプロパティ宣言しないとダメですか?

もしこれでOKだとして、initメソッドに渡された場合はどうでしょう?
これまでは、

- (id)initWithObject:(MyObject *)object
{
 :
  myObject_ = [object retain];
 :
}
ってやって、deallocでreleaseしてましたけど、retainもreleaseも使えないんですよね?
この場合は、strongつけてプロパティ宣言するしかないんでかね?
910デフォルトの名無しさん:2012/02/19(日) 15:42:52.97
変数は黙ってればデフォでstrongだと思う。
911デフォルトの名無しさん:2012/02/19(日) 15:50:17.75
あぁ、メンバ変数はデフォで__strongがつくということですね。
つまりそのクラスの生存期間中は保持されてるということですかね。

外から渡されたパラメータも、
- (id)initWithObject:(MyObject *)object
{
 :
  myObject_ = object;
 :
}

とやって保持すればオッケーってことですかね。
912デフォルトの名無しさん:2012/02/19(日) 15:51:46.07
自分はドキドキしながらそうしてる。
調べてもリークしたり捨てられたりはしてなさそう。
913デフォルトの名無しさん:2012/02/19(日) 15:56:13.78
ということは、今までメモリ管理の簡便化のためだけにわざわざプロパティにしてたようなものも、
メンバ変数にするだけで、メモリ管理を意識しなくてもいいってことですかね。
こりゃ楽ですね。本当に外部に公開したいものだけプロパティにすればいいんですよね。
delegate みたいな今までassign してたようなものは、__weekをつけたり、プロパティでweekにして
やればいいんですね。
914デフォルトの名無しさん:2012/02/19(日) 16:55:23.40
__weakね
915デフォルトの名無しさん:2012/02/19(日) 17:16:42.38
あぁ、weakです、weakです。weekじゃないです、weakです。す、すみません。
916デフォルトの名無しさん:2012/02/19(日) 18:47:31.26
無名カテゴリでプライベートなプロパティ作れるよ
モダンランタイムならインスタンス変数もいらないから、ヘッダからは完全に隠される
917デフォルトの名無しさん:2012/02/19(日) 18:53:06.12
>>916
ARC を使わないならそうだけど、「メモリ管理の簡便化のためだけにわざわざプロパティにしてた」ってのはプロパティの本来の目的ではないからね。
918デフォルトの名無しさん:2012/02/19(日) 19:23:56.60
>>917
それやりまくったらデバッグし難くなって後悔した。
919デフォルトの名無しさん:2012/02/19(日) 19:52:46.27
Objective-CもこれでちょっとだけJavaの域に近づいたな。まだまだだけど。
920デフォルトの名無しさん:2012/02/19(日) 19:55:23.40
weakにすると破棄された時にnilを設定してくれるから、余計なトラブルの種が減っていいな。
921デフォルトの名無しさん:2012/02/19(日) 19:59:29.87
>>919
なにをもってそう言っているのかわからんが流れから言ったらARCか?
見当違いで恥ずかしいですぜ
922デフォルトの名無しさん:2012/02/20(月) 09:26:08.61
NSString型のプロパティって、本の真似っ子でよく考えずに、copy で宣言してるんですけど、
あえて、retainで宣言した方がいいケースってあるんでしょうか?
923デフォルトの名無しさん:2012/02/20(月) 10:26:46.49
NSStringのプロパティにはNSMutableStringを設定できる
ということはretainだとプロパティのオーナーが知らないうちに内容が書き換えられる可能性がある
NSStringに限ったことじゃないけど、NSStringはメモリ上でも大した量にならなさそうだからな
でも、俺はなんかもったいないwからretain使ってるけど
924デフォルトの名無しさん:2012/02/20(月) 10:30:30.96
ああ「あえて」ってのは無いんじゃないの
文字列はその中身が必要であって、インスタンスを共有とかコピーされたら本来の動作はできないとか無いだろうから
925デフォルトの名無しさん:2012/02/20(月) 10:51:19.16
>>923
あぁNSMutableStringのことすっかり忘れてました。なるほど!
>>924
あまり気にしないでよさそうですね。ありがとうございます。
ループの中とかで大量に処理するときはretainの方がいいのかもしれないですね。
926デフォルトの名無しさん:2012/02/20(月) 10:54:04.98
>>925
NSString などの immutable なオブジェクトに対する copy は実際には retain が実行されるから、メモリ消費は気にしなくていいよ。
927デフォルトの名無しさん:2012/02/20(月) 11:06:19.24
あら、そうなのっ?改めようw
間接的だがお礼申し上げます
928デフォルトの名無しさん:2012/02/20(月) 11:16:59.54
>>926
え、そうなんですか。かしこいんですね!
ということは、通常はcopyで問題なさそうですね。
勉強になりました! ありがとうございます。
929デフォルトの名無しさん:2012/02/20(月) 11:20:31.66
テストした。なんか感動したw賢いねえ
930デフォルトの名無しさん:2012/02/20(月) 14:13:07.59
ARC便利だな。もうiOS5未満は切り捨てちまおうw
931デフォルトの名無しさん:2012/02/20(月) 16:34:52.68
weakを諦めればOS4以前でもARCは使えるよ
932デフォルトの名無しさん:2012/02/20(月) 18:41:14.72
マジで? でもそれこそおっかなびっくりだな。
933デフォルトの名無しさん:2012/02/21(火) 04:31:10.32
この言語ムズ過ぎ。頭ハゲそう
934デフォルトの名無しさん:2012/02/21(火) 09:50:39.76
むしろ毛がわさわさ生えてくるレベル
935デフォルトの名無しさん:2012/02/21(火) 10:37:14.97
ARC便利なんだけど、昔の非ARCのコードの保守とかする時にやらかしそうで怖いw
936デフォルトの名無しさん:2012/02/21(火) 20:48:26.15
>>935
全部ARCに書き換えちゃいなYO
937デフォルトの名無しさん:2012/02/21(火) 22:06:58.60
ARCってiOSが管理してるんじゃなくて、App単位でARC機能がbuildに組み込まれるイメージ?
言いたいのはiOS4で走らせてもARCはAppに実装されるのでARCが動くかどうか?ということです
938デフォルトの名無しさん:2012/02/21(火) 22:28:30.14
ARC便利そうだけど踏み切れないな。なかなか
939デフォルトの名無しさん:2012/02/21(火) 23:04:21.51
ARC自体はコンパイルするときにコンパイラがコードを仕込む。
ただしweakはランタイムのサポートが必要。だと思った。
940937:2012/02/21(火) 23:08:17.40
>>939
なるほど、それはすばらしいな。
それで>>931なのね
ありがと
941デフォルトの名無しさん:2012/02/21(火) 23:17:16.07
>>938
俺もなかなか踏み切れなかったけど、
新しいプログラムで思い切って使ってみたら
便利すぎワロタって感じだったよ。

でもweakはまだ活用してない。
942デフォルトの名無しさん:2012/02/22(水) 00:04:56.45
strong >>>> 越えられない壁 >>>>>> weak
943デフォルトの名無しさん:2012/02/23(木) 10:37:41.90
みんなこの言語どこで覚えた?
書籍だと相談相手もいないで、1人で覚えるしかないよね。仕事で覚えるが1番いいのかな?
944デフォルトの名無しさん:2012/02/23(木) 10:51:32.67
そんな奴、仕事で使いたくねえよ。
945デフォルトの名無しさん:2012/02/23(木) 10:52:07.83
自分は業務系SEだけど、Objective-Cなんて仕事ではやらないので
書籍で覚えた。

あとググるか、2chで聞くぐらい。
946デフォルトの名無しさん:2012/02/23(木) 11:32:27.73
Objective-C覚えたらSchemeやらなくていいかな?
よくScheme覚えたほうが良いとか言われてるけど
両方覚えるのは辛い
947デフォルトの名無しさん:2012/02/23(木) 13:00:16.32
schemeは覚えなくてもいいとは思うけどやったらやったで世界がひろがりんぐだよ
obj-cとは全然違う世界なのでやっても損はないと思う
ただし仕事に使えるかというとまず使わないねw
948デフォルトの名無しさん:2012/02/23(木) 18:23:47.73
その2つは並べてどちらにしようか考えるものではない
949デフォルトの名無しさん:2012/02/23(木) 18:45:46.83
schemeはループは再帰で表現するんだぜ。
なんというか根本的に違う感じ。
950デフォルトの名無しさん:2012/02/24(金) 01:31:15.84
>>943
自力
もともとはCocoaでMacのソフト作りたくて始めた
最初見た時は何じゃこりゃって思ったけど、使ううちに慣れた
Javaはすでに経験あったから、オブジェクト指向の部分では苦労しなかった
951デフォルトの名無しさん:2012/02/24(金) 03:47:21.60
こういう事はtwitterで有名なObjC使いにメンション送りまくったりして聞くのが良い
俺を含めこんな所に来てる雑魚の勉強法なんて聞く価値もない
952デフォルトの名無しさん:2012/02/24(金) 03:52:52.10
あまりレベルが違いすぎると参考にならんけどな
953デフォルトの名無しさん:2012/02/24(金) 07:17:14.76
教えてくれる友人がいたら1番いいんだろうな。
954デフォルトの名無しさん:2012/02/24(金) 07:40:24.36
聞かなきゃできないって時点で才能ないよ
955デフォルトの名無しさん:2012/02/24(金) 10:09:03.87
才能とかイラネ
956デフォルトの名無しさん:2012/02/24(金) 10:15:10.27
俺は元から天才だしw
957デフォルトの名無しさん:2012/02/24(金) 10:24:33.71
ドカタやるのに才能など必要ない
958デフォルトの名無しさん:2012/02/24(金) 10:25:44.43
才能に頼ってる時点で見込みないよ
959946:2012/02/24(金) 11:44:43.79
すみません SchemeじゃなくてSmalltalkでした(汗
Schemeだと質問が意味不明でしたね
960デフォルトの名無しさん:2012/02/24(金) 13:32:22.64
目的がないなら両方いらね
961デフォルトの名無しさん:2012/02/24(金) 22:02:14.42
>>959
Smalltalkって話は聞いたり読んだりするけど、実物は知らない
なに?いま流行ってるの?
Objective-Cでいいんじゃないのお
962946:2012/02/24(金) 22:34:24.28
>>961
Objective-CはCとSmalltalkを組み合わせて作ったそうなので
多少違うにせよObjective-C覚えたらSmalltalk覚えなくても
いいのかなと思ったわけです
963デフォルトの名無しさん:2012/02/24(金) 22:52:59.69
頭悪そーな発想だな
964デフォルトの名無しさん:2012/02/25(土) 00:33:49.42
Smalltalkも紆余曲折あって複雑になってるからねぇ
今でも非営利なら無料でダウンロードできると思うよ
どうしてもってんならcincomでググれ
965デフォルトの名無しさん:2012/02/25(土) 12:10:57.93
>>964
遠慮しときます
966デフォルトの名無しさん:2012/02/25(土) 17:03:45.04
MacやiOSのプログラミングをするなら学ぶ理由は大いにあるけど
言語としてはすでに終わってるものだからな
どうあがいてもこれ以上普及することも無いしな
967デフォルトの名無しさん:2012/02/25(土) 17:25:27.28
言語自体の発展は殆どないかも知れんが普及云々で言えばappleの頑張り次第
968デフォルトの名無しさん:2012/02/25(土) 17:28:43.10
Smalltakeの話をしてることろに割り込んできた >966 はどの言語の話をしてるの?
>967も
969デフォルトの名無しさん:2012/02/25(土) 17:58:42.45
>>966
自分が出来ないからって終わった言語にするな。終わってるのはお前の小学生並の頭だよ。
970デフォルトの名無しさん:2012/02/25(土) 18:26:49.51
お前等のその必死さでこれの現状がよくわかる。
971デフォルトの名無しさん:2012/02/25(土) 18:54:47.42
特定目的向けの言語なんて、べつに流行る必要もないと思うけどな。
どこもかしこもobjcになったら、それはそれで困るわ。
972デフォルトの名無しさん:2012/02/25(土) 19:10:55.33
誰もそんなこと言ってないと思うけど?
973デフォルトの名無しさん:2012/02/25(土) 19:15:29.43
ああ>>966 はSmalltalkのことだと思ってた
なるほど、Objective-Cのことを言っているととれないこともないな
まあ仮にアンチがいるんだったらそれはそれで注目されているからいいじゃんw
974デフォルトの名無しさん:2012/02/25(土) 19:18:31.20
>>972
>>966,967,969,970
この変の流れに対してだよ。

そんでもって、MacやiOS向けの言語としては、もう十分に普及してると思う。
975デフォルトの名無しさん:2012/02/25(土) 19:24:56.05
>>974
すまんす
「すでに終わってるもの」ってことからSmalltalkだろって俺は思ってたんだけどな

仮にアンチだとしてこんなとこに飛び込んでくるアンチなんて相手にしなくていいのになあ
976966:2012/02/25(土) 19:31:49.37
もういいや、コード書こうぜ
977デフォルトの名無しさん:2012/02/25(土) 19:32:49.52
終わってるっていうけど、ここ最近けっこうな勢いで進化してるよね。
見ててちょっとわくわくするくらい。
978976:2012/02/25(土) 19:33:23.55
あれ、なんで俺の名前欄に966なんて入ってんだ…別人です
979デフォルトの名無しさん:2012/02/25(土) 20:18:02.45
そういうの白ける
980デフォルトの名無しさん:2012/02/27(月) 15:21:46.12
エラーが分かりづらい仕様を直さない限りマイナー言語のままだろうな

981デフォルトの名無しさん:2012/02/27(月) 15:34:51.97
その辺はJavaや.NETを見習ってほしいわな
982デフォルトの名無しさん:2012/02/27(月) 15:54:43.38
Appleは言語の普及とか考えてないだろ
Appleに何を期待してるんだ?
983デフォルトの名無しさん:2012/02/27(月) 15:56:49.85
普及は考えてないにしてもエラーをわかりやすくしてほしいものだ
984デフォルトの名無しさん:2012/02/27(月) 16:38:03.96
llvmなんだから。llvmやgccはこんなもんじゃないの
985デフォルトの名無しさん:2012/02/27(月) 16:40:00.67
C#やJavaのエラーも分り易いとは思えないけどな。
986デフォルトの名無しさん:2012/02/27(月) 16:41:21.04
分かりやすい分かりづらいが単に日本語で出ないだとかだと笑わす
987デフォルトの名無しさん:2012/02/27(月) 16:43:56.34
分り易いエラーってあれか、
ここがこういう理由で間違っているので、ここをこうしてこういう風に修正してね♥
って感じか
988デフォルトの名無しさん:2012/02/27(月) 16:46:15.42
そこまで言われると鬱陶しいw
989デフォルトの名無しさん:2012/02/27(月) 16:48:17.24
clangのstatic analyzerはそれぐらい言ってくるぞw
990デフォルトの名無しさん:2012/02/27(月) 16:49:41.70
スタックトレースのこと言ってるんじゃ?
違うか・・・
991デフォルトの名無しさん:2012/02/27(月) 16:50:18.13
エラーが起こったクラスくらいは表示してほしいわ
毎回mainに飛ばされるしイライラしないか?
992デフォルトの名無しさん:2012/02/27(月) 16:54:03.73
それはデバッガーの問題じゃないのか
それは特に Xcode 4 のデバッガーがタコになった/表示がわかりづらくなっただけじゃないのか
993デフォルトの名無しさん:2012/02/27(月) 16:54:32.83
>>991
それはデバッガの使い方を知らないだけ
言うべきは「objcどうにかしろ」じゃなくて「Xcodeどうにかしろ」だな
994デフォルトの名無しさん:2012/02/27(月) 16:57:02.60
実行時エラーの話かよ!
NSZombieEnabledとMallocStackLoggingとNSDebugEnabledは有効にしてんだよな?
995デフォルトの名無しさん:2012/02/27(月) 17:02:16.04
なにげに >>990 がすごい件w
996デフォルトの名無しさん:2012/02/27(月) 17:12:47.64
>>989
Xcode 3 でちょっと使ってみただけで使ってなかったけど、Xcode 4 で試してびっくらした
鬱陶しいわっ!w
997デフォルトの名無しさん:2012/02/27(月) 17:20:57.04
よっぽどイレギュラーなコード書いてるんだろ。
998デフォルトの名無しさん:2012/02/27(月) 17:25:59.88
analyzerが後でごにょごにょ動くのが別にいらんってだけだけど
有用性は別に否定してない
999デフォルトの名無しさん:2012/02/27(月) 17:26:51.18
ちょっと関数書いたら、先に宣言しろとか出るのはちょっと鬱陶しいね。

Objective-C [ObjC part:7];
http://toro.2ch.net/test/read.cgi/tech/1330330906/
1000デフォルトの名無しさん:2012/02/27(月) 17:27:59.54
self = NULL;
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。