Objective-C [ObjC part:7];

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

Objective-C [ObjC part:6];
http://toro.2ch.net/test/read.cgi/tech/1313891268/

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デフォルトの名無しさん:2012/02/27(月) 17:23:02.21
*** プログラム技術板 ***
【マック】Macintoshプログラミング質問箱
http://toro.2ch.net/test/read.cgi/tech/1113058054/

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

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

iPod touch/iPhone ネイティブアプリ製作 ver.16
http://anago.2ch.net/test/read.cgi/mac/1312723856/
3デフォルトの名無しさん:2012/02/27(月) 17:23:48.25
4デフォルトの名無しさん:2012/02/27(月) 17:24:49.73
5デフォルトの名無しさん:2012/02/27(月) 17:26:04.20
ダイナミック Objective-C サイト
http://journal.mycom.co.jp/column/objc/

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

英語のサイト
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
6デフォルトの名無しさん:2012/02/27(月) 17:42:32.87
Windowsでどうにかして開発する方法をおしえてください
7デフォルトの名無しさん:2012/02/27(月) 17:46:24.95
>6
GNUstep
8デフォルトの名無しさん:2012/02/27(月) 17:51:53.10
最近のDelphiってiPhoneアプリも作れるんだな。スレチだけど。
9デフォルトの名無しさん:2012/02/27(月) 17:55:19.70
なるほど、MONO経由か
10デフォルトの名無しさん:2012/02/27(月) 18:54:54.43
>>7
入れてみたけど何か動かなかったしアプリが作れるわけじゃない見たいですね
11デフォルトの名無しさん:2012/02/27(月) 18:56:26.82
お前には無理。
12デフォルトの名無しさん:2012/02/27(月) 18:56:33.08
Mac買うのが苦痛
13デフォルトの名無しさん:2012/02/27(月) 19:09:06.43
>>12
>>7 もしくはスレ違い
14デフォルトの名無しさん:2012/02/27(月) 20:41:07.74
>>12
5万台で買えるじゃないか・・・。
15デフォルトの名無しさん:2012/02/27(月) 20:43:04.64
それmac miniでしょ?
macっていまいちよくわかんないけどmacを買わないと開発できないんですよね?
macとmac miniって同じ何須加?
16デフォルトの名無しさん:2012/02/27(月) 20:46:40.76
>>15
mac miniもMacだよ。
iMacもMac book もMac ProもMac。
今俺が開発してるのもMac mini。
Mac miniには通称梅・竹・松のエディションがあって、
俺は松(Server)を使ってる。
梅が一番安い。メモリも自分で簡単に交換出来る。
HDDの換装は、分解する作業が必要になる。
17デフォルトの名無しさん:2012/02/27(月) 20:46:57.74
同じ何須世路死苦
PCでMac miniの筐体と似たようなのあるだろ?あれも普通のPCだろ。そゆこと
18デフォルトの名無しさん:2012/02/28(火) 08:54:53.72
しっかしCoreDataとか逆に分かりにくくなってるような気がするんだがなんの為に作ったんだろうな 挙動が不安定だし使ってるやついないだろ
19デフォルトの名無しさん:2012/02/28(火) 09:29:09.96
>>1
乙ぽ
20デフォルトの名無しさん:2012/02/28(火) 14:27:43.66
>>1
乙ですぅ
21デフォルトの名無しさん:2012/02/29(水) 15:21:23.25
ipad3くるぞーー
22デフォルトの名無しさん:2012/02/29(水) 19:21:41.42
逃げろーー
23デフォルトの名無しさん:2012/03/02(金) 04:37:48.39
ホンマ糞言語だなこれ
勝手な処理多すぎだろ 素直に出力しろやクズ
24デフォルトの名無しさん:2012/03/02(金) 04:47:37.88
勝手な処理って例えば?
25デフォルトの名無しさん:2012/03/02(金) 07:02:21.47
多すぎと言う程処理系無いしね。
26デフォルトの名無しさん:2012/03/02(金) 16:04:39.39
荻原本ってどうなの?読んどいた方がいいの?
27デフォルトの名無しさん:2012/03/02(金) 16:11:06.93
うん。
28デフォルトの名無しさん:2012/03/02(金) 18:40:09.84
そりゃ読まないより読んだ方がいいだろ
29デフォルトの名無しさん:2012/03/02(金) 18:41:53.30
世の中には読んだら害になる本もあるから警戒するのもむべなるかな
30デフォルトの名無しさん:2012/03/03(土) 14:04:22.43
Obj-C糞とか言ってるやつは、理解できないやつか、
嫉妬してるやつだけ
31デフォルトの名無しさん:2012/03/03(土) 18:04:13.26
俺はObj-C糞とか言ってるやつ(>>23)が理解できないけどなw
32デフォルトの名無しさん:2012/03/04(日) 12:35:18.83
Objcに関して質問です。
@selectorで指定されるメソッドの引数がどのように確定してるのかご指導ください。

addTarget等で指定されたメソッドの第一引数は何故かaddTargetのメッセージを受けたオブジェクト自身が格納されます。
第二引数以降があるメソッドに任意のオブジェクトを引数で渡したい場合はどうするんでしょうか?

33デフォルトの名無しさん:2012/03/04(日) 14:04:54.92
@selectorを使うメソッドによる。addTarget云々はあなたがそうしているからそうなっている
@selectorのメソッドを呼び出したいのなら、performSelector: のバリエーションを見るといい

addTarget云々ということは、addTargetで指定したアクションメソッドに追加で引数を与えたいとかなんだろうけど、
- (IBAction)actionMethod:(id)sender
は決まり事なので、無理です
34デフォルトの名無しさん:2012/03/05(月) 09:58:49.97
この糞言語エラーが分かりにくすぎるわ
いらん時間取られるしエラーになるならきちんとどこがエラーなのか表示しろと。
ゴミ以下だな
35デフォルトの名無しさん:2012/03/05(月) 10:11:15.66
馬鹿には無理
36デフォルトの名無しさん:2012/03/05(月) 11:23:52.92
それは言えてる
37デフォルトの名無しさん:2012/03/05(月) 12:44:32.68
  / ̄ ̄ ̄ ̄~\
  / \____ \
 |       |
 |       |
 /\       |
`/  \______/
| / ∠__  __ヽヽ
|ミ≦ヒOソヽ /ヒO≧彡|
|i |   |  / ノ
|| 人ッ)  | //
/ | ト-<  ニ´/(_)
 ||⌒\_/ヽイ
 ||     ミ|
ノ||`ー――-"  ̄ヽ
 |/       |
38デフォルトの名無しさん:2012/03/05(月) 15:12:22.49
それはメーテル
39デフォルトの名無しさん:2012/03/05(月) 21:09:35.16
>>34
身の丈を知り、時には諦めることも大切だよ
40デフォルトの名無しさん:2012/03/05(月) 22:00:11.29
Apple「馬鹿にはアプリが作れないから審査が楽だわw
41デフォルトの名無しさん:2012/03/05(月) 22:01:12.06
>>40
なんと、そこに狙いがw
42デフォルトの名無しさん:2012/03/05(月) 22:13:54.42
>>34
Xcodeならエラーはきちんと表示されるけど。
43デフォルトの名無しさん:2012/03/05(月) 22:19:03.56
>>34
残念ながらこの世には、すでに数万、数十万というiOS appが
Obj-Cで書かれリリースされているのだよ。。
44デフォルトの名無しさん:2012/03/05(月) 22:51:43.26
そういう勝ち誇り方はやめようぜ。一応技術系の板なんだし。
45デフォルトの名無しさん:2012/03/05(月) 23:00:24.05
でもそれだけの人数が理解してきっちりプログラム書いてるのにそれについていけずに悪態つくなんて、ねえ…
とは思うわ
46デフォルトの名無しさん:2012/03/05(月) 23:09:04.07
使用人口と言語自体の良さは比例しない
47デフォルトの名無しさん:2012/03/05(月) 23:10:47.93
はいはいついていけないんだから諦めましょうね
48デフォルトの名無しさん:2012/03/05(月) 23:26:18.08
>>46
このスレはObjective-Cのスレですが
CやC++やJava(やC#?)は別にスレがあるのでそちらへどうぞ
49デフォルトの名無しさん:2012/03/06(火) 00:27:44.73
エラーがでます!っていってエラーの内容を書かない人は技術系の板には来ないでほしいな
50デフォルトの名無しさん:2012/03/06(火) 00:34:31.38
どうせ、作り話か、エラーが出たらすぐ投げ出しちゃう根性なしとみた
51デフォルトの名無しさん:2012/03/06(火) 10:49:05.68
4.2以降、初心者向けに変わってきた気がする。
52デフォルトの名無しさん:2012/03/07(水) 09:44:46.17
どこでエラーが出るかは書いてない
種類は出るけどな
これが糞言語と言われる所以
53デフォルトの名無しさん:2012/03/07(水) 10:05:54.12
>>52
えltu?
54デフォルトの名無しさん:2012/03/07(水) 10:13:15.26
いつものヤツとしか思えない。そしてやっぱり>>35,39だなとつくづく
どうして馬鹿は自分を上においてもの言うのかな。まあだから馬鹿だと周知してくれているんだけど
55デフォルトの名無しさん:2012/03/07(水) 12:27:08.21
デバッグオプションもつけず標準のまま使ってるんだろ。
56デフォルトの名無しさん:2012/03/07(水) 12:47:43.96
馬鹿にも優しいお前にあこがれるw
57デフォルトの名無しさん:2012/03/07(水) 20:34:52.89
>>52
それさ、言語の問題か?。。
58デフォルトの名無しさん:2012/03/07(水) 20:36:50.77
>>54

>>39です
諦めという選択も時には必要だという一般論を言っただけです
59デフォルトの名無しさん:2012/03/07(水) 23:42:00.29
>>58
んす。ダシに使ってすまん
60デフォルトの名無しさん:2012/03/08(木) 21:11:58.80
この言語もう進化しないの?
61デフォルトの名無しさん:2012/03/08(木) 21:14:25.85
Obj-C 2.0 以降、最近のARCやら着々と進化し続けてますが?
62デフォルトの名無しさん:2012/03/08(木) 21:16:12.78
最近やっと進化する気になったという感じ。
63デフォルトの名無しさん:2012/03/08(木) 22:23:58.81
Xcode 4 に慣れてソース書いていたら、Xcode 3 でエラー出て嫌になっちゃうよね
64デフォルトの名無しさん:2012/03/08(木) 22:49:45.46
Xcode3使う必要なんて無いじゃん
65デフォルトの名無しさん:2012/03/08(木) 23:22:13.75
OSX, iOSの開発環境は、すぐ前のものが陳腐化するよね
まあ、それくらい変化が速いってことなんだけど
66デフォルトの名無しさん:2012/03/09(金) 00:16:23.78
>>64
世の中には古いのをメンテナンスしなければならない人、古いOSにも対応したのを書かなければならない人もいるのだよ

>>65
全ての人がそれに習ってくれればいいのに、意固地な人もいるw

Xcode 4 使ってて、Xcode 3 使うとなんかキビキビしてたりする。Xcode 2.5 は何もやってないのかってぐらいもっと速いけど
Xcode 4 使ってて、Xcode 3 使うと、なんか古って思う俺もまた別にいるけどw
67デフォルトの名無しさん:2012/03/09(金) 09:30:28.41
>>64
IBPlugin...
68デフォルトの名無しさん:2012/03/11(日) 13:27:19.42
Xcode 4.1 →Xcode 4.2 もえらい変わったべや
69デフォルトの名無しさん:2012/03/16(金) 09:51:26.21
@リテラルきもすぐるw
@//正規表現リテラルもはよw
70デフォルトの名無しさん:2012/03/20(火) 07:28:20.71
ウィキ作った。
書くの手伝って。
http://goo.gl/A5MD1
http://goo.gl/x5DWE
71デフォルトの名無しさん:2012/03/20(火) 08:23:13.23
>>70
なんかいろんな言語スレに張ってるな。広告収入目当てか?
72デフォルトの名無しさん:2012/03/20(火) 10:32:01.66
MONOからはかなり遠い位置にいるかと
73デフォルトの名無しさん:2012/03/22(木) 16:00:18.84
この糞言語まだ存在したのかw
過渡期にあるからか知らんが仕様に一貫性がないのに嫌気がさしてやめたわw
まあiphoneアプリバブルでかなり稼がせてもらったしそこは感謝してるが二度と触りたくない言語 ついでに未来もない
74デフォルトの名無しさん:2012/03/22(木) 16:08:48.85
日本語訳:
 iPhoneアプリでごっそり稼ごうと思ったにさっぱり儲からなかった。Objective-Cが糞言語のせい
75デフォルトの名無しさん:2012/03/22(木) 16:51:25.61
要約:
 あのぶどうは酸っぱい
76デフォルトの名無しさん:2012/03/22(木) 17:49:37.94
根本的に仕様は変わってないのに
新しい機/仕様が加わっただけなのに
新しい機能/仕様を使わなくてもいいのに。使わなかったら書く量が増えるだけなのに
gcc (C,C++) なんて(メジャー)バージョン上がる毎にエラーてんこもりになるのに

かなり稼がせてもらったしというほど理解もなにもしてない、ましてやこんなスレに書くほど書き込んでいなく挫折した、初心者に毛が生えた程度のヤツの戯れ言
77デフォルトの名無しさん:2012/03/22(木) 17:53:35.01
×使わなかったら書く量が増えるだけなのに
○使ったら書く量が減るだけなのに
新しい機能/仕様の派生理由からすれば
78デフォルトの名無しさん:2012/03/23(金) 05:29:32.49
開発環境がカオスなのは認めるが、デベロッパーがその程度で根をあげているようでは話にならない。
79デフォルトの名無しさん:2012/03/23(金) 05:47:37.95
ソフトウェア(コンピュータ)界隈なんて日々変わっているようなものなのに、ついていけなくて文句を言うエンジニアwって多いよなあ
80デフォルトの名無しさん:2012/03/23(金) 06:35:50.62
>>71
>>70 を見てみたが、アンチ臭がちらほらと。そんな文面無い方がここに貼るんだったらいいのにw
素晴らしいらしいからどれだけwikiが充実するか見物ですね
81デフォルトの名無しさん:2012/03/27(火) 22:35:26.31
2個目の宣言で、エラーが出るのですが、
どうすれば2つとも実装できるでしょうか?

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)mPopoverController {

}


- (void)popoverControllerDidDismissPopover:(UIPopoverController *)mPopoverController2{

}
82デフォルトの名無しさん:2012/03/28(水) 00:20:13.18
自己解決しました。
83デフォルトの名無しさん:2012/03/28(水) 00:51:54.60
>>81
自己解決したとしても。。

引数名だけ違い(セレクタが同じ)のオーバーロードはできません
が理由でしたとちゃんとシェアして欲しいなぁ、後進のためにも
84デフォルトの名無しさん:2012/03/28(水) 01:08:52.99
>>83
すみません。出来ない仕様だったんですね。
ひとつのソースでif文で分けることで解決しました。
85デフォルトの名無しさん:2012/03/28(水) 01:26:59.83
>>84
Objective-Cに限らず、オブジェクト指向言語は基本そうだよ

メソッド名が同じの場合、引数の数がちがうか、引数の型がちがってなければいけない

まあ、Objective-Cの場合は、引数の数が違うと:の数も違うから、
メソッド名(セレクタ)も異なってくるけどね
86>>85の訂正:2012/03/28(水) 01:40:20.42
ごめん
Objective-Cは基本的にメソッドオーバーロードはできないわ

あくまでセレクタが異なってる必要がある

Objective-Cの仕様上、引数の数が違う場合は:の数が異なるので
これを他のOOPにおけるメソッド名が同じで引数の個数が違う
メソッドオーバーロードと同じとみなせば、
これに限っては事実上できることにはなる
87>>85の訂正:2012/03/28(水) 01:51:04.53
たとえばこんなの

- (void) setValue:(int) arg_x : (int) arg_y : (int) arg_z;
- (void) setValue:(int) arg_x : (int) arg_b;

上のメソッドのセレクタは@selector(setValue:::)
下のメソッドのセレクタは@selector(setValue::)

ただ、普通は
- (void) setValueWithX: (int) arg_x Y: (int) arg_y Z: (int) arg_z;
- (void) setValueWithX: (int) arg_x Y: (int) arg_b;
のような感じで各引数のキーワードを入れこんで命名するから

上のメソッドのセレクタは@selector(setValueWithX:Y:Z:)
下のメソッドのセレクタは@selector(setValueWithX:Y:)

のように明らかにセレクタが違う感じになる

なので、結局メソッド名が同じメソッドをオーバロードしていないという
ことがよくわかると思う
88>>85の訂正:2012/03/28(水) 01:52:04.54
あー、我ながらわかりにくい説明w
89デフォルトの名無しさん:2012/03/28(水) 02:49:23.54
ていうか>>81はオーバーロードですらないじゃん
90デフォルトの名無しさん:2012/03/28(水) 03:34:32.18
>>81が何をやりたかったのかが真剣にわからん
91デフォルトの名無しさん:2012/03/28(水) 04:38:35.98
【草莽崛起】3.25 第5回フジテレビ抗議デモin浅草[桜H24/3/27]
http://www.nicovideo.jp/watch/so17374154

【撫子日和】平和と護憲は両立するのか?[桜H24/3/27]
http://www.nicovideo.jp/watch/so17374481

核保有準備国宣言!★ティモシー義明の「超克超論」第2回
http://www.nicovideo.jp/watch/so17343279

H24/03/27 参院沖北特別委・義家弘介【何故犬HKは竹島等の天気をやらない】
http://www.nicovideo.jp/watch/sm17376071

03.27 参議院外交防衛委員会 山本一太議員(自民)
http://www.nicovideo.jp/watch/sm17376022

西村眞悟先生の時事通信 24年3月26日使命感の欠落集団=売国奴
http://www.nicovideo.jp/watch/sm17374611

【2012.3.25】第5回フジテレビ抗議デモ ダイジェスト
http://www.nicovideo.jp/watch/sm17372584

【告知】韓国は竹島から即刻出て行けin新大久保〜新宿(デモ行進)
http://www.nicovideo.jp/watch/sm17376177

【日経】不安を利用する人々【原発ゼロ】
http://www.nicovideo.jp/watch/sm17379095

初音ミク、モスクワで歌う 震災復興アピール
http://www.nicovideo.jp/watch/sm17373692
92デフォルトの名無しさん:2012/03/28(水) 07:12:45.58
変なの出るから変なの湧くw
93デフォルトの名無しさん:2012/03/28(水) 08:21:57.90
>>89
そうだよ
引数名のみ違う状況だから、Obj-C以外でもオーバーロードにならないね
って話だよ

かつ、Obj-Cではオーバーロードがないから、かりに引数の型変えてもダメだよ
というお話
94デフォルトの名無しさん:2012/03/28(水) 10:09:49.94
ObjCの@implement内に

-(void) foo {
Object<0>::CreateInstance( * activeDeviceInfo );
}

と書いたら、リンク時にエラーが出てしまいます。
Objectは template<int i > Object { ... }; と定義しています。
ObjC++の制限に引っかかってますか?
95デフォルトの名無しさん:2012/03/28(水) 11:14:38.90
>>85-89
m(_ _)m ご丁寧に解説ありがとうございました。

>>90
popoverの処理なんですが、
2種類のポップオーバーを用意していて、
それぞれ別の動作をさせたかったんです。
if文で判断できるのでひとつのソースで済んだのですが。
96デフォルトの名無しさん:2012/03/28(水) 18:28:59.11
>>94
いつの間にか C++ の template は関数の引数と同じように使えるようになったのか
実クラスで置き換えるというのでしか使ったことないなあ
97デフォルトの名無しさん:2012/03/28(水) 19:18:08.80
>>94
template<int N>
class TheObject {
public:
int myValue;

static
TheObject *CreateInstance( void ) { return new TheObject( N ); }

TheObject( int initValue ) { myValue = initValue; }
};



-(void) foo {
TheObject<0> *object = TheObject<0>::CreateInstance();
NSLog( @"%d", object->myValue );
delete object;
}

で、問題無くリンク/実行できたよ
Objective-C++ 側のファイル名を .mm にしてる? .m なら単なる Objective-C、.mm にして Objective-C++ だよ
これやるにはCやっといたほうがいい?
>>98
出来ればCの知識もあったほうがいい。
Objective-CはCが土台だから。
いきなりCはアレだから、まずはキスからだな
www
エロw
そういえば「初めてのC」とかいうふざけた名前の参考書があったね。
>>99-101
ありがとう。初めてのCという本探してみるよ。
初めてのCは微妙だったぞ
やさしいCで入門して、ポインタを詳しく書いてる本を別に読む方が良い
穴が3つあるから間違えないように気をつけろよ
CならK&Rだろ
K&Rスタイルはもう古いよ
今は何スタイル?
C++11
他に使える言語があるのなら、ブライアン・カーニハン、デニス・リッチーの「プログラミング言語C」はお勧め。
>>105
K&Rは説明の簡潔さと練習問題の秀逸さが売り
コンピュータの基本構造知ってれば、初心者でも十分読める
が、今時コンピュータの基本構造理解してる初心者は居ない
最初がK&Rはハードルが高いが、K&Rが読めないうちはまだCを理解してるとは言えない。
最近は(レーザー)ポインタという同じ名称で同じ役割のものがあるのに
C言語のポインタが分からないってどういうことなの?
配列とポインタというまるきり違うものが同じ扱いができる場面があったりすることで混同することに尽きるんじゃないの
>113
objcでそんなことする場面はほとんど無いから無視して良さそうだね

...
iOSは弄った事ないけど生でbitmapいじり倒したりが当たり前とかないよね?
仕事で使ってない趣味だけだったら、どうでもいいよ
仕事でなら使えないヤツと思うけど
>>115
仕事としてたら偉い人みたいな言い方はどうかと思うよ?

そもそも、どうしてポインタが分からないのか?って話を聞きたかっただけだし

てか、Objcを仕事で使うとポインタと配列を混ぜて使うのが当たり前になるの?
それもどうかと思うけど
>>116
別に偉いってわけじゃないよ。仕事として使うなら他人に読まれるってことだよ。読まれた時にスキルは自ずと判断される。意識的にも無意識的にも
配列をポインタでってのは、極めて普通のことだけど?混ぜて使うとか意識しないで使う
Objective-C でというより、C でね。もちろん、Objective-C は C だし、C の配列を使う機会はあまり無いけどそれは別の話
他人=自分以外
>>116
例えばさ、
char array[100];

char *array = (char *)malloc( 100 );
は、同じじゃないとめんどくさくない?上は char[i] でしか使えなくて、下は *(char + i) でしか使えなかったら
たぶんこういうのは、割と普通に下も char[i] でも可能ってのは理解できるんじゃないかなあ(お前じゃなくて一般的にね)

俺は、なるほどなるほどって理解したつもりでいたら、いきなり **p って出てきて、なんじゃこりゃ??としばし悩んだ口だな
初心者がポインタでつまづくのはポインタと配列を同等に扱うのが混乱するからなら、
そんなことはめったにしないObjective-Cではつまずくことはめったに無い
って事で良いんじゃないの?

わざわざポイインタは覚えないと駄目!とかいう必要がないような気がするんだけど
>>119
char[i]
*(char + i)
って、なんなんねんっ。array[i] 及び *(array + i) ね

>>120
俺もそう思うけど、
たぶん、インスタンス自体がポインタだし、NSError の受け取りなんてほとんど、ポインタのポインタだから基本だろってことなんじゃないの
まあ、ポインタってわからんけど、インスタンスの受け取り用の変数っていう理解だけでも使えるんだろうけど

また、Core は自ずと C の世界だし、他の C のライブラリとかもあるし、ポインタを理解して身につけたら、いろいろ広がるんじゃないの (iconv なんてちょーかっちょいいじゃんw)

と、思うけど、初心者にいろいろアレコレってのも、何をどうどっちを先にってのはわからんね
>>121
(レーザー)ポインタ的な使い方は理解できるらしいから
ダブルポインタだろうとトリプルポインタだろうと問題ないと思うよ
>>122
ふ〜む、なるほどねえ
ポインタが分からないなら、アセンブラ(COMET IIのCASL II)をやっとけ。
アセンブラやればポインタなんてこんな簡単なものなのに何で今まで悩んでいたのが馬鹿らしくなれる。
>>124
同意。アセンブラ覚えてからCをやったから、ポインタの理解には苦労しなかった。
ポインタで困るのはポインタまわりの演算子の優先順位だろう。
カッコつけ過ぎのみっともないコードになっても構わないなら関係ないけどw
>>126
見た目の格好良さよりも、見た人が正しく理解出来る事を優先してる。
ObjC環境だと昔書いたCソースをObjCでブリッジ書いて流用する事も可能そうだけど
実際それやって嬉しい事があった人っているのかな
>>128
WebkitはC++のコアをObj-Cでラップしたものだし、Foundationの多くは
CのCoreFoundationへのブリッジだよ。
>>129
Core Foindation はむしろ、Objetive-C のオブジェクトを C から扱えるようにしたものだと思う。
>>129
すんません個人レベルでの事例を聞きたかったのです。
つまり20年前に趣味で書いたコードがObjCが流行ってるのを機会に掘り起こしてみたら
案外あっさり動いてビビったとかそういう事例
Apple環境の裏はほぼCorC++である事はデバッグしたらすぐ分かるので承知してます
Windowsアプリ全盛の頃書いたアプリでも、MFCとかとPureCコード綺麗に分離してたらiOSでもあっさりうごいたわwww
とか聞けると上手な設計を追求する励みになるんと思っての質問ですた
>>132
gcc のバージョン上がるだけでたくさんエラー出るから、どうなんだろうな
Pure C だったらさほどの労力で流用できるだろう。hello world はいまだ hello world で動くしなw
(C の標準関数はバッファーオーバーフローを回避するというの以外は全く変わってない)

しかし、OS 依存のコードが大部分で Pure C に分離できるものは微々たる量でしかないのは、Windowsでも書いたことあるならわかるでしょ
>>132
他人を追求したいならお断りだ
自分で上手な設計を追究したいんならすればいい
がんばれよ新人

仕事でプログラム組み出すと分かるけど
三ヶ月前の自分は他人、上手な設計を心がけておかないと死ぬよ
>>133
同意。
特に.NET導入で大きく変わったなと思う。
.NET?どこの誤爆だろ
だな。Java で Perl でとかと変わらん全く別次元のことだもんな
138営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 08:50:46.18
iPhoneでObjective-Cエディタとか使ってる?
使ってない。
140営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 17:26:30.33
日本語書籍の縦書き表示、横書き表示の切り替えに対応!!!
「我輩は猫である」「坊ちゃん」等、青空文庫の名作が無料で読める

iPhone対応アプリ sReader Lite (無料)
http://itunes.apple.com/jp/app/sreader-lite/id492514436
141デフォルトの名無しさん:2012/05/05(土) 01:11:37.11
Objective-Cのクラスはプログラムに組み込まれた小さなインタプリタで動いてるって話を聞いたのだけど本当?
原理はJavaVMに似てるって話だけど
142デフォルトの名無しさん:2012/05/05(土) 01:35:19.59
>>141
それは.NETじゃないの。吐き出されるのは中間コードとやらでってのは。C#はネイティブも吐き出すことできるんだっけ
Objective-Cはネイティブコードだよ。メソッドの呼び出しやクラスの実装が動的ってだけで、バーチャルマシンとは全く別もの
143デフォルトの名無しさん:2012/05/05(土) 01:40:11.37
確かに吐きだすバイナリは確かにネイティブコードだがな
そのコードがインタプリタ的な動作をするってだけ
144デフォルトの名無しさん:2012/05/05(土) 01:43:38.94
メソッドの呼び出しがでしょ
まあ、メソッドの呼び出しがコードのほとんどを占めると言えばそうかもしれないが
145デフォルトの名無しさん:2012/05/05(土) 01:51:28.73
どうもインタプリタ的と言うのに違和感があるのは、メソッドの呼び出しにクッションを置くのは、特に変わったことじゃない。CPUレベルでの割り込みベクタとか
まあ、単なるジャンプテーブルじゃないってのはわかるけどね
146デフォルトの名無しさん:2012/05/05(土) 01:53:47.36
まあ一般の解説ではメソッドの呼び出しポインタが動的な点をインタプリタ的と言ってるな
.NETは最初に全ての中間言語をネイティブコードに変換して実行する
初期実行は遅いけどネイティブコードのアプリと同等程度の速度を実現してる
中間言語を読みながら実行するJavaとはまた違う
147デフォルトの名無しさん:2012/05/05(土) 02:06:02.23
.NETはなるほど。なぜにわざわざ中間言語なのかはスレ違いでもあるから聞かないでおこうw
JavaもJust-In-Time Compilerってあるよねえ
148デフォルトの名無しさん:2012/05/05(土) 02:14:42.76
.NETはもともとJavaに変わるマルチプラットフォーム環境を目指してたから中間言語を採用してる
通常、実行環境が固定されているObjective-Cには無用の長物
JavaのJITコンパイラは.NETの実行方式と同じ発想のものって認識でいいと思う
149デフォルトの名無しさん:2012/05/05(土) 02:15:17.77
あ〜もうスレ違いだね
そろそろやめとく
150デフォルトの名無しさん:2012/05/05(土) 02:21:50.05
やっぱ似ているのはそっちということでw
151デフォルトの名無しさん:2012/05/05(土) 02:23:04.09
>>149
んす。だねえ。雑談お付き合いどうも
152デフォルトの名無しさん:2012/05/05(土) 22:35:17.06
Apple公式の日本語和訳「スレッドプログラミングガイド」
153デフォルトの名無しさん:2012/05/05(土) 22:38:20.16

Apple公式の日本語和訳「スレッドプログラミングガイド」
https://developer.apple.com/jp/devcenter/ios/library/japanese.html

の「カスタム入力ソースの定義」から始まる内容が全く理解できないんですが、
そもそおもカスタム入力ソースを使うと何が便利なんでしょうか?
154デフォルトの名無しさん:2012/05/06(日) 02:14:19.99
>>153

簡単に言うと、「スレッド間通信を行う低レベルな方法」です。
155デフォルトの名無しさん:2012/05/06(日) 20:57:45.16
「スレッドプログラミングガイド」を参考に自分で
RunLoopSourceクラスとRunLoopContextクラスを作ったんですが、
このクラスをどうイジれば何がいい感じになるのかさっぱりです。
なんとなく、ランループの状況に応じてコールバック関数が呼ばれるんだろうな
ってとこまではイメージできますが、もっと具体的な使い方を知りたいです。
誰かお暇な方いたら自分が作った下記の3ファイルを使って何か
サンプル作ってもらえないでしょうか?

AppDelegateクラス。入力ソースの登録、解除をするっぽい。
RunLoopContextクラス。コマンドバッファの管理とランループの連携を行うらしい。
RunLoopSourceクラス。純粋に単なるコンテナオブジェクト。

http://upload.saloon.jp/src/up5313.zip.html
156デフォルトの名無しさん:2012/05/09(水) 19:24:36.04
>>155
サンプルを作ってみた。(↓このURLは2ヶ月以内に自動的に消滅します^^)
http://homepage.mac.com/stripe/EchoThread.zip

MacOSX10.7用のコマンドラインツールです。
MainスレッドからWorkerスレッドへMessageを送信すると、
単純にそれをMainスレッドに送り返してきます。

Appleのドキュメントのコードだと、MainスレッドもWorkerスレッドも同じオブジェクト、
という構成になっているっぽくて俺的に分かりづらかったので、クラス構成は変更しています。
157デフォルトの名無しさん:2012/05/12(土) 05:19:28.18
NSRegularExpressionについての質問です

@"\\s" や @"\\w" といった正規表現のメタ文字を含むパターンをマッチさせたいのですが
"\\s" という文字列そのものとして扱われてしまっているらしく、メタ文字として正しく機能してくれません
メタ文字を正しく機能させるにはどうすればいいのでしょうか?

コード:
NSRegularExpression *pattern =
[[NSRegularExpression alloc] initWithPattern:@"\\s" options:0 error:&error]];

NSString *subject = @" --\\s";
[pattern firstMatchInString:subject options:0 range:NSMakeRange(0, str.length)];

結果:
<NSSimpleRegularExpressionCheckingResult: ...>{3, 3}
(空白の位置ではなく、"\\s"という文字列にマッチしてしまっている)
158デフォルトの名無しさん:2012/05/12(土) 05:28:06.57
うわああ
Macだと\とバックスラッシュの文字コードって違うんですね
自決しました
159デフォルトの名無しさん:2012/05/12(土) 09:20:33.41
>>158
>自決しました

よせw
160デフォルトの名無しさん:2012/05/12(土) 11:30:43.73
「Macだと」というかUTF-8だからかも
161デフォルトの名無しさん:2012/05/12(土) 11:31:39.70
エディタの文字コードの設定でコンパイルうまくいかないのはよくあること
162デフォルトの名無しさん:2012/05/12(土) 14:42:30.13
バックスラッシュは option+\ を押すと入る
163デフォルトの名無しさん:2012/05/14(月) 19:20:22.21
俺は、ことえりの設定で\をタイプすると、デフォルトでバックスラッシュになるようにしてる。
164デフォルトの名無しさん:2012/05/15(火) 14:15:08.57
80文字で終わらないのが気持ち悪いので
マクロ多用で俺様言語にしてもいいですか?

#define AlocInit(T) [[T alloc] init];

みたいな
165デフォルトの名無しさん:2012/05/15(火) 14:16:26.54
あなたしか使わないのだったらどうぞお好きに
俺とかかわる人だったら殺すw
166デフォルトの名無しさん:2012/05/15(火) 14:34:15.24
俺はだいたい80カラムにおさめてる。
167デフォルトの名無しさん:2012/05/15(火) 14:47:54.80
今時80カラムとかTerminalでさえそれ以上にできるのに。というのは置いておいて
俺は全く気にしないな
ステップ単位で追うのにその行がなにをやりたいというのがわかればいいので、ゴテっと分けられると追うのに邪魔。その行が具体的に何をってのは追うのにそれほど重要じゃないからなあ
もちろん具体的に何をって知る必要もあるのは当然でその場合はその行だけに注目しているのだから、横スクロールするなりするのは苦痛ではない
とか言ってみる
168デフォルトの名無しさん:2012/05/15(火) 15:05:12.58
一行にだらだら書くと自分でも何を言ってるのか分からなくなる例がこちら >>167
169デフォルトの名無しさん:2012/05/15(火) 15:06:34.62
横方向にウインドウ並べて見比べたい質なので。
170デフォルトの名無しさん:2012/05/15(火) 15:10:03.12
文をちゃんとまとめて書いたとは言わないけどな
後で自分で見直したりとか、ソース追うのに毎回毎回いちいち引数とか注意しているの?なるほど、そういう人もいるんだな
俺は、流れを読むのにとりあえず必要としないし、一度注目して理解したのはとりあえずある期間は憶えているので、毎回毎回その行を見るのに引数に注意する必要無いからというのだけどな
171デフォルトの名無しさん:2012/05/15(火) 15:10:49.28
>>169
ああ、Xcode 4 になって一つのウィンドウで全てってなら尚更だよね。そういうのならわかるわあ
172デフォルトの名無しさん:2012/05/15(火) 15:14:44.26
なのでXcodeにしろVisualStudioにしろ、
最近のタブ強要みたいな流れはうれしくないデス。
173デフォルトの名無しさん:2012/05/15(火) 15:22:05.33
>>172
タブはワークスペースの切り替えとして使うと割といけることに最近気付いた
174デフォルトの名無しさん:2012/05/15(火) 18:39:55.76
- { id <ESRenderer>} init

すいません。サンプルコードのみてたですが、上のコードはどういういみなんですか?
よくわかりません。鍵括弧ってどういうこと?
175デフォルトの名無しさん:2012/05/15(火) 18:44:37.01
カテゴリ
176デフォルトの名無しさん:2012/05/15(火) 19:14:31.26
ウホッ
177デフォルトの名無しさん:2012/05/15(火) 19:24:19.38
>>174
ESRenderer っていうプロトコルを実装しているインスタンス(を返します)
178デフォルトの名無しさん:2012/05/15(火) 19:40:02.36
>>174
よく見たらその文法は初めてだなw
ググっても、ないよーっ
- (id<ESRenderer>)init ならいっぱいあるw
179デフォルトの名無しさん:2012/05/15(火) 19:41:25.44
微妙にホッとしている俺がいる
180デフォルトの名無しさん:2012/05/15(火) 20:14:04.69
>>164
三ヶ月後にも思い出せるかな?
181155:2012/05/15(火) 21:50:08.04
>>156
ありがとうございます!!今DLしました!とうかレス遅くなってすみません!
2日ほど待って諦めてて今日思い出して久しぶりにこのスレに来ました!
本当に助かります!早速確認します!ありがとうございます!
182デフォルトの名無しさん:2012/05/16(水) 23:46:45.34
singe view applicationのテンプレートで作ったのですが
appDelegateで起動時に呼ばれるのは
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
return YES;
}

となっています、テンプレートと同時に作られるviewControllerファイルにあるViewControllerのクラスはどこで呼ばれるのかわかりません。
xcode4.3でストリーボードありを選択してつくりました。
viewControllerのクラスはどこで呼ぶように定義されているのでしょうか?
気になって眠れません。
183デフォルトの名無しさん:2012/05/17(木) 00:24:50.52
こちらでどぞ
[SDK]iPhoneアプリ開発初心者質問箱25[touch][iPad]
http://anago.2ch.net/test/read.cgi/mac/1335398820/
184デフォルトの名無しさん:2012/05/26(土) 02:22:41.85
Objective-Cって設計思想でぬるぽが存在しないってことなのかな
nilへのメッセージ送信が可能で
プロパティがゲッターセッターの自動生成だとすると
185デフォルトの名無しさん:2012/05/26(土) 07:35:45.23
   ∧_∧
  ( ´∀`) にるぽ
186デフォルトの名無しさん:2012/05/26(土) 13:17:39.52
>>184
Objective-Cにも、値がゼロのポインタ値は普通に存在する。
ヌルポが存在しないのは、OCamlのほうだ。
187デフォルトの名無しさん:2012/05/26(土) 13:38:10.76
ぬるぽいんたえくせぷしょんはObjCには存在しないよ
ぬるぽはあるけど
188デフォルトの名無しさん:2012/05/27(日) 05:55:44.15
Javaにはポインタが存在しないはずなのに
ぬるぽが発生するのは何でJava
189デフォルトの名無しさん:2012/05/27(日) 07:33:40.26
存在しないと誰が言った!
190デフォルトの名無しさん:2012/05/29(火) 15:51:59.27
吉永先生
191デフォルトの名無しさん:2012/06/02(土) 22:05:22.18
初めてHeaderdoc用のコメント書いたのですが
デリゲートのドキュメントをgatherheaderdocコマンドで生成すると
「Protocols」フォルダ配下に「◯◯Delegate」のようなデリゲート名でフォルダが作られて、
その配下に「index.html」「toc.html」の2ファイルが作成されるようですが、
なぜか自分の場合は「toc.html」のみで「index.html」が作成されません。


https://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/HeaderDoc/intro/intro.html
192191:2012/06/02(土) 22:33:16.68
すみまぜん>>191はスルーしてください。。Headerdoc使うのやめようと思います。
ちなみにみなさんどのドキュメントツール使ってますか?
今からappledocいじってみます
193デフォルトの名無しさん:2012/06/03(日) 17:11:42.27
なんかダウンロードしろってゆわれたからダウンロードしようと思ったら
英語でぜんぜんわからんわ。

詐欺師

金返せ
194デフォルトの名無しさん:2012/06/03(日) 17:43:54.90
とりあえず、大笑いしてあげよう
満足したか?
195デフォルトの名無しさん:2012/06/03(日) 21:07:21.67
そんなんで満足するわけねーだろ!クソが
笑いなんて要らねーんだよ。
普通でいいんだよ。贅沢は言わない。普通で。
iphoneの開発はしたいから本買ってきたらアップルのどこかでダウンロードしろって書いてあったから
しようと思ったら英語でわからんかった。
お前らはどうやって分かった?
英語できるやつばかりか?
196デフォルトの名無しさん:2012/06/03(日) 21:14:40.25
少なくとも、あると分かっているものを探せる程度にはわかる
197デフォルトの名無しさん:2012/06/03(日) 21:22:42.26
>>195
で、何をダウンロードしろって書いてあるんだ?
基本的な開発ツールなら、App Storeからダウンロードできるはずだが
198デフォルトの名無しさん:2012/06/03(日) 21:24:17.95
>>195
ダウンロードは英語で download と書かれるのだよ
てか、マジで言っているのか...
マジのはずはねーよなあ。プログラミングで英語必須とは言わないが、逆切れするのはありえないからなあ
199デフォルトの名無しさん:2012/06/03(日) 23:09:33.87
大方昔の本買って、ADCから落とすとかそんなことが書いてあったんだろう。
200デフォルトの名無しさん:2012/06/04(月) 03:55:26.46
arc4random()って0〜0.999…が返るって認識であってますよね?

なんか1億とかすごい値がかえってくるんだけど
原因しってる人いますか?
201デフォルトの名無しさん:2012/06/04(月) 04:04:54.51
>>arc4random()って0〜0.999

勘違いでした。
javaのMath.random()みたいなもんかと思ってた!
202デフォルトの名無しさん:2012/06/04(月) 04:11:14.08
他の言語の関数と似たような名前の関数なら同じようなもの、と思う癖やめた方がいい。ちゃんと調べるべき
Cの乱数生成はちょっと面倒くさいよ。
苦しんで覚えるC言語とかいうサイトに範囲指定して乱数生成する公式が乗ってたかと思う。
応用すれば実数の乱数生成も出来るよね。
203195:2012/06/04(月) 09:51:42.99
ここによぉ、ダウンロードしろって書いてあるんだわ。

http://libro.tuyano.com/index3?id=544001&page=2

で、実際やってみたら全く違う画面がでてきてダウンロードできない。

詐欺じゃねーかこのクソサイト

訴えてやる!!!

ダウンロードのスペルくらいわかるわボケ!

おれはジョブズになる資格すらねーのかよ

204デフォルトの名無しさん:2012/06/04(月) 10:13:11.81
そりゃあ大変だ
205デフォルトの名無しさん:2012/06/04(月) 10:23:41.28
>>203
いやいや、スペルぐらいもわからないとしか思えないんだけど
ああ、Downloads は download と同じ意味だよ。ちょっと教えるのが不親切だったね。ごめんなさい

てか、ホームページに詐欺って。いくら搾取されたのかね?もうネタはいいよw
206デフォルトの名無しさん:2012/06/04(月) 11:17:41.58
ジョブズになる資格すらって、
そんな資格ある人存在せんわw
207デフォルトの名無しさん:2012/06/04(月) 11:28:22.38
俺はそこはネタ臭がひどいので無視をしたw
208デフォルトの名無しさん:2012/06/04(月) 12:26:26.82
195は「stay foolish」の実践者なんだろ。酷い馬鹿さ加減だが
209195:2012/06/04(月) 13:55:29.47
downloadとdownloadsが同じことくらいわかっとるわ

>>203のリンク先の画像で Xcode and ios SDKって書いてあって
ここをダウンロードって○で囲ってあって

で、リンク先からその場所と文字を探したらその場所にその文字がなく全く違うことが書いてあった。

つまり俺はこのサイトを作ったヤツに嘘をつかれた被害者なわけだ。

stay foolishってなんだよ知らねーよ。

ネタじゃねーよボケ!

嘘だと思うなら見てみろよ

なぁ、俺が何か悪いことでもしたのか?
何でいつもこんなに虐げられなきゃいけないんだよ!



210デフォルトの名無しさん:2012/06/04(月) 14:07:59.64
英語以前に日本語も読めてないようだから、お前はもう諦めろ。
211デフォルトの名無しさん:2012/06/04(月) 14:11:13.38
>>203のリンク先に書いてあるようにdeveloper登録はしたか?
そして今はiOS5になってるから、iOS4のその絵とは変わってて当然
212デフォルトの名無しさん:2012/06/04(月) 14:20:36.18
秒進分歩と揶揄される業界で一年以上前の情報を参照してる時点でダメ
英語が読めないのはもっとダメ
たとえXcodeが手に入れられたとしても、
「全部英語で意味不明」
「(古いサイトに)書いてあることが出来ない」
と同じ事を喚く事になるだけ

時間の無駄だから他の有意義なことをしたほうがいい
213デフォルトの名無しさん:2012/06/04(月) 14:27:07.31
俺は・・・Xcodeにはなれない・・・
214デフォルトの名無しさん:2012/06/04(月) 14:40:19.16
>>209
えー? Downloads って書いてあるのに。なんかの記号とか意味わからないアルファベットの羅列だったんでしょ?
普通は Downloads の意味がわかっていたら、そこだなと思うはずなんだけど、そういう普通の感すらが働かないなら、プログラミングなんて無理無理無理
天に召しますジョブズの親切だよ、たぶんw

>>211
Developer登録すら今は必要ないみたい。Dev ページからもダウンロードは App Store に導かれる
215デフォルトの名無しさん:2012/06/04(月) 18:54:27.36
プログラムやる上で英語が読めないは致命的だな。
216デフォルトの名無しさん:2012/06/04(月) 19:38:08.21
英語が読めないと全行程で10倍時間が掛かる。
そのうち英語が読めるようになるけど。
217デフォルトの名無しさん:2012/06/04(月) 21:07:19.03
大雑把だけど、アウトレットは家電製品のコンセントの設置
アクションは設定したイベント(トリガー?)の状態になったら実行されてメソッド•プロパティを実行する
って認識でいいの?
アウトレットとアクションの配線がいまいちピンとこない•••
わかるようなわからないような•••

xib上で設置したボタンとかテキストフィールドでただのハリボテとして使う時はアウトレットの配線はしなくていい(コンセントの設置?)
ボタンを押して何かしたい時にはアウトレットを配線、アクションも設定って感じ?
218デフォルトの名無しさん:2012/06/04(月) 21:15:10.17
>>217
アウトレットは大体合ってる。プログラムの中で使う時に使う。
例えば、テキストフィールドの中身を取り出す為にテキストフィールドをアウトレットで繋いでおくとか

アクションも大体合ってる。
何らかの動作をしたい時に動作と繋ぐ。

ボタンを押して何かしたいだけなら、アクションを繋ぐだけでいいです
219デフォルトの名無しさん:2012/06/04(月) 21:54:17.81
IB使うと自作ビュー混在させるときに面倒クセェ。
結局のところ複雑になればなるほどコードで書いた方がいい
220デフォルトの名無しさん:2012/06/04(月) 22:33:16.72
がんばれー
221デフォルトの名無しさん:2012/06/05(火) 00:33:56.93
>>217
アウトレットは俺のぉ(モノ)
アクションはお前がぁ(やれ)
って、わからんか。俺も何言っているのかわからん
222195:2012/06/05(火) 06:11:47.46
ダウンロードってやつをしてみたよ。
そしたらよ、名前、住所、職場の名前、Eメールとかを書けってきて、
そのとおり入力したにも関わらずダメだってなったわ。
ふざけんなよ。
俺は嘘偽りを何一つ言ってないわ

なのに俺だけやらせてもらえなかった。
ふざけんな

俺が何したっていうんだよ!
アップルの嫌がらせか!

223195:2012/06/05(火) 06:15:22.99
いい忘れてたわ
だめだったのはEメールのとこだってよ。

ヤフーのメールアドレスじゃダメなのかよ。

ヤフーだって立派な会社だぞ!

ヤフーはグーグルとかと違ってインテリ臭がしない情弱御用達だからダメってか、クソ!

224デフォルトの名無しさん:2012/06/05(火) 06:23:46.35
もしかしてインテルMacじゃないとか
225デフォルトの名無しさん:2012/06/05(火) 06:41:43.48
>>222,223
いままで Apple Store を利用したこと無いのか。てか、Apple ID を持っていないのか。iTunes Store も使ったことが無いんだろうなあ

いい加減アホ真似にも飽きてきたので>>224を超えるオチでおオチをつけてくんなまし
226デフォルトの名無しさん:2012/06/05(火) 06:42:57.14
×Apple Store
○App Store
Apple Store でもあながち間違いではないけどw
227195:2012/06/05(火) 07:17:12.27
インテルMACって何だよ
仮にインテルMACじゃなかったとしたら、それが原因でobjective-cさせてくれないなんてとんだ嫌がらせだな!
アップルのIDくらい持ってるわ

228デフォルトの名無しさん:2012/06/05(火) 07:45:51.08
>>227
マジでそれは嫌がらせレベルなんだがマジでそうなんどす。ついで言うとインスコの不具合もそこそこあるらしいべよ
229デフォルトの名無しさん:2012/06/05(火) 11:05:13.80
召喚ボタンを押すとランダムな色/形,跳ね返り方の違うボールを出すみたいなことしたいんだけど
どうすればいいの?
できるだけリアルな感じでやるのが目標なんだ
Opengl esっての学べばいいの?

Xcode使ってボタンを押すと文字が表示できたら受け取ったり
簡単なrpgはできるようになったけど、まだCuiのRPGと変わらないくらい低レベルだから
もっと高レベルなことやりたいんだ
230デフォルトの名無しさん:2012/06/05(火) 11:09:16.60
スレチ
231デフォルトの名無しさん:2012/06/05(火) 11:29:44.37
Objective-cでできないってこと?
232デフォルトの名無しさん:2012/06/05(火) 11:35:01.69
頭をもっと高レベルにしてから出直せ
233デフォルトの名無しさん:2012/06/05(火) 11:57:51.53
http://s.ameblo.jp/micro-garden/entry-10330376310.html?frm=theme
記事の下の方にあるのを同じ風にiPhone上で再現してみたいんだ
ただ再現するんじゃなくて、矢印ボタンも付けて右にXcm...とか指定できたりバウンドしたり
そんな感じでシミュレーションしてみたい

そごで聞きたいのは、これを表現するにはobjective-cのアニメーションを用いるのか
もしくはopengl esを用いるのか、はたまたUnity,Javaじゃないといけないのか?ってことなんだ
わかりにくくてごめん、一応Obj-cについてってことでスレチではないよね?
234デフォルトの名無しさん:2012/06/05(火) 12:11:23.29
Core Animation 使うのも OpenGL ES 使うのも他のアプリ使うのも、お前の勝手だろ。
その程度の単純なアニメーションくらい幾らでも方法はある。

どっちにしろスレチだが。とりあえずMac板のiPhone開発スレへ行け。
235195:2012/06/05(火) 12:58:40.67
俺にobjective-cをやらせろや!
クソヤロウ!
236デフォルトの名無しさん:2012/06/05(火) 13:40:22.62
>>233
どれ使ってもできる。
237デフォルトの名無しさん:2012/06/05(火) 13:48:16.72
>>233
それならobjective-cで十分可能だと思う
OpenGLって3Dを扱いたいときに使うといいんじゃないかな
238デフォルトの名無しさん:2012/06/05(火) 15:55:19.31
>>233
とりあえず、まる一個UIViewひとつでCore Animationでやってみりゃいいやん。
それが糞重かったら、まる一個CALayerひとつCore Animationで
それでも糞重かったら、ひとつのUIViewで丸一個一個をCore Graphicsで自分でアニメーション
まだまだ糞重かったら、OpenGLつかって
やりゃいっぱい勉強できるだろう

まあ 、ひとつのUIViewで丸一個一個をCore Graphicsで自分でアニメーションが一番手っ取り早いと思うけど

195は飽きたから>>234と言っているが、ここでもいいよw
239195:2012/06/05(火) 20:43:36.30
プログラムの本質が分かった。
プログラミングとはプログラムを書き、実行することが本質なのではない。
プログラミングを理解できた多少頭の良いと思った自分に対して、
プログラミングを理解できなかった人間に対してククク…とあざけ笑い優越感を得ることがプログラミングの本質である。

いまもこうやって俺のことを笑っているんだろう。
みんなして
ククク…

と。

240デフォルトの名無しさん:2012/06/05(火) 21:07:48.21
>>239
プログラミングどうのこうの以前の話しかお前はしていないだけど、それすらわからないんだから、プログラミングなんて無理無理無理

お前はここに居座るのは笑われるのが目的じゃないの?お笑いの線では無理無理無理というほどではないと思うよ
241デフォルトの名無しさん:2012/06/05(火) 21:19:05.98
>>238
よく見ると実行速度の順番が一部違ってないか?
242デフォルトの名無しさん:2012/06/05(火) 22:07:46.14
>>241
ん?Core Animation vs Core Graphics で自分アニメーションでってこと?
243デフォルトの名無しさん:2012/06/05(火) 22:11:58.03
>>239
そこまで理解できたら話は早い
後は諦めるだけだ
244デフォルトの名無しさん:2012/06/05(火) 22:57:04.58
画面にさ、小さなボタンを用意してさ
それをTapしたら下からTabBerみたいのがちょこって出てくるようなの作りたいんだけどどうすればいいのん?
こういうのって、クラス?ってのを作らないといけないの?
それとも一からマシン語で書くのかな?
245デフォルトの名無しさん:2012/06/05(火) 23:06:12.19
うん、一からマシン語だな。当然だろう、しごく当然
246デフォルトの名無しさん:2012/06/05(火) 23:32:46.50
>>242
>それが糞重かったら、まる一個CALayerひとつCore Animationで
>それでも糞重かったら、ひとつのUIViewで丸一個一個をCore Graphicsで自分でアニメーション

Core Graphicsで自分でアニメーションということは、丸を書いて消して、書いて消しての繰り返しになるんじゃないか?
CALayerだと、いちいち書き直さなくても移動できるんじゃなかったっけ?
247デフォルトの名無しさん:2012/06/05(火) 23:36:45.40
>>244
その言葉どおりに作ればいいんじゃないか?

画面に小さなボタンを配置するぐらい簡単だろ?
TabBerみたいなのを表示/非表示に切り替えるのもできるだろ?
あとは、この2つを組み合わせるだけだぞ。
248デフォルトの名無しさん:2012/06/05(火) 23:40:16.76
>>246
まあ、消去&描画のくり返しという、やっているのはどっちにしても同じじゃないのかなあ
どんだけGPUに丸投げしての差とかはわからないけど

とりあえず、なんかクラスとして(ちょっと)重そうとかいうのででので、そのへんは適当です
249デフォルトの名無しさん:2012/06/06(水) 00:45:52.01
玉をパウンドさせて何が楽しいんだ?
250デフォルトの名無しさん:2012/06/06(水) 06:38:17.27
チンポジ修正アプリ
251デフォルトの名無しさん:2012/06/06(水) 16:20:20.34
たのしいCocoaとよくわかるiPhoneアプリ開発の教科書[iOS 5&Xcode 4.2対応版]
読んで予め用意されてるCocoaTouchを使って簡単なことはできるようになったんだけど
例えば、画面遷移する時って下からシュピィン!ってでてくるけどこれを真ん中から迫ってくるようにとか
したい時とかって出てくると思うんだよね、こういうのってそこまで用意されてない(よね?)し自分でコード
書くしかないんだと思うんだけど、どう書けばいいのか想像つかない
っというかコードでそんなことできんのか最近疑ってるレベル

UINavigationBarのタイトルを置き換える方法探しても見つからないしメソッドってのを自分で
作らないといけないのかな
考えてたら禿げてきた
252デフォルトの名無しさん:2012/06/06(水) 16:33:02.48
>>251
簡単にできるよ。標準のにちょっと手を加えるだけで
とりあえず標準を使いこなして何ができるできないが判断できないとね。標準をそれなりに理解しつくすのがまずは先だね
253デフォルトの名無しさん:2012/06/06(水) 18:18:59.45
>>248
Core Graphicsは100%CPUによるレンダリングだから、比較的遅いと思うぞ
254デフォルトの名無しさん:2012/06/06(水) 19:11:22.66
100%CPUってのは無いんじゃないの。そんなには期待できないだろうけど
Quartz ExtremeレベルのはiOSでも実装されているじゃないかなあ
こんな◯だけのはどっちにしろたいした変わらないじゃないの
255デフォルトの名無しさん:2012/06/06(水) 19:14:24.21
CocoaをC++でラップしたみたいな
ライブラリありませんか?
256デフォルトの名無しさん:2012/06/06(水) 19:22:06.88
そんなのがなぜ必要なの?ちなみにここは Objective-C のスレです。覚えるのが嫌とかは許しません
257デフォルトの名無しさん:2012/06/06(水) 19:27:20.00
覚えるのが嫌
258デフォルトの名無しさん:2012/06/06(水) 19:30:32.51
CocoaをC++でラップしても、結局Cocoa覚えないと使えなくね?
259デフォルトの名無しさん:2012/06/06(水) 19:41:06.37
だよな。てか、ラップされての癖のような変なのも追加で覚えなければならいよな
安物買いの銭失い的なもんだなw
260デフォルトの名無しさん:2012/06/06(水) 19:52:42.37
Objective-Cを直接使うよりまし
261デフォルトの名無しさん:2012/06/06(水) 20:00:54.03
Objective-C++ってけっこう使うけど、カオスっぷりがなかなか素敵だよw
262デフォルトの名無しさん:2012/06/06(水) 20:19:04.45
コンパイル遅くてダレそう
263デフォルトの名無しさん:2012/06/06(水) 20:23:56.70
>>254
CPUがメインメモリにグラフィックを描くのがCore Graphics
GPUがビデオメモリにグラフィックを描くのがOpenGL
描画するバッファ(メモリ)が根本的に違うので、両方を同時に使うのは不可能。
ただし、それぞれで描いたグラフィックを後から重ね合わせるのは可能。

「ひとつのUIViewで丸一個一個をCore Graphicsで自分でアニメーション」
なんてことをやったら、100%CPUで処理する形にしかならないと思う。

> Quartz ExtremeレベルのはiOSでも実装されているじゃないかなあ

iOSには、Window Serverが無いから、Quartz Extremeも無いんじゃないのか?
264デフォルトの名無しさん:2012/06/06(水) 20:36:10.78
>>262
そこまで遅くないし、普通はつなぎ目にしか使わない。
265デフォルトの名無しさん:2012/06/06(水) 21:16:17.75
>>624
うん。遅いというヤツのマシンスペックを知りたいものだな

>>261
うん。本当に素敵だよなw
266デフォルトの名無しさん:2012/06/06(水) 21:23:24.83
CocoaとOGRE とかのデカめのC++ライブラリを併せて使ったことあるけど、
クラス宣言部に C++ クラスおいたら一挙にコンパイル速度低下したから、
早々にObj-C++部を他の.mファイルからは隠したな。

つなぎ目にしか使わないというより、つなぎ目にしか使っちゃ駄目。
267デフォルトの名無しさん:2012/06/06(水) 21:28:23.50
>>266
うん、そりゃ通常のと比べて遅いことは遅いよ。でも、毎回全てコンパイルするわけじゃないでしょ?開発サイクル的には全く遅くないけど
俺はめんどくさかったから、すべて mm にしちゃったけどw
268デフォルトの名無しさん:2012/06/06(水) 21:30:01.08
ちなみに下手な人の書いたコードはコンパイルにも時間が掛かる。
269デフォルトの名無しさん:2012/06/06(水) 21:45:10.63
>>267,268
同じく全部Objective-C++でコンパイルしてる。
下手な奴はクラス実装全部含めた全部インクルードみたいなの平気で使うからな。
270デフォルトの名無しさん:2012/06/06(水) 21:58:55.60
アホはヘッダーファイルで無駄にインクルードするからな
271デフォルトの名無しさん:2012/06/07(木) 09:31:16.91
Xcode使ってゲームとか作ろうと思ったけどグラフィック画像とかまったく無知で描くことできないから詰んだ
272デフォルトの名無しさん:2012/06/07(木) 10:11:26.73
詰んでてくれ
もうこれから先は自分から解決方法探せる奴じゃないと生き残れない
Webにノウハウ上げる奴はほとんどいなくなってしまった(英語圏は別)
273デフォルトの名無しさん:2012/06/07(木) 10:58:48.04
>271 は質問のような独り言をあちこちの関連スレに書き込んでる人だと思うよ
選択肢が複数あることが理解できないみたい
T字路なのに前だけ見て先に進めないって言ってる感じ
274デフォルトの名無しさん:2012/06/07(木) 11:27:53.97
部品を組み合わせることを知らないから、製品を探すことしかできない、と言う感じ
275デフォルトの名無しさん:2012/06/07(木) 12:10:40.59
  ε ⌒ヘ⌒ヽフ
 (   (  ・ω・) ブヒン
  しー し─J
276デフォルトの名無しさん:2012/06/07(木) 13:54:55.32
>>270
Objective-C++はプリコンパイルドヘッダ効かないの?
277デフォルトの名無しさん:2012/06/07(木) 14:13:11.63
>>276
プリコンパイルドヘッダの使い方間違ってないか?
278デフォルトの名無しさん:2012/06/07(木) 14:20:45.23
>>277
あーすまん。俺はまだObjCよく知らんのだけどC++のライブラリ持っていこうと考えてるんだ
ClangがC++にも対応したって何かで読んだからコンパイル速度は問題ないと思ってたけど
無駄にインクルードすると遅くなるってことはPCHが使えないみたいな弱点があるのかと気になって
279デフォルトの名無しさん:2012/06/07(木) 14:27:29.69
>>278
コンパイル速度なんか気にしたことないや。ライブラリなら何度もコンパイルする訳じゃないし、気にしすぎじゃない?
280デフォルトの名無しさん:2012/06/07(木) 14:27:54.60
無駄にインクルードする事よりも、プログラムの構成の仕方が良くないせいで、
ちょっと触ったら、あっちもこっちもコンパイルし直すはめになるみたいな話でしょ。
全体通して一回ビルドするだけなら大差ないと思う。
281デフォルトの名無しさん:2012/06/07(木) 14:48:25.83
まぁ通は必要に応じてクラスの前方宣言使って、ヘッダで無駄にインクルードはしないわな
282デフォルトの名無しさん:2012/06/07(木) 14:52:25.06
>>278
プリコンパイルヘッダは普通に使える。
プロジェクト作ったときに、プロジェクト名-Prefix.pchってファイルが自動手に作られてるだろ。
共通のマクロとか定数の宣言はここに書いとく。 但しこいつを変更すると全ソースが再コンパイルされる。
283デフォルトの名無しさん:2012/06/07(木) 23:45:28.86
objective-cでジェネリクスやC++のテンプレートと同じことが出来ますか?
各種オブジェクトならidでそれらしいことができるけれど、プリミティブな型
(例えばintやdouble等)は出来なさそうに思います。
284デフォルトの名無しさん:2012/06/07(木) 23:48:25.43
> プリミティブな型

もちろん不可能だよ。
285デフォルトの名無しさん:2012/06/07(木) 23:49:13.53
NSNumberをかませればできる。
効率的な事はおいといて。
286283:2012/06/08(金) 00:11:45.58
ご回答ありがとうございました。

>284
やはりそうですか。確認が取れてすっきりしました。

>285
この方法も面白いのですが、パフォーマンスを落ちてしまうので残念ですね。
287デフォルトの名無しさん:2012/06/08(金) 00:28:01.06
メソッドの引数で聞きたいことがあります。
C++ではメソッドの引数の参照渡しがあります。
 (void)hoge(int &value)
objective-Cでもこのような参照渡しは可能しょうか。
 - (void)hoge:(int &)value →参照渡しはNG(コンパイルエラー)
 - (void)hoge:(int *)value →ポインタ渡しはOK
288デフォルトの名無しさん:2012/06/08(金) 00:31:33.17
https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html
の Table 6-1 Objective-C type encodings にポインタ型はあっても参照型がないように、
C++の参照は無理。
289デフォルトの名無しさん:2012/06/08(金) 00:38:45.88
>>287
Objective-C++ならできる。
290デフォルトの名無しさん:2012/06/08(金) 00:41:34.15
>288
ありがとうございます。この資料を探していました。
291デフォルトの名無しさん:2012/06/08(金) 00:47:06.18
いや、ゴメン。嘘ついた。289 の言う通り、Obj-C++ なら普通に出来た。

#import <Foundation/Foundation.h>
#import <objc/runtime.h>
@interface Test : NSObject
- (void)hoge:(int &)test;
@end
@implementation Test
- (void)hoge:(int &)test {
test += 1;
}
@end

int main(int argc, const char * argv[]) {
Test * test = [[Test alloc] init];
int foo = 1;
printf("%d\n", foo);
[test hoge: foo];
printf("%d\n", foo);

printf("%s\n", @encode(int &));
printf("%s\n", @encode(int *));
return 0;
}
実行結果
1
2
^i
^i

ポインタと同じ扱いでした。(;^ω^)
292288:2012/06/08(金) 00:48:07.30
↑のレスは288ね。
293デフォルトの名無しさん:2012/06/08(金) 01:05:13.15
>289, 291
まだobjective-Cの知識が不十分なのでobjective-C++を使うのを躊躇していましたが、
objective-C++を使う方が自分のやりたかったことをスマートに実装できそうです。
アドバイスありがとうございました。
294デフォルトの名無しさん:2012/06/08(金) 01:21:32.59
使える所はObjective-C++でC++のソースそのまま使えば良いんだよ。
Objective-CのAPIも使えるし、Toll Free Bridgeあるから基本的な
オブジェクトもCレベルで互換性あるし。
295デフォルトの名無しさん:2012/06/08(金) 22:02:02.39
296>>278:2012/06/09(土) 02:17:43.69
>>279-282
遅くなったがありがとう。ObjC++で問題なさそうだね
このスレ親切だなー
297デフォルトの名無しさん:2012/06/14(木) 19:44:04.23
UIKitのプログラムなんだが
似たような画面(UITableView)を複数作るとして
親クラスに基本的なコンポーネントの生成を任せたいんだが
デリゲートに子クラス自身を渡す方法について悩んでいる

1.
インターフェースでUITableView * _tableView;
と宣言してしまい、子クラスから直接
_tableView.delegate = self;
と代入

2.
デリゲートプロトコルを宣言したid型プロパティまたは
セッターメソッドを用意して
子クラスの初期化時に代入(コンポーネント生成前)

3.
親クラスでのプロトコルでdelegate先取得のメソッドを必須にして
親クラス初期化時に子クラスがreturn selfで返す。

どれでも出来たんだけどどれがベストかなあ。

あと3みたいなのってJavaとかだと抽象クラスでフレームワーク的に
よく使うと思うんだけどObjective-Cではあまり使わないのかな
オーバーライド必須メソッドを親クラスで呼んでコントロールするという
298デフォルトの名無しさん:2012/06/14(木) 20:02:06.10
親クラスに
+ (id)sharedTableView {
 return TheOyaClass;  //的な
}
でも作って、
子クラスの init (とか)の中で [super sharedTableView].delegate = self; とか。
299デフォルトの名無しさん:2012/06/14(木) 20:31:25.84
親クラスのメソッド内でで単に _tableView.delegate = self でいいんじゃないの??
self はインスタンスを生成したクラスなんだから。つまり小クラスであるのだから
親クラスもDelegateプロトコルに準拠だけしておけば何も問題なさそうだけど
300デフォルトの名無しさん:2012/06/14(木) 21:05:27.32
>>298
それってプロパティに近いですよね。
4.2からは実装部だけでインスタンス変数が宣言できるので
なるだけ隠したいというのが発端でした。

>>299
あ、今やったらできました。
以前やったときは子を呼んでくれなかったんだけど
実装ミスだったようです。。。

子クラスでは必要な場合にオーバーライドして
initパターンで最初に親を呼んでから自分の処理実装で目当ての物ができそうです。
メソッドが長いので冗長ではありますが。。。
301デフォルトの名無しさん:2012/06/14(木) 22:31:20.76
初心者なんだが
Id<Adelegate> delegate;でBクラスオブジェクトでA.delegate=self;、とするとアクセサメソッドでAクラスのプロトコルメソッドをBクラスオブジェクト名義で全部実行て事でいんですか??
302デフォルトの名無しさん:2012/06/14(木) 23:01:12.97
[delegate AdelegateMethod:...]
と、Aクラス内(でなくてもいいんだけど)で実行され、delegate の AdelegateMethod:... が呼ばれるだけ
BクラスオブジェクトでA.delegate=self と事前にしているなら、delegateがBクラスオブジェクトなんだから、Bクラスのメソッド(AdelegateMethod:...)が呼ばれるだけ
としか言えない
303デフォルトの名無しさん:2012/06/14(木) 23:41:51.94
>>300
なんとなく思うのだが。
一つのnibファイルを、複数のcontrollerクラス(子クラス?)でロードするとかじゃダメだったのか?
基本的なコンポーネントの生成を任せるために親クラスを用意する必要あるのか?
304デフォルトの名無しさん:2012/06/14(木) 23:57:20.03
>>302
事前にA.delegate=selfしてる場合なんですけど、その時はAクラスのADelegateMethodの内容に書かれている内容→BクラスのAdelegateMethodに書かれている内容、という流れになるんですかね??
305デフォルトの名無しさん:2012/06/15(金) 00:16:25.90
>>304
ん??普通Delegateを用意している(本当はクラスも全く関係ないけど、とりあえず )AクラスにDelegateメソッド(>>302でいう AdelegateMethod:...)は実装しないよ
なので、BクラスのADelegateMethodがAクラスのどこかのメソッドから呼ばれるだけ

また、Bがなんかのクラスの小クラスであっても、親クラスのADelegateMethodが自動的に呼ばれることは無いよ
必要なら、BクラスのADelegateMethodで[super ADelegateMethod:...]を呼ばなければならい。親クラスの処理を先にやりたいならBクラスのADelegateMethodの頭のほうでそれを、後でやらせたになら後ろのほうでそれを
306デフォルトの名無しさん:2012/06/15(金) 00:24:39.03
>>304
Delegateのまえに、@protocolの事は知っているのか?
307デフォルトの名無しさん:2012/06/15(金) 00:46:51.58
>>305
うーむ、例えばテーブルビューを使うとなるとUITableViewDelegateとUITableViewDataSource(スペル合ってるかな、、)を使って最低セルの数とセルの内容を決めるメソッドを書かなきゃいけないですけど
その場合はデリゲートを使って数と内容を決めるメソッドをオーバーライドみたいにしてると思ったんですけど違うんですかね??
>>306
なんとなく位なら、、
308デフォルトの名無しさん:2012/06/15(金) 01:16:43.16
@protocol

1 [U]外交儀礼;(軍隊・宮廷などの)儀礼, 慣習.
2 条約原案, 条約議定書;補足協約, 協定付随書.
3 ((the P-))(フランス外務省の)儀礼局.
4 《医学》プロトコル, (研究・治療などの)実施要綱.
5 (実験などの)観察記録.
6 《コンピュータ》プロトコル, 通信規約:ネットワークの接続手順.
7 《哲学》プロトコール, 命題(protocol proposition).
8 儀礼上のしきたり, エチケット.
9 Objective-CにおけるJavaのインターフェースに相当するもの
309デフォルトの名無しさん:2012/06/15(金) 02:03:37.79
>>303
IBを使わないでコーディングしています。
親のViewDidLoadで共通部品生成
子のViewDidLoadで
[super ViewDidLoad]
の後に差分のコンポーネント生成とか
入力チェックなんかの共通処理は親でやりたいなと
310デフォルトの名無しさん:2012/06/15(金) 02:11:24.42
>>307
オーバーライドじゃないよ。
プロトコルはメソッドの宣言の集まり。元の実装がないのだからオーバーライドも何も元がない。
従ってプロトコルを採用し、実装する側はメソッドをイチから実装する。
311デフォルトの名無しさん:2012/06/15(金) 02:11:37.33
>>307
>メソッドをオーバーライドみたいにしてると
うん、違う
メソッド本体はどこにも無いよ。>>308にある通りインターフェース(Cで言えばプロトタイプ宣言)だけ
メソッド本体はその例えでいうとUITableViewDelegateやUITableViewDataSourceプロトコルを実装するクラスにってこと
312デフォルトの名無しさん:2012/06/15(金) 02:49:56.65
>>310,311
今までデリゲートはオーバーライドみたいなことをしていてテーブルビューで言えばプロトコルに準拠したメソッド上のどこかでテーブルビューを作っていたと思っていたんですけど、
あのプロトコルメソッド群は本当に只々数値を返したり引数を受け取って色々したりするだけ(当たり前だけど、、)なんですな。
テーブルビューで言うとテーブルビューオブジェクトはdelegate,datasourceプロパティを使ってUITableViewDelegate,UITabelViewDataSource準拠したメソッドを使って自身を設定してるのかな??
313デフォルトの名無しさん:2012/06/15(金) 03:44:44.49
>>312
オーバーライドタイプだとして(そういうのが無いわけでもない)も、自分で実装したメソッドで super でオーバーライドした元を呼んだりしなければ、Delegateメソッドで他に何かをしているとかは無いんだけど
テーブルビューは枠組みを提供しているのであって、ユーザサイド(貴方や俺やテーブルビュー使ってなんか作る人ね)固有と思われるのをUITableViewDelegateやUITabelViewDataSourceで取得、通知しているってのだけど
314デフォルトの名無しさん:2012/06/15(金) 03:50:01.04
ユーザサイド固有のデータの取得や、ユーザサイドが必要とするであろうテーブルの変化の通知
315デフォルトの名無しさん:2012/06/15(金) 05:44:12.25
韓国の国内総生産(GDP)を考慮した個人負債規模が財政危機に陥っているスペイン並みに深刻な水準となった。

個人負債の増加速度は経済協力開発機構(OECD)加盟国で3位と平均を大きく上回った。 

大韓商工会議所が14日に発表した「個人負債現況と政策課題」報告書によると、
2010年の韓国のGDPに対する個人負債の比率は81%でOECD平均の73%より高かった。 

これは財政危機を陥っているスペインの85%に迫る水準だ。ギリシャの61%より20ポイント高い数値だ。

個人負債増加幅も急速に拡大していうる。2006年以後鈍化した個人負債増加率は2010年に前年比2.4ポイント上昇の9.8%を記録した。

【今日の感想】この記事を読んで・・・
面白い (40件)
悲しい (2件)
すっきり (1件)
腹立つ (0件)
役に立つ (6件)

http://japanese.joins.com/article/707/153707.html?servcode=300§code=300
316デフォルトの名無しさん:2012/06/15(金) 08:15:49.25
-(void)methodA:(id<protocolB>) hoge
{
[hoge methodB]
}

引数に渡したクラス(protocolBを実装してる)によって処理が変わるメソッドの書き方はこれであってますか?
317デフォルトの名無しさん:2012/06/15(金) 09:37:41.99
>>316
あってる
318デフォルトの名無しさん:2012/06/15(金) 09:55:53.58
上でテーブルビューとデリゲート教えてくれた人達昨日はどーもでしたどーもでした
319デフォルトの名無しさん:2012/06/15(金) 12:12:34.31
>>317
ありがとうございます
「メソッドがありません」エラーがでてしまったので質問しました
構文があってるなら、実装が悪いのかな…探してみます
320デフォルトの名無しさん:2012/06/15(金) 15:46:15.93
>>316
if ([hoge respondsToSelector:@selector(methodB)]) {

}
で囲った方が安全だよ。
321デフォルトの名無しさん:2012/06/15(金) 16:06:14.81
>>320
そうするとメソッドが無い場合(ようするにデリゲートがnilの場合)
処理を行わないって訳だな?
こいつは良い情報!
322デフォルトの名無しさん:2012/06/15(金) 16:07:19.47
required protocol ならそんなことをする必要はない

323デフォルトの名無しさん:2012/06/15(金) 16:32:16.94
ほう。
デフォルトはどっちかなと調べたらデフォルトがrequired。
>>320を使う事は滅多に無さそうだ。
324デフォルトの名無しさん:2012/06/15(金) 17:12:11.18
>>321
>ようするにデリゲートがnilの場合
optionalメソッドでデリゲートが実装してないの場合ね
325デフォルトの名無しさん:2012/06/15(金) 19:39:51.14
>>309
> IBを使わないでコーディングしています。
> 親のViewDidLoadで共通部品生成

IBを使わないコーディングをしているのに、ViewDidLoadを利用するのって変じゃないか?
いったい何がしたいの?
326デフォルトの名無しさん:2012/06/15(金) 20:35:42.04
>>325
普通に使うけどそんなに変か?
327デフォルトの名無しさん:2012/06/15(金) 20:41:53.34
>>326
もちろん普通に使うよ。
つまり、IBを使っているということだろ?
328デフォルトの名無しさん:2012/06/15(金) 20:48:10.69
view lifecycleとかググって読んだ方がいいんじゃないの?
329デフォルトの名無しさん:2012/06/15(金) 20:55:34.02
いや公式のドキュメントを読めよ
330デフォルトの名無しさん:2012/06/15(金) 21:02:37.82
日本語訳されたのでiOS ViewControllerプログラミングガイドってのがあるな
331デフォルトの名無しさん:2012/06/15(金) 21:56:30.08
ViewDidLoadとIB使ってる使ってないは関係ないだろ
332デフォルトの名無しさん:2012/06/15(金) 22:33:59.70
というのを、遠まわしに言っているのが、>>328-330 だと思った
333デフォルトの名無しさん:2012/06/15(金) 22:54:35.64
ん?
viewDidLoadは、nibファイルがロードされてViewが生成された後に呼ばれるメソッドだろ?
nibファイルが関係するなら、当然IBを使うってことじゃないのか?
それに、nibファイルを使わずに、自前でViewを生成する場合は、loadViewの方を利用するんじゃないのか?
334デフォルトの名無しさん:2012/06/15(金) 23:17:39.36
いずれにしてもviewDidLoadは呼ばれる
335デフォルトの名無しさん:2012/06/16(土) 00:10:20.63
loadViewの後でviewDidLoadは何もおかしくはない
336デフォルトの名無しさん:2012/06/16(土) 00:28:32.64
>>335
> loadViewの後でviewDidLoadは何もおかしくはない
もちろん、それは何もおかしくない。
でも、今回はなぜかloadViewの話が出て来ない、代わりにviewDidLoadの中で自前のViewを生成することになってるだろ?
つまり、nibファイルによってViewが生成され、さらに自前でもViewを生成すると。
しかも生成するのが共通部品ということなら、普通にnibファイルの中に入れちゃえば良かったのでは?

今回の話では、共通部品(UITableView)を生成する「親クラス」と
親クラスで生成した部品を利用する(UITableViewDelegate)「子クラス」がある。
この2つのクラスが、派生・継承の関係にあるから、話が複雑になってしまったのではないかと。
それらのクラスが、別々の独立したクラスなら、もっと単純な方法が取れたんじゃないかなと。
337デフォルトの名無しさん:2012/06/16(土) 00:40:01.36
delegateを指定する話じゃねーの?
338デフォルトの名無しさん:2012/06/16(土) 00:43:57.91
loadViewはViewのload(生成)、その余儀としてのdelegateの設定はviewDidLoadで問題無いだろう
nibを使おうが使わずにloadViewでコードで作成しようが、どっちにも対応できるだろう。nibを使ってないそうだが問題ないどころかより適しているだろう

後半は何を言っているのかわからん。なにをひとりでカラわまりしているんだ?
339デフォルトの名無しさん:2012/06/16(土) 00:45:15.91
UITableViewがnibファイルの中に入ってて、「子クラス」がそれのFile's ownerなら、ごく普通にdelegateが設定できるだろ?
340デフォルトの名無しさん:2012/06/16(土) 00:46:08.73
nibを使っての話だろそれは
341デフォルトの名無しさん:2012/06/16(土) 01:00:32.41
>>338
>>340
loadViewを使っていないようだから、逆にnibは使わさっているんじゃないのか?
342デフォルトの名無しさん:2012/06/16(土) 01:04:44.91
IBを使わないでnibを使う変態は俺は知らないw
343デフォルトの名無しさん:2012/06/16(土) 01:23:24.44
IB使わなくともviewDidLoadメソッドは利用するよ。
ちょっとUIViewとUIViewControllerの役割りの違いとか勉強した方がいいんじゃない?
344デフォルトの名無しさん:2012/06/16(土) 01:30:30.15
単なる nib からロード(文字通りロード)したときのみ、viewDidLoad が呼ばれると間違って思い込んでいただけのようだけどな。もう過ちはとっくに理解しただろう
あとはグダグダ言っているだけw
345309:2012/06/16(土) 01:42:25.81
あっ、スレが伸びてる。。。
布留川さんのプログラミングバイブルと
所さんのUIKit詳解リファレンスを参考にしていますが
両者とも取り立ててloadView自前で実装していなかったので
意識しておりませんでした。
状況としては
http://cheebow.info/chemt/archives/2010/11/loadviewviewdid.html
と同様ですがViewDidLoad時点では
デフォルトのViewが生成されているようですね。
UIViewContolerを継承した自作の中の
ViewDidLoadでself.addSubViewを行って期待通りの動作をしています。
346デフォルトの名無しさん:2012/06/16(土) 02:11:32.32
お前さんも>>330を読みなさい(そのWeb主もw)。せっかくタダで日本語でわかりやすいのにい
347デフォルトの名無しさん:2012/06/16(土) 03:13:42.61
>>346
読みました。loadView部分のコードをコピペして
いままでviewDidLoadに書いていた部分を移動しました。
本に乗ってたサンプルだとテーブル作った時点でデータ取りにいってたので
delegateとDataSourceの設定だけViewDidLoadに書いてreloadDataすることで
満足のいく形になりました。

IBは使えるようになったほうがいいですか?
AppleはIB推しなのでしょうか?これからは主流になるでしょうか?
GWTや.NETでコードで配置するスタイルに慣れているのですが...

AndroidやMetroアプリも両方の手法を用意しているようですが...
348デフォルトの名無しさん:2012/06/16(土) 03:37:32.65
>>347
うん、使えっ!Apple推しというかそもそもニコイチ。発生元のNeXTから
例えばあ、これから出るかもしれない、iPhone の変なのとか、コードに埋まっている、数値いじったりするよりは、nib で分けておいた方がいいと思うけどなあ
nib 使わないヤツはちょっと変態だと思う、俺は。別に好き好きでやってるんだろうからどうでもいいけど
本ではnibで説明するのが面倒だから、コードでじゃないのかなあ。まあ変態wが書いているのかもしれないけど
349デフォルトの名無しさん:2012/06/16(土) 05:13:41.84
クラスの実装においても, インスタンスヴァリアブルへのアクセスは, イニシャライザを除いて,
インスタンスヴァリアブルに直接アクセスするのではなくアクセッサを介して行うべきだ,と聞いたのですが
インタフェースとインプリメンテーションでインスタンスヴァリアブルの挙動を変えたい場合,
ようするに外からはreadonlyにしたいけれども, クラス内ではreadwriteにしたいとき,どのようにすべきなのでしょうか?
インタフェースにはreadonlyで宣言し,実装ファイルではクラスエクステンションを用いて,
プロパティ宣言をreadwriteでオーバーロードしようとすると,
Property attribute in continuation class does not match the primary class
と怒られてしまうのです.
350デフォルトの名無しさん:2012/06/16(土) 05:37:08.38
>>349
インスタンス「変数」でいいよw

Hoge.h
@interface Hoge
@property (readonly) id hogeValue;
@end

Hoge.m
@interface Hoge ()
@property (readwrite) id hogeValue;
@end

@implementation Hoge
@synthesize hogeValue;
...
@end

で、別にエラーにならずに、ちゃんと機能するけど?

351デフォルトの名無しさん:2012/06/16(土) 06:02:25.51
前々スレの>>219-228で出た話題だな。

ていうか最近の無名カテゴリって結構やりたい放題出来るよね。
352デフォルトの名無しさん:2012/06/16(土) 06:21:32.30
>>350
ありがとうございます。
readwriteだけだと上手くいくんですね。
strong, readwrite, atomicだと警告が出ますが
readwriteだけでも強参照にはなるのでしょうか?
353デフォルトの名無しさん:2012/06/16(土) 09:12:54.31
>>352
readonly 以外の部分は同じじゃないとダメ
354デフォルトの名無しさん:2012/06/16(土) 15:51:20.56
>>353
ありがとうございます.
なぜか, readonlyの方だけstrongをつけていなかったのですが, 確かに, readonly/readwrite以外同じにしたら警告が消えました.
サブクラスの実装を, スーパークラスと同じ実装ファイル内に書いて, クラスエクステンションを使えば, 親クラスのプロパティを隠蔽しつつ, サブクラスからはアクセス出来るように出来るので, 便利ですね.
しかし, プロパティを介してアクセスを行うと,インスタンス変数にアクセスする度にアクセサメソッドの呼び出しの処理や, さらにatomicにしているといちいちロックの処理が挟まれ, 無駄な処理が多くなる気がするのですが皆さんどうされてますか?
355デフォルトの名無しさん:2012/06/16(土) 16:00:17.46
本当にそこがボトルネックになるならば直接アクセスにすればいいし、
なるかどうかわからないのであれば気にしなければいい

atomicはたいして意味がないから基本nonatomicでいい
356デフォルトの名無しさん:2012/06/16(土) 19:33:41.60
米食品医薬品局 韓国製海産物の回収を求める

http://m.ruvr.ru/data/2012/06/16/1295821940/4RIA-618757-Preview.jpg

  米食品医薬品局(FDA)は、健康に害を及ぼす可能性があるとして米国市場に韓国製海産物製品を入れないよう求めた。
 14日ロイター通信が伝えたところでは、韓国製の海産物の中にヒトの糞便の痕跡が見つかり、この事は、胃腸の病気を
引き起こすノロウイルスが食べ物の中に存在する可能性を意味する、との事だ。

  問題となっているのは、韓国製のカキ、ホタテなどの貝類やイクラなどで、生のものも又、缶詰入りのもの、さらには別の
方法で加工された製品も含まれている。

  ロイター通信によれば、今のところ駐米韓国大使館からは、何のコメントも出されていない。

http://japanese.ruvr.ru/2012_06_16/78294694/


韓国製の海産物の中にヒトの糞便の痕跡が見つかり
韓国製の海産物の中にヒトの糞便の痕跡が見つかり
韓国製の海産物の中にヒトの糞便の痕跡が見つかり
韓国製の海産物の中にヒトの糞便の痕跡が見つかり
韓国製の海産物の中にヒトの糞便の痕跡が見つかり

357デフォルトの名無しさん:2012/06/16(土) 19:59:01.73
>>354
気になるなら直接インスタンス変数使えばいいんじゃないの
getterはatomicの時(スレッド間で同期が必要なもんとか)にしか利点が無いような
setterは利点あるし、わざわざインスタンス変数直接ってのをするほど使わないような
358デフォルトの名無しさん:2012/06/17(日) 00:26:28.79
XCodeで新規で空プロジェクト作成すると
@synthesize window = _window;
とインスタンス変数を作成するのに

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

と直接_windowを使わずにプロパティアクセスにしてるのはどんな意図なんだろう?
全部このスタイルで書いた方がいいのかな
359デフォルトの名無しさん:2012/06/17(日) 00:40:30.86
setterは属性によってrelease/retain勝手にしてくれる/しなくてもいいのはしないし、
ソースファイルのARCの有り無しでretain/releaseを書けない/書かなければならないとかいう矛盾も吸収してくれる
など、気まぐれな方針変更も極一部を書き換えるだけで済む
360デフォルトの名無しさん:2012/06/17(日) 00:42:03.14
>>358
なにいってんだおまえ
@synthesizeはインスタンス変数の生成じゃあない
361デフォルトの名無しさん:2012/06/17(日) 00:43:07.44
すまん文盲だった
362デフォルトの名無しさん:2012/06/17(日) 00:43:10.93
ああ、ARCオンだとrelease/retain勝手にしてくれる/しなくてもいいのはしないってのは同じなのか(?)
363デフォルトの名無しさん:2012/06/17(日) 01:01:25.34
2008年頃のApple自身のHellowWorld出すサンプルと
2011年頃の同じくHellowWorld出すサンプルで
そもそもApple自身の中でコードの作法が違ってるからな…
364デフォルトの名無しさん:2012/06/17(日) 06:40:36.95
>>355>>357
ありがとうございます
うーんバンバンdispatch_asyncしてるのでatomicの方が安全かなと思うのですが難しい所ですね
atomicにしてても, インクリメント等するときや複数のプロパティをまとめてゲットしなきゃいけないときはさらに外側で@synchronizedしないといけなかったりするので
@synchronizedばっかりになってオーバーヘッドになりそうな気も
365デフォルトの名無しさん:2012/06/17(日) 11:21:33.43
>>364
それは、「平行処理プログラミング」について勉強すればいい。
そうすれば、@synchronizedを使わずに済ませる方法が分かる。
ちなみに、「マルチスレッド・プログラミング」と「平行処理プログラミング」は違う。
366デフォルトの名無しさん:2012/06/17(日) 12:15:37.27
>>365
平行処理とマルチスレッドってどう違うの?
367デフォルトの名無しさん:2012/06/17(日) 17:20:39.66
>>366
マルチスレッドの方は、ただ単純に複数のスレッドを使うだけ。
平行処理の方は、複数のCPUコアを使う高度なパフォーマンスチューニングテクニック。

たぶん、単純に”マルチスレッド”て調べただけでは、「@synchronizedを使わずに済ませる方法」には辿り付けないかもしれない。
368デフォルトの名無しさん:2012/06/17(日) 18:22:09.87
スレッドプールとかGCDとかで複数のスレッドを使うようにするのは、
そのまま複数のCPUコアを均等に無駄なく使う事に繋がるのでは。
369デフォルトの名無しさん:2012/06/17(日) 19:08:14.95
iPhoneもマルチコアなんだっけ?Mac限定?
370デフォルトの名無しさん:2012/06/17(日) 19:42:30.05
4S は 2 コアだと聞いた
371デフォルトの名無しさん:2012/06/17(日) 23:55:29.52
>>368
そういうレベルの話じゃない。

ただ単にマルチスレッドな話だと、スレッドセーフにするために「ロック」や「セマフォ」を使いましょう。
といった内容になるだろう。

平行処理の方は、複数のCPUコアを同時に動かすことでパフォーマンスを稼いでいるので、
「ロック」や「セマフォ」などでスレッドを一時停止させては意味がない。
つまり、「ロック」や「セマフォ」を使わずに、スレッドセーフなプログラムを組む。
といった内容になります。

スレッドもCPUコアと同じ数しか作らないので、逆に言うとシングルCPUな環境だと無意味。
シングルCPUな環境なら、NSRunLoopを活用した方がよい。
372デフォルトの名無しさん:2012/06/18(月) 00:21:09.29
パフォーマンスを稼ぐっていうのに執拗で、そんなに並列化してぎっちぎっちな最適化が必要なプログラムなんてほとんどねーよ
理論だけが先走りっていうあたまでっかち典型のように見えるな
373デフォルトの名無しさん:2012/06/18(月) 00:32:53.23
>>372
そう思うなら、オーバーヘッドを気にせず@synchronizedを使えばいいだけの話だ。
374デフォルトの名無しさん:2012/06/18(月) 00:38:07.19
お前はそれ以上のことを言っているんだがな。それもリアル感が無いってのを
というのが気になっただけだよ
375デフォルトの名無しさん:2012/06/18(月) 00:45:29.28
ちなみに、@synchronizedやNSLockのコストは微々たるもんだよ。全体から見れば
問題は実際に競合して止まる度合いだろう。しょっちゅう引っかかるようなら、お前の言うよくわからん並行処理とやらで競合があまりしないようにしなければならないということだろ

元ネタの>>364は、コード書いていての気分的なもんでしかないと思うけど
376デフォルトの名無しさん:2012/06/18(月) 00:50:15.40
平行じゃなくて並列(パラレル)じゃね?
それかコンカレントなら並行。
377デフォルトの名無しさん:2012/06/18(月) 02:18:06.44
脱原発、脱原発と叫びながら、既にこの時期にエアコン使ってる奴は糞
原発はダメだけど電気は寄越せってか!
378デフォルトの名無しさん:2012/06/18(月) 02:21:37.18
>>371
CPUで計算するだけなら並列処理にはマルチコア必要だけど、時間のかかるI/Oと
他の処理並行動作させたりするのもマルチスレッド化の大きな目的だから、
コア数どうこうは関係無いよ。排他制御の類は必ず必要だし、シングルコアだから
スレッド化不要とかロック多用して良いって事にもならない。
あと、単にカウンタ値増減したり、キューにデータ突っ込んだりとかは
atomic operationが用意されてるので(OSAtomicなんとか)これを上手く使えば
ロックの類は使わなくて済む。
379デフォルトの名無しさん:2012/06/18(月) 05:57:56.07
なんだか論点がずれてるな
380デフォルトの名無しさん:2012/06/18(月) 08:57:13.19
理論だけが先走って、いつまでたっても物が出来上がらないタイプだな
381デフォルトの名無しさん:2012/06/18(月) 09:21:13.88
良く分からんけど、その平行プログラミングってのはBONICみたいなのを単一コンピュータでやるってこと?
work unitの取得さえ同期してれば後はお好きにどうぞって奴
382デフォルトの名無しさん:2012/06/18(月) 18:57:22.96
>>375
@synchronizedやNSLockのコストとか、競合の発生率なんかよりも、
LockとUnlockで囲まれた部分のコストが問題になりそうな気がするが。

>>378
GCDを使いまくってて、各タスクの中にある@synchronizedがウザイという事で、
それを何とかしたかったら並行処理プログラミングをしろ。という話のはずだが?
383デフォルトの名無しさん:2012/06/18(月) 19:01:56.87
>>382
意味わからん。LockとUnlockで囲まれると何か余計なことされるわけ?
384デフォルトの名無しさん:2012/06/18(月) 19:13:47.03
>>382
囲まれた部分はコストも何も本来必要不可欠なものだろう。その部分を安全にということでLockとUnlockするのであって、それが安全にというためだけ(つまり競合しなければ不必要)で、Lock/Unlockしなければならない部分がコストなんだけどな
NSLock(てかセマフォか)使えば、その間のコードに余計な何をされるかなんて思いもよらないし、@synchronized はNSLockをより便利にってようなもんだろ(違うけど)

どうも意味がわからん。だから並行処理とかなんとか言いたいのか??
385デフォルトの名無しさん:2012/06/18(月) 19:15:47.18
✕Lock/Unlockしなければならない部分がコスト
◯Lock/Unlock(Lock/UnlockにかかるCPU消費量)がコスト
386デフォルトの名無しさん:2012/06/18(月) 19:52:39.21
お前えらコストって言ってみたいだけだろ
387天才かえるん ◆69rLNSEETE :2012/06/18(月) 19:53:55.06
クラシック対応でCarbon+QuickDrawでオンラインゲーム作ってるやついる?
388デフォルトの名無しさん:2012/06/18(月) 19:56:09.66
>>384
「コスト」という言葉が悪かったか。「処理時間」と言い直そう。
長い間Lockされ続けると問題になると言う意味。
389デフォルトの名無しさん:2012/06/18(月) 20:10:03.80
>>388
だーかーらー、それも競合しなければ何も問題にすることじゃないってのに
競合が問題であって、競合がひどかったら自然とそうならないようにするだろ。わざわざ並行処理なんて持ち出さなくたって
長い間Lockされ続けるという例を出すも不適切だろ。お前はそんな下手糞なのか?

ついでに、>>378>>371で余計なところを指摘しているだけだろ

なんか言い出して後に引けないというのは近いところで見たことがあるなwまあ、アレはひどすぎたがw
390デフォルトの名無しさん:2012/06/18(月) 20:18:23.94
>>386
いや、違う。競合って言ってみたいんだよw
391デフォルトの名無しさん:2012/06/18(月) 20:37:20.55
やるならこっちでドヤ顔してこいよ。
http://toro.2ch.net/test/read.cgi/tech/1339691517/
392デフォルトの名無しさん:2012/06/18(月) 20:45:04.75
イミフ
393デフォルトの名無しさん:2012/06/18(月) 20:46:50.14
>>389
だから〜、「競合する」という前提条件があるからロックするんだろ?

> 競合が問題であって、競合がひどかったら自然とそうならないようにするだろ。わざわざ並行処理なんて持ち出さなくたって

もちろん、競合すること事態が問題だ。そして、その競合を回避する手段として並行処理があるという話だ。
「@synchronizedを使わずに済ませる」というのは、けっきょくのところ競合しなくなるからだぞ。
394デフォルトの名無しさん:2012/06/18(月) 20:50:18.39
@synchronizedもセマフォもミューテックスも使わずにどうやって整合性を保証するんですか?
395デフォルトの名無しさん:2012/06/18(月) 20:56:17.98
>>393
競合するかもしれないだよ。各スレッドは勝手に動いているものだからな。タイミング取る方がむずかしいぐらいだ
保険としての意味合いの方が大きいだろう

そんなのは普通なことだろってことなんだがな。並行処理とやらのなんだか高尚そうなことを言い出さなくても
元々はそんなレベルの話ですら無いだろう。お前が並行処理とかやらの理論に拘るのはいいが、持論を強化するために余計なトンチンカンに見えること言うから(>>371)、その持論も怪しいものに見えるってことだよ

長い間Lockされ続けるは無しでいいんだな?w
396天才かえるん ◆69rLNSEETE :2012/06/18(月) 21:10:00.40
Glenn Seemannが一番最強だけどな
お前らは小物なんだよ
397デフォルトの名無しさん:2012/06/18(月) 21:13:50.79
>>396
大物らしくしてください。それだと狐にしか見えませんぜ
398デフォルトの名無しさん:2012/06/18(月) 21:22:40.00
Glenn Seemannって言ってみたかっただけだろ
399デフォルトの名無しさん:2012/06/18(月) 21:26:04.77
GCDは、lockのコスト軽減云々よりはむしろdeadlockや不適切なlockの範囲など、
プログラムエラーの回避を容易にするためのもんなんじゃないの?
400デフォルトの名無しさん:2012/06/18(月) 21:31:14.11
ここで新説の登場か
401デフォルトの名無しさん:2012/06/18(月) 22:07:34.64
GCDはスレッドプールだろ
402デフォルトの名無しさん:2012/06/18(月) 22:18:39.80
連想参照で基本データ型を登録する関数が無かったのでラップしてみたんですが、こんな感じで合ってるんでしょうか?
void objc_setAssociatedIntegerValue(id object, const void *key, NSInteger value) {
NSNumber *number = [[NSNumber alloc] initWithInteger:value];
objc_setAssociatedObject(object, key, number, OBJC_ASSOCIATION_RETAIN);
}
NSInteger objc_getAssociatedIntegerValue(id object, const void *key) {
NSNumber *number = objc_getAssociatedObject(object, key);
NSInteger value = [number integerValue];
return value;
}
403デフォルトの名無しさん:2012/06/18(月) 23:36:44.79
ARCならあってるけどMRCならリークしてる
404デフォルトの名無しさん:2012/06/19(火) 08:24:08.96
ありがとうございます。ARCです。
しかし連想参照オブジェクトが空だった場合の処理を忘れてました。
NSInteger objc_getAssociatedIntegerValue(id object, const void *key) {
NSNumber *number = objc_getAssociatedObject(object, key);
NSInteger value;
if (number != nil) {
value = [number integerValue];
} else {
value = 0; //NSNotFound?
}
return value;
}
この場合NSNotFoundの方がいいんですかね?
405天才かえるん ◆69rLNSEETE :2012/06/19(火) 10:04:18.34
まあ
C,Carbon、QuickDrawでオンラインゲーム「Oberin」を完成させた
Glenn Seemann、David M. Bourg は最強だけどな
http://oberin.com

http://www.amazon.co.jp/%E3%82%B2%E3%83%BC%E3%83%A0%E9%96%8B%E7%99%BA%E8%80%85%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEAI%E5%85%A5%E9%96%80-David-M-Bourg/dp/4873112168

10年前以上にUO風のゲームを二人で完成させた
PPC版も
お前らってほんとクズだよな
10年以上前の人にも勝てないし
どうせ図形やグラフ表示させて喜んでる程度だろ
ゲームは創作物としてレベル高いからな
406デフォルトの名無しさん:2012/06/19(火) 11:17:59.06
マジすねおだった。ああスネオは親が金持ちっていうのがあるからそれ以下かw
407デフォルトの名無しさん:2012/06/19(火) 22:10:00.39
>>405
Unityスレに帰れよw
408デフォルトの名無しさん:2012/06/19(火) 22:50:43.95
>>404
> この場合NSNotFoundの方がいいんですかね?
それは、このコードの仕様を考えた自分自身にしか分からない。
409デフォルトの名無しさん:2012/06/20(水) 13:07:56.10
>>405
俺昔一人でEQ LikeなMMO書いた人知ってるけど、お前みたいにドヤってもいいかな?
410デフォルトの名無しさん:2012/06/20(水) 15:00:05.10
すみません
ARCについてですが、変数に代入せずに、あるメッセージ送信のなかに入れ子で
・・・withInstanceA:[[ClassA alloc] init] ・・・
とかやると所有権つきで作った後メッセージに引数として渡した後リリースするすべが無いのでリークしますよね?
また、一時的なインスタンスを取り出して一時的なインスタンスを返すメソッドで、一時的なインスタンスをreturnに直接渡すのもダメで、一度変数に代入してリテインしてやらないとマズイですよね?
例えば
- (NSString *)URLPathComponent1 {
return [[[self url] pathComponents] objectAtIndex:1];
}
これはマズくて
- (NSString *)URLPathComponent1 {
NSString *pathComponent;
@autoreleasepool {
pathComponent = [[[self url] pathComponents] objectAtIndex:1];
}
return pathComponent;
}
ってしないとダメですよね?
411デフォルトの名無しさん:2012/06/20(水) 15:21:00.86
ARC=Auto Refarence Counting
自動で参照カウンタを操作する
自動で参照カウンタを
自動で
自動
412デフォルトの名無しさん:2012/06/20(水) 15:52:38.49
>>410
いちいち変数に入れる必要はない。あと、ほとんどの場合、自分で @autoreleasepool {} を書く必要もない。
413天才かえるん ◆69rLNSEETE :2012/06/20(水) 17:58:30.33
>>409
外人?
どうせドルアーガの塔レベルだろ

コミュニティはどれくらい続いてる?
10年以上続いてるかな?
サーバー代とか無料プレーかな?
414天才かえるん ◆69rLNSEETE :2012/06/20(水) 18:05:31.91
まぁ・・・オライリー本出してるしね5★
好評価

今もなお各国のファンがフォーラムに書き込んでるしね
開発者はGlenn+Davio
http://ja.wikipedia.org/wiki/Oberin

>>開発者のGlennは個人的な興味で開発・運営を行っているらしく、今後も無料で運営を継続する見込みである。
現在、OberinのサーバはGlennの自宅サーバで稼働しているものと考えられており
多人数がログインすることで動作速度が極度に低下するなど、回線のトラブルが絶えない。2005年8月には巨大ハリケーン・カトリーナの影響でGlennの自宅が被害を受け、サーバが停止するという事態も起きた。

Xcode,CodeWarrior,C言語,Carbon+QuickDrawで作られてるしね・・・

どうせお前のゲームはWindowsとかの方だろw
Macの開発者ないんだろうな

まあクズで視野が狭いし 世界観も狭そうだから
知らないんだろうなグズが
415デフォルトの名無しさん:2012/06/20(水) 18:24:06.73
うん、天才かえっていいから
もしくはObjective-Cの話をしてみてよ
416デフォルトの名無しさん:2012/06/20(水) 19:04:40.63
>>410
ARCだと
- (NSString *)URLPathComponent1 {
return [[[self url] pathComponents] objectAtIndex:1];
}
これをコンパイルすると自動的に
- (NSString *)URLPathComponent1 {
return [[[[[self url] pathComponents] objectAtIndex:1] retain] autorelease];
}
になる


・・・withInstanceA:[[ClassA alloc] init] ・・・は 書かれた場所などを判断して、
retain, autoreleaseを適切に自動的に付け足す
417デフォルトの名無しさん:2012/06/20(水) 19:59:33.25
NSUserDefaluts使って2つのViewController間で値渡しってさせられる?
ViewControllerAである変数をNSUserDefalutsに保存してViewControllerBから読み込むみたいな
できたら便利なんだけど
418デフォルトの名無しさん:2012/06/20(水) 20:00:46.33
ぜんぜん便利に思えない・・・
419デフォルトの名無しさん:2012/06/20(水) 20:10:06.56
え?便利じゃない?
Prapareなんとかって無駄に長いし
420デフォルトの名無しさん:2012/06/20(水) 20:22:14.68
グローバル好きと変わらないような。グローバルも便利だと言えば便利だろう
値渡しとか一時的なもんに使うのは気持ち悪いんだけど。グローバルじゃなくてNSUserDefaluts 使うのはグローバルが気持ち悪からでしょ?
NSUserDefaluts って文字が示しているように一時的なもんじゃなくて、Defaults (ユーザ設定)に使うもんだけど。本来
421デフォルトの名無しさん:2012/06/20(水) 20:23:32.75
直接わたせばいいじゃん
422デフォルトの名無しさん:2012/06/20(水) 20:24:37.34
ああ>>417のような質問をするってことは、何もわかってなかったんだな
そんなことするなっw
423デフォルトの名無しさん:2012/06/20(水) 20:33:24.88
え、グローバル変数って別のクラスからでも扱えるの?
できなかったんだけど
424デフォルトの名無しさん:2012/06/20(水) 20:35:11.97
んーと、君は某スレの人でしょ。いろいろと勉強しなさい
グローバルはグローバルだよ。クラスなんて関係ないよ。どの言語でも
425デフォルトの名無しさん:2012/06/20(水) 20:36:59.39
>>423
てか、使おうとするなよっw
まあ、お前さんがどう変なコード書こうがお前さんの自由だが
426デフォルトの名無しさん:2012/06/20(水) 21:49:28.15
>>411,412,416
ありがとうございます。
ということは, 自動で変数を用意して代入してから引数として与えてしかる後に解放してくれるんでしょうか
単にretainやreleaseやautoreleaseを適切な場所に挟んでくれるだけだと思ってたので、
MRCだと挟めない書き方をするとダメだと思ってたんですが一時的に変数に移すのまで自動でやってくれるんですね・・・
- (NSString *)URLPathComponent1 {
return [[[[[self url] pathComponents] objectAtIndex:1] retain] autorelease];
}
↑これだと、この後メソッドから抜けるときに更にもう一度autoreleaseが掛かるはずなので、オーナーシップの数を超えてautoreleaseされると思うのですが大丈夫なんでしょうか?
427デフォルトの名無しさん:2012/06/20(水) 22:36:54.74
こちんこちんのちんこ
428デフォルトの名無しさん:2012/06/20(水) 23:52:41.62
>>426
イミフ。ARCとMRCがごっちゃになってない?
ARC厳禁でMRCから始めてみたら?
429デフォルトの名無しさん:2012/06/21(木) 00:09:52.99
>>428
alloc, copy, mutableCopy, newメソッドファミリに属するメソッドは保持可能なインスタンスへのポインタを返し、これら以外は一時的なインスタンスへのポインタを返すだったと思いますが、
一時的なインスタンスへのポインタを返すということは, そのメソッド定義の最後で, autoreleaseされてreturnされるということだと思いますが、
ARCではretain, release, autoreleaseは書けませんから、そのメソッド定義内でオーナーシップを持っていたオブジェクトを、最後にautoreleaseする処理が自動的に入るはずです。
なので、一時的なインスタンスを返すメソッド定義では、最後にautoreleaseが補完されることを念頭に置いて、オーナーシップを持っておかなければならない、
つまり一時的なインスタンスを別の上記メソッドファミリ以外のメソッドで取得し、オーナーシップを取らずにそのままreturnするとまずいと思うのですが間違ってますでしょうか?
430デフォルトの名無しさん:2012/06/21(木) 00:29:20.65
>>423
sharedXXXとか使ったことないのか?
てか421の言うように直接渡せばいいだろ
渡される側に公開メソッドとかプロパティ用意すればいいだけだろ

>>429
「参照カウント」だぞ?カウンタを増減するだけなのに難しく考え過ぎ
メモリの解放はカウントがゼロになった時点でランタイム側が行う

それにしてもdelegateベースの多態に慣れないなあ
なんかjavaっぽくなってしまう...
実現できるからいいっちゃあ良いんだろうけど人に見せられない
431デフォルトの名無しさん:2012/06/21(木) 00:40:23.99
delegateベースの多態?
432デフォルトの名無しさん:2012/06/21(木) 01:15:48.28
>>429
> 一時的なインスタンスを別の上記メソッドファミリ以外のメソッドで取得し、オーナーシップを取らずにそのままreturnするとまずい

自動的にretainして、自動的にautoreleaseされるから、問題なし。

- (id)hoge {
id boke = [NSString stringWithFormat:@"%i", 123];
[boke retain]; // ARC自動挿入
[boke autorelease]; // ARC自動挿入
return boke;
}
433デフォルトの名無しさん:2012/06/21(木) 01:33:41.80
>>429
やっぱりMRCが始めるのがいい。Reference Counter がわかってないので(>>430の言う通りだんだけど)

ARCは高度に勝手にコード中にrelease/autoreleaseが入る。それは値を返すメソッドとは限らず、受け取り側のコード中にも埋められる
ほとんど Reference Counter を意識させないのがARCの目的でもあるんだが、あなたのように気になりまた、間違って理解しているなら、MRCからだね。やっぱり
434デフォルトの名無しさん:2012/06/21(木) 06:21:37.39
野田首相 は 在日韓国人 (画像あり)
http://engawa.2ch.net/test/read.cgi/poverty/1340202801/



野田首相

在日韓国人に お礼の 挨拶

画像
http://blog-imgs-42.fc2.com/o/m/o/omoixtukiritekitou/201109030608283c7.jpg


野田首相

朝鮮飲み で 水を飲む 



画像
http://image.goooze.net/blog/thumb/1320119918/1-1.jpg
435デフォルトの名無しさん:2012/06/21(木) 09:40:05.73
>>429
id foo = [anObj URLPathComponent1];
↑ここ(呼び出し側)で適切にオーナーシップが設定される。

この場合なら恐らく retain,autorelease だけど、プログラマが考える必要は特にない。
436天才かえるん ◆69rLNSEETE :2012/06/21(木) 10:01:34.17
口だけバカは逃げたか
虚勢はって逃げたな
437デフォルトの名無しさん:2012/06/21(木) 14:50:56.03
>>431
まぁ、言いたいことはわかる
438デフォルトの名無しさん:2012/06/21(木) 17:33:09.84
梅雨時になると変なカエルが出てくるね
439デフォルトの名無しさん:2012/06/21(木) 18:44:31.95
質問なんですが、ARCの環境で、ヘッダで

@property (readonly) *string hoge;

と宣言して、実装で

@synthesize hoge = hoge_;

と定義して、中のコードで

NSString *fuga = ".....";
NSString *piyo = ".....";
NSString *hogera= ".....";
:
hoge_ = [fuga copy];
:
hoge_ = [piyo copy];
:
hoge_ = [hogera copy];

みたいなことをやっても大丈夫でしょうか? (つまりhoge_のメモリリークとか起きないでしょうか?)

440デフォルトの名無しさん:2012/06/21(木) 18:45:39.79
あ、ミスった。宣言部分は

@property (readonly) *NSString hoge;

です。
441デフォルトの名無しさん:2012/06/21(木) 19:48:53.13
>439,440
__bridge 使って無理矢理キャストとかしてない限り何しても大丈夫
442デフォルトの名無しさん:2012/06/21(木) 20:13:15.09
>>441
おぉ大丈夫なんですね。ありがとうございます。ARCすげー

もうひとつ疑問なんですが、

普通、viewDidUnload() で、

self.nameTextField = nil;

みたいに、不要なもの(viewDidLoadで作成したものとか)にnilを代入すると思うんですが
ARC環境下では、これも不要になるんですかね。
それとも、ARC環境下でもこういう処理は入れといた方がいいんでしょうか?

dealloc でのreleaseは不要ですよね。(というかreleaseするとコンパイルできない)
443デフォルトの名無しさん:2012/06/21(木) 20:34:50.62
>>442
いや、それは推奨
releaseの代わりにということで(推奨=strongの場合のみだったかな)
444デフォルトの名無しさん:2012/06/21(木) 20:55:51.69
>>443
あぁ、この処理は今まで同様必要なんですね。
ありがとうございました。 m(_ _)m
445デフォルトの名無しさん:2012/06/21(木) 21:06:14.83
>>442
weak なら viewDidUnload: で self.nameTextField = nil; は不要なはず。
(weak ならオブジェクトが破棄されたら自動的に nil になる。)
446デフォルトの名無しさん:2012/06/21(木) 21:17:42.19
>>445
Appleのサンプルとかみたら、IBOutletではweakが使われてますね。
weakだと自動的にnil入れてくれるんですね、なるほど。
447デフォルトの名無しさん:2012/06/23(土) 21:18:21.18
objective-c でC++ のstd::vector コンテナのような配列ってありますか?
448デフォルトの名無しさん:2012/06/23(土) 21:22:46.45
NSMutableArray もしくは std::vector
449デフォルトの名無しさん:2012/06/23(土) 21:23:51.13
あ、いや、Objective-C++ ならね < std:vector
450デフォルトの名無しさん:2012/06/26(火) 23:32:37.37
NSDictionaryのキーってNSString以外は使えないのですか?
URLをキーにしたい場合、absoluteStringをキーにする感じでしょうか?
451デフォルトの名無しさん:2012/06/26(火) 23:38:12.14
使える
452デフォルトの名無しさん:2012/06/26(火) 23:51:52.51
使える認定 キタ━(゚∀゚)━
453デフォルトの名無しさん:2012/06/26(火) 23:58:40.82
NSCopyingプロトコルに準拠していて isEqual:メソッド(とhashメソッド)がキチンと動くものなら、なんでもkeyに使える
454デフォルトの名無しさん:2012/06/27(水) 01:52:40.25
>>451-453
ありがとうございます。出来ました。
455デフォルトの名無しさん:2012/06/28(木) 17:47:10.86
@property (nonatomic,strong) NSString *name;
というプロパティを持つオブジェクトを複製しようとして
objB.name = objA.name
ってやってしまい、stringWithStringってやっとかないと
どっちか書き換えると両方書き換わっちゃうかと思いきや
別々に動いてるんだけどなんか勘違いしてるかな?
456デフォルトの名無しさん:2012/06/28(木) 18:03:13.39
objB.name にcopy属性が付いてるんじゃないの?
457デフォルトの名無しさん:2012/06/28(木) 19:11:49.26
書き換えというのをobjA.nameの元ネタがMutableで、元ネタの「内容」を書き換えようとしたのか、単にインスタンス値(?)を書き換えただけなのかが問題だな
458デフォルトの名無しさん:2012/06/28(木) 19:56:22.24
>>455
>objB.name = objA.name

これだとポインタが同値になるだけだよ。どちらも同じオブジェクト。
- copyWithZone しなきゃ。
459デフォルトの名無しさん:2012/06/28(木) 19:58:03.06
あ、プロパティか。
460デフォルトの名無しさん:2012/06/28(木) 21:06:44.77
mutableじゃないんじゃないの?
461デフォルトの名無しさん:2012/06/28(木) 21:18:32.06
NSStringのプロパティならふつーstrongじやなくてcopyにするよね
462デフォルトの名無しさん:2012/06/28(木) 21:22:25.07
うん。で、書き換わっちゃうなんて心配も全然どっかいっちゃうよね
463デフォルトの名無しさん:2012/06/28(木) 21:31:28.70
ま、オブジェクトごと複製するんならcopyWithZone使った方がいいんではないか。
464デフォルトの名無しさん:2012/06/28(木) 21:52:00.30
Zone なんてほとんど気にしないから、copy/mutableCopyしか使わないけどね
465デフォルトの名無しさん:2012/06/29(金) 01:43:37.24
modern runtimeだとzone無視されるし、ARCだとそもそも使えないしね
466デフォルトの名無しさん:2012/06/29(金) 15:33:01.49
自作プロトコルでデリゲート通知を行うとき
[delegate someMethod];
ってやらないで
performSelectorを使ってるサンプルが多いのはなぜだろう
respondsToSelectorと並べたいだけかな。

自作フレームワークの場合はそもそもrespondsToSelectorも要らないよね
467デフォルトの名無しさん:2012/06/29(金) 15:59:01.36
performSelector はdelayを使って、処理を先のフレームに遅延させたい時によく使うな。俺の場合はね。
468デフォルトの名無しさん:2012/06/29(金) 16:06:19.71
もうなんでもGCDでやろうぜ
469デフォルトの名無しさん:2012/06/29(金) 17:15:05.05
>>466
メソッドがはっきりしているんだったら、performSelector 使う意味はないよねえ
俺もそういう場合は普通にメソッド呼び出ししている
respondsToSelectorとperformSelectorで使うからと、SEL selector = @selector(...) するとARCでは怒られるのがこのごろ嫌

>respondsToSelectorも要らない
optional を使わないならいらないでしょ
470デフォルトの名無しさん:2012/06/29(金) 18:32:54.26
performSelectorと直接実行は意味的に同じではないけどね。delayを0にしたとしても。
その違いを理解していないと、なかなか使い分けられないだろうね。
471デフォルトの名無しさん:2012/06/29(金) 18:35:14.36
それだとdelay付きのことだけを言っているようだけど?
delay無しは直接実行(?)とおんなじだよ
472デフォルトの名無しさん:2012/06/29(金) 18:43:26.97
performSelector を呼んだら、セレクタを実際に実行するまで返ってこないってことね<おんなじ
delay 付きは0にしても、どっかのキューに登録するだけで直ぐに返ってきて、セレクタが実行されるのは次の実行ループだと言いたいのはわかるが、どう理解して使い分けているんだろ??
473デフォルトの名無しさん:2012/06/29(金) 18:46:28.48
おっとプロトコルの方の話か、失礼した。
474デフォルトの名無しさん:2012/06/29(金) 19:04:59.65
>>472
例えばなんかの処理中に UIActivityIndicatorView を回転させたい時に
startAnimating の直後にその処理を直接実行しても インディケータは回転しないから、
いったんcurrentRunLoopに戻すためにperformSelectorのdelayバージョンで使うとか。
あるアニメーションの中で、別のアニメーションを起動したいけど、タイミングをずらしたい時とか。
あるアニメーションの中で別のアニメーションを実行するとアラート吐くことあるからな。
ここでいうアニメーションとはImagePickerの起動とかviewの遷移アニメーションも含む。
475デフォルトの名無しさん:2012/06/29(金) 19:12:05.93
>>474
delay付きだけの話ね。それは0でも遅延だから>>467も言っていることだろうし、俺も遅延としては便利に使う
でもそもそもdelay付き(に限って)の話ではないので>>470でいきなり理解してないとというが理解できなかった
delegateでも遅延の方がいいかなあという時もあることはあるけど、さほどないし
476デフォルトの名無しさん:2012/06/29(金) 23:01:06.81
jsのsetTimeoutと同じってことでいいの?
477デフォルトの名無しさん:2012/06/29(金) 23:16:28.48
うん。同じというと語弊があるが同じw
478デフォルトの名無しさん:2012/06/29(金) 23:17:31.13
delay と timeout じゃ意味違うだろ
479デフォルトの名無しさん:2012/06/29(金) 23:42:59.24
>>478
jsのtimeoutはdelayの意味だよ。名前が悪い

デリゲート繋がりで、
.h
@property (nonatomic,weak) id<protocol> delegate
.m
@synthesize delegate;
って宣言したとき
[delegate someMethod];
ってやるとプロパティ経由になるよね?

@synthesize delegate = _delegate;
[_delegate someMethod];
ってやるほうが流儀なのかなあ。どうでもいいか
480デフォルトの名無しさん:2012/06/30(土) 00:10:46.41
[self.delegate someMethod];
ってやらないとプロパティ経由にならないんじゃねーか?
481デフォルトの名無しさん:2012/06/30(土) 01:09:08.91
>>480
あ、そうだった。長々とすまん。

この場合delegateはdelegateって名前のプロパティに対応した
プロパティと同名の自動生成されたクラス変数なんだよね
ややこしい
482デフォルトの名無しさん:2012/06/30(土) 01:14:56.17
Objective-Cにクラス変数は無いじょ
483デフォルトの名無しさん:2012/06/30(土) 01:16:40.65
>>479
元々はインスタンス変数を別に宣言しなければならず(だったはず)、それに対するsetterとgetterがプロパティ

インスタンス変数の宣言が省略可能になったので、
@synthesize delegate
は、delegate というインスタンス変数が
@synthesize delegate = _delegate;
は、_delegate というインスタンス変数が
というだけなので、>>480の言うとおり
484デフォルトの名無しさん:2012/06/30(土) 22:09:57.09
NSPredicateについて聞かせてください.
あるentityAから, 1:n対応でentityBと双方向のrelationshipがあるとき,
かつ, entityAに関連づけられたclassAのインスタンスaが既知のとき,
aとrelationshipを持つ, entityBに関連づけられたclassBのインスタンスb1, b2, ... bn全てをfetchするには,
NSPredicateじゃダメで, classBのインスタンスをどかっと全部fetchしてからプログラム上でaとrelationshipがあるものを抽出する...という形になるのでしょうか.
485デフォルトの名無しさん:2012/06/30(土) 22:20:33.24
いいえ
486デフォルトの名無しさん:2012/06/30(土) 23:03:12.64
>>485
ありがとうございます。
[@"self in %@", a.bs]
で調べられるんですね・・・、
%@ですから文字列比較しかできないものかと
487デフォルトの名無しさん:2012/06/30(土) 23:05:22.85
488デフォルトの名無しさん:2012/06/30(土) 23:22:31.45
>>487
エッ――!
%@ってNSString以外にも使えたんですか・・・
確かに配列とかURLとかに使われていることがあったのですが
てっきり自動でdescriptionを呼び出しているだけかと・・・
489デフォルトの名無しさん:2012/06/30(土) 23:30:01.16
description はNSStringじゃなくて、NSObjectプロトコルの必須メソッドな。
だからNSObjectに適応したオブジェクトは全て%@で出力対象となる。
490デフォルトの名無しさん:2012/06/30(土) 23:41:13.75
>>489
えぇ、それはわかるのですが
ですから@"self ub %@", a.bs
なんてのはa.bs.description(←この時点でNSStringになってしまう)のなかにselfがありますか、
ということだと思って
a.bs(←NSArray)の中からself(evaluatedObject)を探してくるなんて芸当をやるとは思いませんでした
491デフォルトの名無しさん:2012/06/30(土) 23:48:22.73
> [@"self in %@", a.bs]
これって何してるの?
492デフォルトの名無しさん:2012/07/01(日) 00:06:31.65
>>490
predicate formatはstring formatの書式を流用してるけどやってる事は別
見るべきは
https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html
これ
493デフォルトの名無しさん:2012/07/01(日) 00:09:54.40
ありがとうございます。読んでみます。
相互参照で、entityBからentityAはn:1対応なのでもっと簡単に調べる書き方がありました。
@"a == %@", a
こっちの方が配列から探さず調べられるので多分速い?かも知れません
494デフォルトの名無しさん:2012/07/01(日) 00:20:04.31
>>484
CoreDataな話なんだよね?
インスタンスaに、インスタンスbへのrelationshipを表すNSSet型のプロパティbsがあるはずだよね?
495デフォルトの名無しさん:2012/07/01(日) 13:07:35.34
>>493
それについても、
インスタンスbに、インスタンスaへのrelationshipを表すClassA型のプロパティaがあるはずだよね?

NSPredicateを使って検索する必要ないんじゃ?
496デフォルトの名無しさん:2012/07/01(日) 13:40:26.35
日本が生み出した発明品というと何を思い浮かべますか?
暮らしに密着する「乾電池」から日々の生活をちょっと楽しくしてくれる「カラオケ」まで
日本で誕生した発明品はありとあらゆる場面で使われています。
ネットユーザーは、「日本が発明した生活の中の発明品」を紹介し、日本の発明力はすごいと書き込みました。

日本が発明した生活の中の発明品
・プラスチック消しゴム:1964年に株式会社シードが発明。
・「折る刃」式カッターナイフ:1959年に岡田良男が発明。
・カラオケ:1971年に井上大佑が発明。
・VHS:1976年にビクターが開発。
・自動改札機:1967年に立石電機(現・オムロン)が開発。
・腕時計:1969年にセイコーが開発。
・インスタントラーメン:1958年に日清食品が開発。
・インスタントコーヒー:・電気炊飯器:1955年に三並義忠が発明。
・ウォークマン:1979年にソニーが開発。
・CD:ソニーが開発。
・乾電池:1887年に屋井先蔵が発明。
・使い捨てカメラ:1986年に富士フィルムが発売。
・エアバッグ:1963年に小堀保三郎が発明。
<コメント>
・本当にすごい。
・腕時計は本当に日本?
・素晴らしい製品をたくさん作っていますね。ありがとう。よく使ってます。
・うん、確かに日本が発明したもののようだ。
・日本は100年前から先進国だし。
・CDはソニーとフィリップスが共同で開発したものです。
・インスタントラーメン発明記念館に行ったことある。
・日本の青年がハイブリッドカーのタイヤに付ける音発生装置を作ったそうだ。日本ってこういった人が時々登場すると思う。
http://koko-hen.jp/archives/3327497.html
497デフォルトの名無しさん:2012/07/01(日) 13:58:45.47
昔の日本人ってすごかったんだね。どうしてこうなったんだろ。
498デフォルトの名無しさん:2012/07/01(日) 14:10:03.54
腕時計じゃなくてクォーツ式腕時計だろ
499デフォルトの名無しさん:2012/07/01(日) 14:23:51.38
だよな。腕時計で高級品は(機械式のすごいのも)日本のじゃないしな

>>497
お前らの認識がその程度なんだから、そうなったんじゃないの
スレチに反応するのも含めて、お前らはいろいろ頑張れ
500デフォルトの名無しさん:2012/07/01(日) 14:36:17.18
日本がこうなったのは秋元のせい
501デフォルトの名無しさん:2012/07/01(日) 14:39:21.66
フロッピーを忘れちゃいけない!
502デフォルトの名無しさん:2012/07/01(日) 14:41:26.32
それを話の流れで言うならフレキシブルディスクだろ
503デフォルトの名無しさん:2012/07/01(日) 14:59:54.62
>・日本の青年がハイブリッドカーのタイヤに付ける音発生装置を作ったそうだ。日本ってこういった人が時々登場すると思う。

Rubyの14歳子みったーを思い出した
504デフォルトの名無しさん:2012/07/01(日) 15:43:52.32
>>494-495
ありがとうございます。もちろん最初に書いたとおり、
全部オブジェクトとしてとってきてから、b.a(bからaへの対1参照)なり、a.bs(aからbへの対多参照)なりのプロパティで比較すれば出来るのですが、
コードをシンプルにするのとパフォーマンスを改善するためにNSPredicateで条件指定出来ればいいなと思いまして・・・
505デフォルトの名無しさん:2012/07/01(日) 23:29:14.28
>>504
> 全部オブジェクトとしてとってきてから、b.a(bからaへの対1参照)なり、a.bs(aからbへの対多参照)なりのプロパティで比較すれば出来るのですが、

ん??
要するに、EntityAに1:NでrelationshipしているEntityBを全て取得したい、ということなんだよね?

ClassA* a = fetchObject();
NSSet* bs = [a valueForKey:@"relationshipB"];

これで変数bsの中に、EntityAに1:NでrelationshipしているEntityBが全て入っていると思うのですが。
506デフォルトの名無しさん:2012/07/02(月) 00:34:46.35
>>505
あ。その手は思いつかなかったです・・・。
中身はRDBMSだという固定観念に縛られておりました。
つい、いちいちフェッチしないといけないものかと
チュートリアルにも必ずしもフェッチしなくてもよい場合があると書いてありました
条件を加えて検索しなおすとかでなければ、オブジェクトのまま関係を辿れるんですね
ここで、もう一つ疑問が出てきたのですがあるオブジェクトと1:nで大量のオブジェクトが結ばれているとき、
このオブジェクトをとってきても、すぐに大量のオブジェクトがフェッチされる訳ではないようですが
だからといってツリー状にどんどん繋げてしまうと、何かの拍子で一気に大量のオブジェクトがメモリにロードされて落ちるんじゃないかという懸念があるのですが
あまり気にしなくても上手く管理してくれるんでしょうか
それとも、大量のオブジェクトへの参照があるところでリレーションを切って、キーを設定して、キーを元に明示的にフェッチするようにすべきなんでしょうか
507デフォルトの名無しさん:2012/07/02(月) 19:11:40.27
>>506
ごく普通にオブジェクトを操作するだけで、背景で自動的にRDBMSが動いてくれるのがORMだと思います。
レコードをフェッチするという概念がオブジェクト側にないので、大量のオブジェクトのロードは基本的に制御しきれないと思います。
また、「大量のオブジェクトへの参照があるところでリレーションを切って」などとやると、ORMのメリットを失うような気がします。

実際に試して見て、「オブジェクトの大量ロード」がパフォーマンスに影響を与えないなら、気にしないのが一番ですし、
パフォーマンスに影響するなら、SQLiteのAPIを直接操作した方が良いと思います。
508デフォルトの名無しさん:2012/07/03(火) 00:13:24.72
GNUstepでObjective-Cを始めようと思ってます。
509デフォルトの名無しさん:2012/07/03(火) 00:28:24.39
GNUStepってObjectiveーC2.0にも届いてないだろ
覚えても使い道もないわAppleのとはソース互換もないわではっきし言うと無駄だと思うぞ
510デフォルトの名無しさん:2012/07/03(火) 00:37:38.66
Mac買わなくてもObjective-Cはできる。Objective-Cの絶妙なゆるゆるさが堪能できる
から、いいんじゃないの。MacでGNUstepやるのはなんの意味もないと思うけど
511デフォルトの名無しさん:2012/07/03(火) 01:06:10.88
>>507
ありがとうございます。
とりあえず全部relationで繋げてみて、パフォーマンスがイマイチだったら対策を考えようと思います
すみません、もう一点聞きたいのですが
entityAと, entityBと, entityCがあり, entityCから, entityAとentityBに対多関係があります.
このとき, entityCの属性、targetによって, targetCの対象を切り替えるとき,target
C_TARGETS_A_SELECTED:ユーザーが選んだentityAのオブジェクト全て
C_TARGETS_A_ALL:entityAのオブジェクト全て
C_TARGETS_B_SELECTED:ユーザーが選んだentityBのオブジェクト全て
C_TARGETS_B_ALL:entityBのオブジェクト全て
としたいのですが、スマートなやり方が思いつきません
まずAをターゲットとするものとBをターゲットとするものでentity自体を分けたほうがいいのでしょうか
また、一番の問題がSELECTEDとALLなんですが、AやBのオブジェクトを新規作成したときとき、自動で(ALLに設定されている)Cに関連づけるのは無理ですよね?
となると、AやBからCを辿るのはやめて、対象がALLのものと、SELECTEDになっているもののうち対象のAやBを参照しているCを探す・・・という感じになるのでしょうか
AやBの増加に伴って、ALLになっているC全てにrelationが反映される保証が出来れば、AやBから自身を対象としているCを探すことが出来て便利なのですが。
プログラミング的には、AやBを増やしたときにちゃんとALLのCにつなげればいいのですが、
ビューコントローラから直接managedObjectContextにアクセスするやり方だとミスが起きやすい気がします
managedObjectContextをビューコントローラから隠蔽して、AやBの追加、そしてそのときCとのrelationを上手く調整するコントローラを作るべきなんでしょうか
512デフォルトの名無しさん:2012/07/03(火) 02:56:55.09
>>509
大抵の機能は使えるはずだが。
513デフォルトの名無しさん:2012/07/03(火) 18:46:30.40
>>511
うーん。。。なにやら変な方向に話が進んでいるような気が(^^;

CoreDataはデータストレージなので、基本的にデータを出し入れすることしかできません。
CoreDataそのものでロジックを組む事はできないよ。

で、その問題をどう解決すればいいのかは、もっと詳細が分からないとなんとも言えない、
けど、たぶん、根本的なところから設計を見直すはめになるんじゃないかと。
514デフォルトの名無しさん:2012/07/06(金) 19:59:58.73
CoreDataって、MySQLのラッパーだっけ?
515デフォルトの名無しさん:2012/07/06(金) 20:13:22.07
SQLiteじゃなかったか
516デフォルトの名無しさん:2012/07/06(金) 20:13:43.88
>>514
リレーショナルなオブジェクトを永続化してリレーショナルに利用できる何か
バックエンドはあんまり関係ない
517デフォルトの名無しさん:2012/07/06(金) 21:34:02.42
>>513
ありがとうございます。うーんなかなか難しいですね
やっぱりCore Dataじゃないほうが取り回し良さそうなのでCore Dataやめようかと思うんですが
一気に全データ同期がかからないよう細分化してしたら10個ぐらい
UIDocumentのサブクラスが出来てしまったんですが、こんなに増やすとリジェクトされるでしょうか
原則的には1アプリ1ドキュメントですよね・……
518デフォルトの名無しさん:2012/07/06(金) 21:49:17.46
CoreDataをRDBと思って使うと死ぬ
つか、RDBの様には使えない
RDBを使いたいなら素直にRDBを使った方がいい
519デフォルトの名無しさん:2012/07/06(金) 22:15:23.65
SQLiteだね
特に、NSInMemoryStoreTypeなんかは、SQLite固有の機能なんじゃないか?
520デフォルトの名無しさん:2012/07/06(金) 22:20:39.57
>>517
> 一気に全データ同期がかからないよう細分化してしたら10個ぐらい
> UIDocumentのサブクラスが出来てしまったんですが

待て、それはそれで何かがおかしいぞ(^^;
521デフォルトの名無しさん:2012/07/06(金) 22:46:38.74
>>520
ありがとうございます。うーんやっぱりおかしいですかね。
機能毎にリストやら下書きやらが必要になるんですが、
各々の機能ごとに同期すれば
タイムスタンプが変わっているリスト・下書きだけ同期すればいいので早いかな、と思ったんですが
それで細分化したらUIDocumentのサブクラスが10個に・・・
522デフォルトの名無しさん:2012/07/06(金) 23:01:41.94
うーん。。。なんか、他の所でも、
「CoreDataを使えばコードを書かずに済ませることができる」
とか思っている初心者がいるようなのだが、
これって、ヒガレス本の影響なのだろうか?
話を聞くと、みんなヒガレス本を読んでいるっぽいのだが。
523デフォルトの名無しさん:2012/07/06(金) 23:24:08.06
>>522
いや、読んでないです。コードを削減することが目的ではなく、
結構複雑なオブジェクトグラフを、出来る限り待ち時間を少なくして同期したいのですが
Core Dataは差分書き出しが出来るようなのでいいかなと思ったのですが、オブジェクトに任意の順番をつけるときにエンティティにindexをもたせたりとかややこしいなと思って
各機能間はIDを使って結合できるので、できるだけ切り離して一つの機能ごとにファイルにして同期した方がいいかなと思ったのですが
で、モデルコントローラで各ドキュメントを全自動で同期・読み込み・書き込み制御して、適切なオブジェクトグラフを提供するようにしたいのです
それともこのモデルコントローラをUIDocumentのサブクラスにして、各ファイルをフォルダに突っ込んでNSFileWrapperで提供すべきなんでしょうか
524デフォルトの名無しさん:2012/07/06(金) 23:30:28.67
CoreDataってWebObjecsのベースになってたEOFと同じようなものだと思っていいんでしょうか?
525デフォルトの名無しさん:2012/07/06(金) 23:55:40.40
526デフォルトの名無しさん:2012/07/07(土) 00:40:02.59
>>523
> 結構複雑なオブジェクトグラフを、出来る限り待ち時間を少なくして同期したいのですが
CoreDataを利用する目的は、パフォーマンス(処理速度)ということですか?

> オブジェクトに任意の順番をつけるときにエンティティにindexをもたせたりとかややこしいなと思って
「任意の順番を付ける」ということならIndexのようなものを持たせるしか方法がないのでは?
どのみち、並べ替えのKeyとなるものが必要になりますよ?

> このモデルコントローラをUIDocumentのサブクラスにして、各ファイルをフォルダに突っ込んでNSFileWrapperで提供すべきなんでしょうか
CoreDataには、「一つのオブジェクトをルートにしてツリー構造を作らなければならない」
などという制約はないので、その辺はどうにでもなると思います。

> 各機能間はIDを使って結合できるので、できるだけ切り離して一つの機能ごとにファイルにして同期した方がいいかなと思ったのですが
・各機能のデータを結合する
・機能ごとにデータを切り離す
という2つの話が混ざっているように見えますが、いったい何がしたいの?

あと「同期」という言葉が出て来ますが、これって具体的には何と何を同期するの?
527デフォルトの名無しさん:2012/07/07(土) 01:55:43.23
>>526
ありがとうございます。
>CoreDataを利用する目的は、パフォーマンス(処理速度)ということですか?
パフォーマンス、というと語弊があるかも知れません。
巨大なオブジェクト群を、いかに無駄なく(同期時に全てをアップロード/ダウンロードすることなく、必要な物だけ)アップロード出来るかということです。
オブジェクト群全てにNSCodingをつけ、ルートオブジェクトからアーカイブすれば同期はできますが、
アップロードする必要のない(既に同じものがアップロードされている)オブジェクトグラフの一部分も含めて全てアップロードすることになってしまい、無駄に通信量が増える上に、同期の待ち時間がかかりユーザーの操作にも影響します。

>「任意の順番を付ける」ということならIndexのようなものを持たせるしか方法がないのでは?
いや、NSCodingでルートから格納していくなら、NSArrayがインデックスを持つため、格納するオブジェクト自体にはインデックスをつける必要がありません。
Core Dataの場合、Entityにindexのアトリビュートが必要になります。さらに、そのindexが他のentityに依存する場合、そのentityに関連付けてindexを持たせるために、参照元に対する参照先のindexを保持するためのentityを作らなければなりません。

>CoreDataには、「一つのオブジェクトをルートにしてツリー構造を作らなければならない」などという制約はないので、その辺はどうにでもなると思います。
いや、NSFileWrapper云々の話は、Core Dataではなく自作クラスでオブジェクトのシリアライズ・デシリアライズを管理する場合の話です。

>いったい何がしたいの?
オブジェクトとして使うときは、ファイルを読み込んでオブジェクト化し、関連あるオブジェクトとの参照関係をつくらなければなりませんが、その参照関係はコードで復元出来るので、
ファイルとしては別々に保存できるため、ファイルとしては別々にして各々同期するようにしたいということです。

>あと「同期」という言葉が出て来ますが、これって具体的には何と何を同期するの?
もちろん、ローカルとiCloud(Ubiquitous Storage)です。
528デフォルトの名無しさん:2012/07/07(土) 09:16:46.29
ヒガレスw
529デフォルトの名無しさん:2012/07/07(土) 11:12:29.09
530デフォルトの名無しさん:2012/07/07(土) 13:08:12.38
>>525
ありがとう
昔の(NeXTの頃の)EOFとはほとんど同じだけど微妙に違うのね
531デフォルトの名無しさん:2012/07/07(土) 13:43:58.10
>>527
> もちろん、ローカルとiCloud(Ubiquitous Storage)です。

もちろんって言われても(^^;
iCloudストレージの話だということは、今初めて知ったよ。

それで、インターネットとのデータ通信量が最小限になるように最適化したいということか。。。
でもそれだと、もはやCoreDataとは別次元の話になってくるような気がするが。

ICloudストレージを使う場合、各デバイス間で同じ書類を編集したときに発生する「バージョン競合」の問題があるが、
これは今回はどのように解決するつもりなの?
532デフォルトの名無しさん:2012/07/07(土) 13:51:44.69
すみません、NSNotificationCenterにポストするNSNotificationについての質問なんですが、
別スレッドで非同期で実行されるブロックの中からポストされたノティフィケーションって、
オブザーバ側には、オブザーバのスレッドで通知されるんでしょうか。それとも、ポストした側
のスレッドの中で通知(ポストした側のスレッドでオブザーバのメソッドが実行)されるんでしょうか? 
533デフォルトの名無しさん:2012/07/07(土) 14:01:22.95
ポスト側のスレッド




オブザーバ側のスレッドって何?
534デフォルトの名無しさん:2012/07/07(土) 14:55:01.39
>>533 何というと? それぞれ別スレッドということです。
ネットワークからのダウンロード処理等の時間のかかる処理を別スレッドでバックグラウンドで
動かして、処理が終わったら、NSNotificationをポストしてメインスレッド側に通知させようと
考えています。 通知する側と、通知される側(オブザーバ)がそれぞれ別スレッドで動いて
いるということです。
535デフォルトの名無しさん:2012/07/07(土) 15:01:36.28
オブザーバがスレッドに紐付けされてる(あるいは逆)わけじゃないんだから
NSNotificationCenterはどうやってオブザーバのスレッドとやらを調べるの?
536デフォルトの名無しさん:2012/07/07(土) 15:08:07.63
いや、そこまで詳しくないのでわからないです。
addObserverする時とかでしょうか?
537デフォルトの名無しさん:2012/07/07(土) 15:19:42.70
AppleのNSNotificationCenterの説明に書いてありました。
Postした側のスレッドで動くみたいですね。 失礼しました。
538デフォルトの名無しさん:2012/07/07(土) 23:40:55.23
本が一冊書ける
539デフォルトの名無しさん:2012/07/08(日) 04:51:34.82
>>531
ありがとうございます。
版の解決は、タイムスタンプで古い方を破棄あるいはマージする予定です。
あるリストについては全体として整合がとれてないといけないのでタイムスタンプベースで上書き、
あるリストについては各項目が他の項目に非依存なのでマージ、という感じです。
なので全体としてファイルラッパでひとつのUIDocumentを構成するか、
各リストでひとつのドキュメントにするべきか迷うところなんですが、、、
ちなみに、アプリケーション1つに対し1種類しか生成されないシングルトン的なリストというのもあるんですが
そういう場合はファイル名をひとつしか作らないようにして、
あらかじめバンドル内に古いタイムスタンプのドキュメントを用意しておいてコピー→同期ですかね・・・
初回起動時に新規作成すると、その日付が最新になっちゃうので同期したときに別のデバイスで編集した結果が消えてしまいますよね
540デフォルトの名無しさん:2012/07/08(日) 14:11:35.47
>>539

iCloudストレージでは、バージョン管理されたファイル単位で同期されるので、
ネットワークとの通信量を少なくしようと思ったら、物理的に小さなファイルを作るしかありません。
一つの大きなファイルをどうやって小分けにするのか、ということと、
小分けにしたそれぞれのファイルのバージョン競合をどうやって解決するのかは、両方同時に検討しなければならないでしょう。

> 全体としてファイルラッパでひとつのUIDocumentを構成するか

ファイルラッパーを使うのはいいけど、ファイルパッラー単位でバージョン管理してもダメですよね?
ファイルラッパーの中のファイルを個別にバージョン管理しないと。
そういゆ意味では、一つにUIDocumentが複数のバージョン付きファイルを取り扱う形になりますが、
UIDocumentのデフォルトの動作では、一つのバージョンしか取り扱えないんじゃなかったっけ?

> あらかじめバンドル内に古いタイムスタンプのドキュメントを用意しておいてコピー→同期ですかね・・・
> 初回起動時に新規作成すると、その日付が最新になっちゃうので同期したときに別のデバイスで編集した結果が消えてしまいますよね

そこがバージョン競合の難しいところですね。
ようするに、タイムスタンプだけでは競合を解決できないということですね。
別の方法を考えましょう。たとえばマージするとか。
541デフォルトの名無しさん:2012/07/09(月) 14:17:04.61
Xcodeを使ってC言語を勉強したいんですけど、どうすればいいですか?
ちなみに独習C第4版を勉強中です
542デフォルトの名無しさん:2012/07/09(月) 14:53:54.79
>>541
そのまんま"xcode c"で検索したら山ほど情報があると思うよ
543デフォルトの名無しさん:2012/07/09(月) 15:20:44.10
ここObjective-Cのスレだから
544デフォルトの名無しさん:2012/07/10(火) 21:59:12.07
なるほど、あなたの言うことにも一理ありますね。
545デフォルトの名無しさん:2012/07/10(火) 21:59:16.95
Objecive-Cはクラスの中身はCというか
オブジェクト間の通信をメッセージという概念でやってるだけなんで
たとえばインターフェイスビルダーで作ったUIから
数字を入力したアクションが飛んできたら
受け取ったあとのクラスの中身の処理はそのまんまCで書くだけだし。

俺も大学でC齧ったあとだいぶ間が空いてiOSでなんかやるかーと
趣味で復帰したんで、たしかにObj-C関係の入門や解説が
Cをどっか別のとこでやった人にObj-Cを解説する感じのばっかりな現状なのは
もうすこしなんとかならんのかなとは思う。
546デフォルトの名無しさん:2012/07/10(火) 22:21:47.05
C自体の解説や入門は別に山ほどあるんだから、それは他所に譲るのは妥当。
547デフォルトの名無しさん:2012/07/11(水) 00:35:47.36
LabelとTextFieldがあって、ボタンが押されたら
LabelにTextFieldの数値を加算するメソッドで
これをただ足すのではなく、数字がどんどん増えるようにしたいんだけど、
一気に増えちゃうのよね。どうすれば良い?

以下ソース
- (IBAction)addScore:(id)sender {
[self.view endEditing: YES];
NSInteger i;
NSInteger j;
i = [scoreText.text intValue];
j = [addScoreText.text intValue];
addScoreText.text = [NSString stringWithFormat:@""];
for (NSInteger l = 0; l <= j; l++) {
scoreText.text = [NSString stringWithFormat:@"%d",i + l];
}
}
548デフォルトの名無しさん:2012/07/11(水) 07:16:20.87
>>547
NSTimer とか
そのメソッド内で NSRunLoop を回すとか
549デフォルトの名無しさん:2012/07/11(水) 09:03:28.65
>>546
MSのC#とかも「Cと違うところだけ列挙するから、
まずどっかでCを学習してきなよ」ってスタンスなのかね
550デフォルトの名無しさん:2012/07/11(水) 09:21:39.24
>>547
値を変えるblockを作りcompletionハンドラで次の値に変えるblockを再起的に呼び出すようにblockを呼び出す。
551デフォルトの名無しさん:2012/07/11(水) 09:30:49.90
>>547
そのようなLabelのサブクラスを作る方がわかりやすいと思う
552デフォルトの名無しさん:2012/07/11(水) 09:57:04.22
>>547
for (NSInteger l = 0; l <= j; l++) {
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]];
scoreText.text = [NSString stringWithFormat:@"%d",i + l];
}
だけでいいんだけど、回っている最中にボタンを押されるとリエントリーされるので、ちょっと工夫(インスタンス変数を持たねばならないとか)が必要
まあ、それ用のインスタンス変数を持たねばならないんだったらクラス分けたほうがいいよな
553デフォルトの名無しさん:2012/07/11(水) 10:22:05.82
NSTimer で良いだろ。
554デフォルトの名無しさん:2012/07/11(水) 10:26:12.26
NSTimer な間隔な繰り返しならねえ。考えたらもっと頻繁かなあと思った
555デフォルトの名無しさん:2012/07/11(水) 11:05:29.42
これでどうじゃろ
@implementation UILabel (Animation)
- (void)animateFromCount:(NSInteger)firstCount toCount:(NSInteger)lastCount {
__block void (^block)(NSInteger, NSInteger) = ^(NSInteger currentCount, NSInteger lastCount){
[UIView animateWithDuration:0.001 animations:^{
[self setText:[NSString stringWithFormat:@"%d", currentCount]];
} completion:^(BOOL completion){
if (completion) {
if (currentCount < lastCount) {
block(currentCount+1, lastCount);
} else if (currentCount > lastCount) {
block(currentCount-1, lastCount);
}
}
}];
};
block(firstCount, lastCount);
}
@end
556デフォルトの名無しさん:2012/07/11(水) 11:11:06.92
あ、アニメーションブロックに突っ込む意味なかったわ。
557547:2012/07/11(水) 14:25:30.71
みんな。回答ありがとう!
まだ家に戻ってないので試してないんだけど質問です。

質問前は、forでループする前に画面更新の命令を1行追加する程度のイメージだったんだけど、実際のみんなの回答は結構複雑?でビックリ!

どんな仕様でクラスやらNSTimerやら追加しなくてはならないのか教えてくれると助かる。
他の言語からの移住民なのでここがクリア出来れば、objective-cと仲良くなれそうな気がしてるw
558デフォルトの名無しさん:2012/07/11(水) 15:07:49.78
>>549
C#はそもそも名ばかりのCなんで関係ありません
559デフォルトの名無しさん:2012/07/11(水) 16:01:53.99
>>557
-addNumberをボタンから呼ぶ。

- (void)addNumber
{
int a = [label.text intValue];
int b = [field.text intValue];
targetValue = a+b; //メンバ

timer= [NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(updateLabel)
userInfo:nil
repeats:YES];
}

- (void)updateLabel {
int value = [label.text intValue] + 1;

if (value <= targetValue) {
label.text = [NSString stringWithFormat:@"%d",value];
} else {
[timer invalidate];
}
}
560デフォルトの名無しさん:2012/07/11(水) 16:04:27.99
>>557
Viewの更新(描画)を行うタイミング、及び、GPUのVRAMに書き込むタイミングのためという理由から
いまどきのどのOSでも似たようなもんだと思うけど
561デフォルトの名無しさん:2012/07/11(水) 16:12:50.42
>>557
例えば、
scoreText.text = [NSString stringWithFormat:@"%d",i + l];
は、インスタンス変数 text を変えるだけで、描画はされない。フラグを立てるだけ
そのフラグをチェックして scoreText に描画させるのは NSRunLoop のどっかでの処理(だと思う)

クラスやらNSTimerはそうしたほうが、プログラミングとして綺麗というのだけといえばだけ
562デフォルトの名無しさん:2012/07/11(水) 16:19:38.85
[label countUpAnimationForNumber:number]みたいなAPIがあると思ってたんだろ
おそらくこいつはObjCとは仲良くなれない
563デフォルトの名無しさん:2012/07/11(水) 16:23:06.55
NSTimer とかググればすぐに使い方分かるようなモンを一々人に訊いてるんだから、コイツはもう駄目だ。
564デフォルトの名無しさん:2012/07/11(水) 16:25:21.27
>>562
ObjCなんて馴れ馴れしく呼ぶのもどうかと思うがなw
コードの命令ですぐにスクリーンに反映という、前近代的なものを想定しているんじゃないかと
565デフォルトの名無しさん:2012/07/11(水) 16:28:53.73
馴れ馴れしいの意味がよくわからん。つかこのスレタイ馴れ馴れしかったのか。
566デフォルトの名無しさん:2012/07/11(水) 16:32:06.65
>>565
マジにとるなよ
どうしてもおれはそれは「おぶじぇしー」と読んでしまうってだけだよ
567デフォルトの名無しさん:2012/07/11(水) 16:34:51.74
いや、カウントアップをアニメーションさせたいのに、
一気に計算が終わってしまうからどうしようって事だろ、単純に。
568デフォルトの名無しさん:2012/07/11(水) 16:35:17.89
あ、俺は尊敬を込めて Objective-C と呼ぶ。そういうので馴れ馴れしいなという
あくまでも冗談の範囲でのことだからな
569デフォルトの名無しさん:2012/07/11(水) 16:35:50.12
俺も「オブジェシー」って呼ぶが?
おいジェシーって呼んでるように聞こえて
ジェシーおいたんを呼び捨てにするとは何事だって憤ってるのか?
そんなダニエルはタナー家にお帰りください
570デフォルトの名無しさん:2012/07/11(水) 16:37:07.60
>>567
>forでループする前に画面更新の命令を1行追加する程度
らしいよ。usleepかましても画面更新されないよ
ぐちゃぐちゃだな
571デフォルトの名無しさん:2012/07/11(水) 16:38:05.12
>>569
>憤ってる
何言っているの?強いて言うな違和感があるってだけだぞ。強いて言えばな。あほかw
572デフォルトの名無しさん:2012/07/11(水) 16:43:01.36
ゴタゴタしてきたなw

やっぱりLabelのサブクラスでやった方がいいよ
複数のラベルに同じ動作をさせたいとか、
複数のビューコントローラの管理下で制御したいとかで
ドンドン奇怪なコードが生成されていくのが目に見えてるんだけど
573デフォルトの名無しさん:2012/07/11(水) 16:46:30.00
うーん突っ込むところが全部ズレてるやつがいて面白くないな
これがアスペか
574デフォルトの名無しさん:2012/07/11(水) 16:47:22.19
>>572
究極(?)にはそれだね
プログレスバーみたいなもんといえばみたいなもんだしね
575デフォルトの名無しさん:2012/07/11(水) 20:54:11.44
インスタンス変数って
{}の中に宣言しないようになったのか。
サンプルコードとかみたらプロパティ宣言になってた。

それで気になったんだけど、クラス外からアクセスしないような変数もプロパティで宣言するのが今の動向なのだろうか?
576デフォルトの名無しさん:2012/07/11(水) 21:54:40.11
クラスエクステンションという無名カテゴリが出来ました

@interface Hoge()
{
// ここで
}
//プロパティ宣言も書ける
@end

実装ファイルに書きます。
実装ファイル内なので、他から参照されません。
ObjCは柔軟すぎるので完全には隠せませんが。
577デフォルトの名無しさん:2012/07/11(水) 22:09:11.96
@implementation にも書けるようになったよ
578デフォルトの名無しさん:2012/07/11(水) 22:15:27.55
>>576
ありがとうございます

外部に公開しないものはヘッダに書かないほうがすっきりするな
579デフォルトの名無しさん:2012/07/11(水) 22:20:15.81
連投で申し訳ない。

objective-cの規則(メソッドの命名規則とか、プロパティとそのインスタンス変数の名前は別のものにするのが良いとか)をまとめたサイトとかないのですかね。
580デフォルトの名無しさん:2012/07/11(水) 22:32:47.79
Appleのデベロッパサイトにある。
あとGoogleのやつも参考にしてる。
でも最終的には俺ルールで書いてる。
581デフォルトの名無しさん:2012/07/12(木) 00:13:15.85
>>577
俺もそっちに書いているな
582デフォルトの名無しさん:2012/07/12(木) 00:19:29.95
ただヘッダーに書かないとサブクラスから使えないんだよね。
583デフォルトの名無しさん:2012/07/12(木) 00:30:27.67
だってそういうものだものお。言うなれば private と public しかいらんだろうという
インスタンス変数をサブクラスでも直で使いたいなら、昔どおりの記法でいいんじゃないの
プロパティ(setter)なら、同じようにproperty宣言とdynamic宣言すりゃ使えるでしょ。いちいち書くの面倒だったらプロテクテッドヘッダにでも。でもなんかそりゃ違うだろうという
584デフォルトの名無しさん:2012/07/12(木) 08:07:45.53
フレームワークとしてコンパイルする時に使わせるヘッダーを別にするとかで対応は出来るんじゃね
585デフォルトの名無しさん:2012/07/12(木) 12:43:09.89
アクセス修飾子(アクセス修飾子)を使ってる人ってあんまりいないのかな。
そういえばサンプルでもあまりみないね。何でだろ? 
C++で書くときは割と厳密にそこらへん決めるのに。
586デフォルトの名無しさん:2012/07/12(木) 12:44:09.79
間違った。 アクセス修飾子(@public、@protected、@private)ね。
587デフォルトの名無しさん:2012/07/12(木) 12:49:59.40
@public とかキモくて
588デフォルトの名無しさん:2012/07/12(木) 13:15:29.90
もともとその辺ルーズだし、最近は見える必要がないものは
実装ファイル側に書けるからもはやあんまり必要ないかも。
出来ればC++でもprivateメンバとかヘッダ側に書きたくない。
589デフォルトの名無しさん:2012/07/12(木) 13:30:59.27
Java 「…
590デフォルトの名無しさん:2012/07/12(木) 14:59:49.01
>>587
マクロ使えよ。
#define ZESSAN_KOKAICHUU @public
とか
591デフォルトの名無しさん:2012/07/12(木) 22:56:15.36
>>587
いまさらそれだけがキモいというのがわからんな
@optional
@required
はどうなの?publicがキモいのはわかるが、とかだからなあ
592デフォルトの名無しさん:2012/07/12(木) 23:18:33.59
引数でポインタ渡すより@publicの方がお手軽ってのはあるな。
アクセサメソッドを経由したくない場合は。
593デフォルトの名無しさん:2012/07/12(木) 23:29:05.76
>>591
> @optional
> @required

は使い場所が @ public とは全然違うだろ。無いよりはあった方が良い機能としか思わんな。
594デフォルトの名無しさん:2012/07/13(金) 00:14:14.52
>>593
意味わからんw
無いよりはあった方が良いとかじゃなくて、キモいって言っているんだぞ?
キモいけど、無いよりはあった方が良いってのだったら、そんなこと聞いていない
595デフォルトの名無しさん:2012/07/13(金) 00:16:51.43
>>593
ちなみに
強いて言えば無いよりはあった方が良いのは @public、@protected、@private な
@optional (@required) な無かったら困る機能だからな
よーく考えような。いろいろとw
596デフォルトの名無しさん:2012/07/13(金) 00:21:36.93
いやお前の価値観なんて知らんよ。
597デフォルトの名無しさん:2012/07/13(金) 00:54:12.74
たかが言語の修飾子をキモいって感性がわからん。
好きとか嫌いとかならまだ分かるがキモいって..
キモいって言葉使っちゃう俺ってオシャレ? ってことなの?
598デフォルトの名無しさん:2012/07/13(金) 01:11:52.44
>>596
俺の価値観?
今のDelegateは@optionalに依存しているんだけど、知らないんだったらしょうがないなあ
599デフォルトの名無しさん:2012/07/13(金) 01:16:38.38
>>597
まあ、そういうもんだろ。人とは違う俺オシャレというw
600デフォルトの名無しさん:2012/07/13(金) 01:17:26.26
@Optionalって2.0(Leopard)からだよな。
それまではなくてもなんとかなったってことか。

プロパティ構文が導入されてドット表記と
[]のメッセージ送信が入り乱れるのが見た目的にあれかな
メッセージ送信のみで書いた方が揃うかなー

だったら代入もメッセージ送信にしたほうがLispみたいで揃うかな
601デフォルトの名無しさん:2012/07/13(金) 01:19:34.17
>>600
以前はDelegateメソッドはカテゴリで宣言していた。受け側は単なる id
明確化のためにプロトコルに変えたんじゃないのかな。@optionalはDelegateのためにってこでも言い過ぎではないかな
602デフォルトの名無しさん:2012/07/13(金) 04:29:31.61
obj-c最近勉強してみた感想
長い。
603デフォルトの名無しさん:2012/07/13(金) 10:47:00.64
>>602
Cなのに80文字に収まらないのが気持ち悪い
NSとCFで一番長いメソッド名ってなんだろ

識者に聞きたいんだけど
#importって.hと.mのどっちに書いた方がいいのかな?
使うやつ全部.hに書いて.mは.hのみimportっていうやり方なんだけど
あくまでそのファイルで必要なだけのやつのほうがいいかな
.hならプロトコルとか。あと@classを使って最小にするとか
604デフォルトの名無しさん:2012/07/13(金) 12:04:07.04
ライブラリ系のヘッダは.hでインクルードしていいと思うけど、自作のヘッダは
必要なら .hには@classで名前解決だけして、実際のインポートは.m でやる
のがオサレだろ。

使うヘッダを片っ端から.h でインクルードしてるソース見ると、あ、こいつ
分かってないなと思う。
605デフォルトの名無しさん:2012/07/13(金) 12:59:30.50
>>604
でもそれって素の#includeでの問題のためだよね。#importは別にそんなに気にすることじゃない
それとは別にヘッダーでヘッダーを#importするとリコンパイルする範囲が広がる可能性が高いってのはあるが、それは別にヘッダーでヘッダーを#importすると必ずというわけでもないので、言うような2値で判断出来る要素ではないと思うけど

好きにすばいいことじゃない。まあAppleの流儀は言うような形のようだけどね
606デフォルトの名無しさん:2012/07/13(金) 14:01:30.17
>>605
違うだろ。
607デフォルトの名無しさん:2012/07/13(金) 14:02:16.04
まぁ最近はコンパイル時間も短いからソースが数10個程度の小規模なプロジェクトなら
それでもいいだろうが、ある程度大きなプロジェクトでトライ&エラーの繰り返しで開発して
いくような人にはコンパイル時間の差も馬鹿にはならないだろ。
ためしに、プロジェクト名-Prerfix.pch を編集してコンパイルしてみ? 全ソース
のコンパイルが始まるから。この時間が苦にならないようなら、好きにすれば
いいんじゃね?
608デフォルトの名無しさん:2012/07/13(金) 14:15:54.49
facadeパターンで使うものを全てヘッダでimportする
こんなのどう考えてもおかしいだろ?

俺を使うにはこいつらが必要だ!てのはヘッダで他は全て実装ファイルだろ
609デフォルトの名無しさん:2012/07/13(金) 14:30:13.12
>>607
何を言っているかわからないが、そんな基本的なこと言っているのだったら、ヘッダーにヘッダーを入れるなというあなたも2値でしか考えられない人なんこあというのはわかるなw
ヘッダーにヘッダーを取り込んでも必要最小限度に抑えれば好きにすればいいってことだぞ?
あんたのプロジェクトは循環しまくっているのかなんなのが、そういうことをしたらプリコンパイルヘッダーみたいに全部が影響を受けるのだろう。設計を見なした方がいいなw
610デフォルトの名無しさん:2012/07/13(金) 14:33:59.61
#include は重複して読み込むのはデフォルト
#ifndef HOGEHOGE_H や #pragma once はヘッダーで定義しているので、ヘッダーを読み込まなければわからないので、同じファイルを何度も読みこむようなことになるだろう。ヘッダーでヘッダーだと
#import はヘッダーは一度しか読み込まない仕様だよ?
611デフォルトの名無しさん:2012/07/13(金) 14:42:19.47
>>608
俺を使うにはこいつらが必要だ、でも @class だけでヘッダーは実装ファイルじゃなきゃダメだという頭の固いのがわけわからんことを言い出しているんだけど
別にどっちでもかまわないことだろう

このクラスを使いたいからこのヘッダーをというのは理にかなっているし、簡単で別にかまわないことなのにな
極端に言いえば、このクラスを使いたいのだがこのクラスはあのクラスも使っているからあのヘッダーも、あのクラスはあっちのクラスも使っているのであっちのヘッダーもってめんどくさっと思うけど、別にそれはそれで勝手にすればいいことではある
趣味の範囲の話だなw
612デフォルトの名無しさん:2012/07/13(金) 14:49:19.26
前方宣言とインクルードガードじゃ目的がぜんぜん違うじゃないの。
613デフォルトの名無しさん:2012/07/13(金) 14:54:45.09
うん、そのふたつは全然関係ないよ。結びつけるとは思わなかったw
ヘッダーでヘッダーをという問題で、何を問題にしているか具体的にわからないから、これも問題と見なしているのであればって話
614デフォルトの名無しさん:2012/07/13(金) 15:06:21.40
>>603
こういう低レベルな奴の相手するのがそもそもの間違い。
615デフォルトの名無しさん:2012/07/13(金) 15:56:55.83
>>609
ヘッダで極力他のヘッダをインクルードしない方がいいうというのはこういうこと。
a、b、c、d、e というクラスがあったとしよう。
c,d,eはそれぞれbに依存し、bはaに依存する。

    [a]
    ↑
[c]-->[b]<---[e]
    ↑
[d]

c.h、d.h、e.hでそれぞれがb.h をインクルードし、b.h はa.hをインクルードしたとしよう。
この場合、クラスaのインターフェースが変わり、a.hを修正すると、bだけじゃなく、cもdもeも
つまり、全部コンパイルしないといけなくなる。(ヘッダが依存関係を持っているので)

ところが、それぞれがヘッダではなく、ソース(.mの方)でインクルードしていたとすると、
a.h の修正による影響を受けるのは、bだけで、c,d,e自体は再コンパイルの必要がない。
(もちろん、c,d,eが直接aを参照していないことが前提だが)

つまり、コンパイル時間に影響するというのはそういうことだよ。本来必要のないソースまで
再コンパイルされてしまうということ。
プロジェクト名-Prerfix.pchは全てのソースから参照可能なので、これを修正すると全ての
ソースの再コンパイルが必要になる。
616デフォルトの名無しさん:2012/07/13(金) 17:58:45.41
>>597
@public 使うような設計がキモいんだよ。
オシャレとか何言い出してんのお前。
617デフォルトの名無しさん:2012/07/13(金) 18:06:33.48
出た♥
自分の感性に合わないことは断固として認めない昭和の頑固オヤジw
柔軟性の欠片もない凝り固まった頭でキモいキモいを連発w
618デフォルトの名無しさん:2012/07/13(金) 18:55:28.79
なんでもあり感とかお手軽感とかの事だと思うが、
キモいって程じゃねえなあw
619デフォルトの名無しさん:2012/07/13(金) 19:10:57.74
ObjCの場合、アクセス修飾子は飾りというか作成者の願いというかw
620デフォルトの名無しさん:2012/07/13(金) 19:30:38.08
コメントに近いよねw
621デフォルトの名無しさん:2012/07/13(金) 23:45:22.41
>>597
たぶん昔の「あんたたちイモね」ってのと同じレベルの慣用表現太と思うよ>「キモイ」
622デフォルトの名無しさん:2012/07/13(金) 23:58:07.25
ダサいみないなもんか。
オサレが昔のナウい?
623デフォルトの名無しさん:2012/07/15(日) 12:31:00.96
ヤバイ
624デフォルトの名無しさん:2012/07/20(金) 13:35:41.52
質問なんですが、
画面の数分の1くらいの大きさのModalを表示させて、残りの部分は、
裏側のViewが見えたまま、みたいな事をしたいんですが、StoryBoardで実装できますか?
Modal用にViewControllerを用意してSegueで繋いでStyleをModalにしても、
Modalが全画面表示みたいな感じになってしまって困ってます
625デフォルトの名無しさん:2012/07/21(土) 09:45:29.77
日本人は、先進諸国で飛び抜けてマスコミ報道を鵜呑みに
信じやすいことがこの動画で実証されています。

いわばマスコミ報道の「鵜呑度」を国際比較すると、
日本人は、先進国中ダントツに「鵜呑度」が高く70%、
最も低い国民は英国で14%です。
その他の主要欧米諸国(ロシアを含め)は20−35%です。
日本に近い国は、ナイジェリア、中国など、途上国と新興国となります。

別の言い方をすれば、日本人の70%は、
自分の頭で考えず(思考停止)、
テレビ、新聞、週刊誌などのマスコミの情報を鵜呑みにしていることを意味します。
青山は以前からこれを「観客民主主義」と言っています。
観客民主主義は、マスコ ミの情報操作による世論誘導に最も陥りやすく、
独裁にも呼応しやすい特性を持っています。

マスコミ報道「鵜呑度」
日本人70%、英国人14% You Tube
http://www.youtube.com/watch?v=ypPqsWUC6Vo

http://www.asyura2.com/12/senkyo132/msg/578.html
626デフォルトの名無しさん:2012/07/21(土) 15:08:48.29
今日もオスプレイについての偏向歪曲印象操作が酷いぞ

1、「開発段階で事故が相次いだオスプレイ」
元データにはたどり着けなかったが、開発で事故を多発した期待はいっぱい有るぞ
>CH-46も初期はよく落ちてましたから。
https://twitter.com/obiekt_JP/status/212207201832534017

2、「運用開始後も・・・」
重要なのは飛行時間あたりの事故率とその原因だ、事故率は他の機体のほうがはるかに高い
>オスプレイのモロッコとフロリダの事故
http://obiekt.seesaa.net/article/280173146.html

3、「安全性への懸念が指摘されています」
沖縄にオスプレイを配備されると困るチャイナ・北朝鮮とその手下だけだぞ

イギリスの航空ショーでデモ飛行をしたのは報道したのかよ
>MV-22 オスプレイ Osprey RIAT 2012 Jul.8
http://www.youtube.com/watch?v=vXrH2KkYzfw

BPOはこちら。
http://www.bpo.gr.jp/
因みにNTVで配線間違い(F-2が小牧でひっくり返ったのと同じ)で事故を起こした時の動画をしつこく流してたんで、
BPOに文句つけたらようやく認めやがったw

おまけ、事故画像リスト
http://oopslist.com/
627デフォルトの名無しさん:2012/07/22(日) 15:28:40.17
質問です。__weak修飾子について調べていたのですが、
下記の1回目のNSLog()をコメントアウトすると2回目のNSLog()で
aにnilが代入されているのですが、これはなぜでしょうか?
NSLog()がaを保持するのでしょうか?

__weak id a;
id b = [[NSObject alloc] init];
id c = [[NSObject alloc] init];

a = b;
NSLog(@"a:%p", a); // このNSLogをコメントアウトする次のNSLog()のaはnilが代入されている
b = c;
NSLog(@"a:%p", a);
628デフォルトの名無しさん:2012/07/22(日) 16:02:27.65
>>627
b=cした時点でbからリテインされていたオブジェクトがreleaseされaからリテインされてないからdeallocされてaがゼロ化される。
629627:2012/07/22(日) 18:11:57.00
自分の質問の仕方が悪かったです>>627のコードをそのまま実行すると
2回目のNSLog()の時にaがゼロ化されていないのですが、なぜでしょうか?
本当ならゼロ化されてnilになってるはずだと思うのですが。。。
630デフォルトの名無しさん:2012/07/22(日) 18:32:46.90
>>629
最初のNSLogの中で a の中身が autoreleasepool に積まれてるみたいだ。
だから b=c しても、元々bが指してたものは生きてる。
631デフォルトの名無しさん:2012/07/23(月) 01:30:19.39
>>624
できる。presentModal はフルスクリーンにしかならないので、CustomSegue と、ViewController で自分でそういうタイプのモーダルにする
632デフォルトの名無しさん:2012/07/23(月) 15:56:37.22
すみません 教えてください。
自分のiphoneではエラーがでなく、他人のiphoneにてエラーが出てしまって、わけわからずにいます。。。
どうやら、uiimagepickerがメモリリークを起こしているのかと思っております。ただ改善方法がよくわからずにいます。

ソースは下記のような形になってます。


- (IBAction)button02:(id)sender {
@autoreleasepool {
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.showsCameraControls = NO;
imagePicker.delegate = self;
cameraOvarLay.imagePicker2 = imagePicker;
[imagePicker.cameraOverlayView addSubview:cameraOvarLay.view];
[cameraOvarLay setCameraOverlay:[delegate selectedNumber]];

[self presentModalViewController:imagePicker animated:YES];
}
}

ちなみに、imagePicker変数は、同クラスのviewDidLoadにて、UIImagePickerをallocしています。
このクラスは、最初に呼ばれるとその後呼ばれる事はありません。
autoreleasepoolが問題なのでしょうか?ARCは使っています。

なぜ僕のiphoneだと出ないのでしょう??4s ios 5.0.1
633デフォルトの名無しさん:2012/07/23(月) 17:09:14.51
エラーの内容くらい書け
634デフォルトの名無しさん:2012/07/23(月) 20:59:21.12
エラーもなくて困っています。エラーあればそれをたどれるのかもしれませんが。。。
よく出るのが、
error: failed to launch '/Users/apple/Library/Developer/Xcode/DerivedData/uiview-fcgzokzioetqhoattzkqljnkymwt/Build/Products/Debug-iphoneos/uiview.app/uiview' -- failed to get the task for process 1968

なのですが、何かわかりますか?CodeSigningIdentityで、ディストリビューションを設定するとこの現象に陥ります。
635デフォルトの名無しさん:2012/07/24(火) 18:29:20.03
朝鮮猿っていつまで経っても、結局日本の後追い猿真似しか出来ない寄生虫民族なんだよね
属国の歴史しか無くて、ずっと独自文化がゼロなのはなぜなのか本当に良く判るわw


  < #`Д´> <うぎゃああああ!!フランス人までネトウヨの嫌韓厨だったニダーーー!!!ネトウヨ!ネトウヨ!ネトウヨ!!


■フランスメディア「KPOPに独自性は感じられない」「日本や米国の模倣」「商業主義」「つまらない」

パリで韓流コンサート「日本文化から韓国を知った」
2011/06/14(火) 09:45

  一方、コンサートが終了した現在、当日の模様について報道しているフランスのメディアは
比較的少ない。この状況下、コンサートの模様を報じているのは、フランスのニュースサイト「Rue89」だ。

  中でも目立つのが、K−POPは特に独自性が感じられないという意見だ。これまでフランスでファン層を
増やしてきたJ−POP、ひいては米国のポップスを踏襲しており、商業主義的な音作りだという意見や、
演奏がコンピューター管理されているためか野性味に欠けるといった意見が寄せられている。

http://news.searchina.ne.jp/disp.cgi?y=2011&d=0614&f=national_0614_016.shtml
636デフォルトの名無しさん:2012/07/25(水) 11:46:43.66
お前らホント韓国ネタが好きだよな
637デフォルトの名無しさん:2012/07/25(水) 12:03:24.14
お前らっつてレスしても逃げててわからんだろ。逃げてってかあれがあいつらの活動wなんだろうけど
街宣右翼の張り紙や極左のビラまきといっしょ。内容的にもの挑発的攻撃的なのが似ているし
638デフォルトの名無しさん:2012/07/25(水) 16:25:10.35
>>631
なるほど、理解しました。
CustomSegueと↓のを組み合わせれば出来そうな気がします。
ありがとうございました。
ttp://www.cyrus.co.jp/tdiary/?date=20101005
639デフォルトの名無しさん:2012/07/26(木) 00:36:08.43
なんか、Objective-Cの文法がアップグレードしたなぁ

@synthesizeが省略可
NSArrayとNSDictionaryとNSNumberのリテラル追加
NSArray* list = @[@11, @22, @33];
NSDictionary* map = @{@"name":@"Red", @"value":@"#FF0000"};
640デフォルトの名無しさん:2012/07/26(木) 01:23:36.09
さっそく@synthsize一掃したんだけど
変数名が_プロパティ名になるのって公式にはどこに出てるの?
WWDCのスライドしかみつけられんかった
641デフォルトの名無しさん:2012/07/26(木) 02:50:57.72
@property が初出の頃
642デフォルトの名無しさん:2012/07/26(木) 03:26:56.70
なわけないだろ
643デフォルトの名無しさん:2012/07/26(木) 04:10:14.59
@interface Hoge {
id _hoge;
}
@property (noneatomic,retain) id hoge;
@end

@implementation
@synthesize hoge;
@end

とした場合に、_hoge に自動的にアサインされるってことだよ。id hoge; でもアリだがな
そういう流れだし、インスタンス変数名に _ のこだわりを持つAppleだから不思議ではない。どっちにするってときに
644デフォルトの名無しさん:2012/07/26(木) 07:02:13.21
スイスに極右政権が誕生!! 外国人の生保受給者・軽犯罪者を永久追放、祖国強制送還へ
http://engawa.2ch.net/test/read.cgi/poverty/1343227547/


スイス、外国人犯罪者を追放へ 生活保護の不正受給も対象

スイスで28日、特定犯罪をおかした外国人を自動的に
国外追放する法改正の国民投票が行われ、賛成52.9%で承認された。反対は47.1%だった。

特に、スイス人口の大半を占めるドイツ系住民の賛成票が多く、全26州のうち否決はわずか6州だった。

今回の国民投票は極右政党「スイス国民党(SVP)」が主導したもの。現行法では、
有罪となった外国人に対しては判事の個別判断で国外追放処分とすることができたが、
改正新法では、特定の犯罪で有罪判決を受けた外国人は自動的に国外永久追放となる。

対象となる犯罪行為には、強姦、深刻な性犯罪、強盗などの暴力行為、麻薬密輸のほか、
生活保護の不正受給も含まれる。
www.afpbb.com/article/politics/2776977/6517971
645デフォルトの名無しさん:2012/07/26(木) 20:15:22.91
getterメソッド実装しちゃうと、@synthesizeが省略できなくなるようだ

@interface Hoge
@property int boke;
@end

@implementation Hoge

// @synthesize boke = _boke; ←これ必要

- (int)boke {
return _boke; ←エラー
}

@end



>>643
>640が言っているのは、そういう話じゃないと思うぞ
646640:2012/07/26(木) 22:35:04.77
>>645
情報サンクス

そうそう。以前だと
@synthesize プロパティ名
だけだとプロパティ名と同名のプライベート変数が出来てたよね
643のコードだとhogeと_hogeが同時に存在してしまう
647デフォルトの名無しさん:2012/07/26(木) 23:47:51.33
xibファイルのBase Internationalizationもなかなか良い
648デフォルトの名無しさん:2012/07/27(金) 11:40:23.34
ARCについて質問です。
この本の45ページのサンプルを実行してみたのですが、
本に書いてあるような実行結果になりません。どうして?

サンプル
---------------
id __weak obj1 = nil;
{
id __strong obj0 = [[NSObject alloc] init];
obj1 = obj0;
NSLog(@"A: %@", obj1);
}
NSLog(@"B: %@", obj1);
----------------
本に書いている実行結果
A: <NSObject: 0x753e180>
B: (null)

----------------
やってみた結果
A: <NSObject: 0x6a16a60>
B: <NSObject: 0x6a16a60> <- 破棄されていないしnilもセットされてない。

スコープから外れても必ずしもすぐに破棄されるとは限らないってこと?
教えて!エラい人。
649デフォルトの名無しさん:2012/07/27(金) 11:42:08.21
>>648
書籍の名前は「エキスパート Objective-C プログラミング -iOS/OS Xのメモリ管理とマルチスレッド-」です。
ISBN: 9784844331094
650デフォルトの名無しさん:2012/07/27(金) 11:45:17.37
651デフォルトの名無しさん:2012/07/27(金) 12:00:42.27
>>650
直前に同様の質問があったとは!面目次第もございません。
NSLogをコメントにしてデバッガでトレースしたところ確かに本の結果となりました。

ありがとうございました。
652デフォルトの名無しさん:2012/07/27(金) 14:03:26.20
>>645
WWDC 2012 Session 405 によれば

readonly propertyの場合
getterを実装すると自動@synthesizeが無効化される

readwrite propertyの場合
getterとsetterの両方を実装した時のみ、自動@synthesizeが無効化される
どちらか片方だけの実装では無効化されない


なので、その場合はエラーにならないはず。
653デフォルトの名無しさん:2012/07/28(土) 00:48:17.80
>>652
なるほど。
実はあの後、いろいろコードを弄っているうちにエラーが出なくなってしまった。
最初、getterを実装した瞬間にエラーが出たのは、Xcodeのエディタの誤動作だったのかもしれない。ビルドを試しておくべきだった。
654デフォルトの名無しさん:2012/07/28(土) 15:01:18.73
@interface Hoge
@property (noneatomic,retain) id hoge;
@end

@implementation{
BOOL isNani;
}
@end
655デフォルトの名無しさん:2012/07/29(日) 00:49:18.95
iPhoneアプリを(主にゲーム)を作れるようになりたいのですが
Objective-Cは下記のサイトの各項目を読んだ程度でホントに基本的なことしか分かりません。
http://www.atmarkit.co.jp/fcoding/index/objc.html
特にやりたい処理にどういった命令を使えばいいのかなどさっぱり分からない状態です。
そういった部分も含めて「これらを熟読すれば大体作れるようになる」とオススメするサイト・書籍はありませんでしょうか?
情報関係の知識は基本情報・応用情報をもっている程度で、
プログラミングの知識はCやCOBOLなどで本当に簡単で事務処理的なプログラミングができる程度です。
ポインタも理解はしています。
656デフォルトの名無しさん:2012/07/29(日) 01:12:19.86
Appleが出してる資料でまずは日本語化されてるやつから。
657デフォルトの名無しさん:2012/07/29(日) 01:48:02.49
>>655
例えばどんなやつ?
標準のUIKitで実現可能なやつもあれば
OpenGL周辺のライブラリやら
Core XXXXのライブラリをがしがし書くのを覚えた方がいいのもある
658デフォルトの名無しさん:2012/07/29(日) 02:23:28.96
ポインタを完全に理解しているなら俺から教えることは何もない!
659デフォルトの名無しさん:2012/07/29(日) 02:27:23.76
>>657
どんなというとゲームの種類についてでしょうか?
一番初めに作ろうと思っているのはチャリ走にもっとボタンをつけたようなゲームです。
ステージの続き?をランダムで描画させたりしないといけないですよね?
自分が作ろうと思っているゲームは2Dゲームのみで、ゲームに必要なボタンや文字などはほぼすべて画像を用意するつもりです。

聞きたい内容と違っていたら申し訳ありません
660デフォルトの名無しさん:2012/07/29(日) 18:43:44.21
■嫌いな国ランキング 2012
http://japaneserank.enq1.shinobi.jp/comment_record/101289/


■1位 韓国 24871票
■2位 中国  614票
■3位 北朝鮮 203票

■総投票数 25982票

661デフォルトの名無しさん:2012/07/29(日) 20:08:04.19
個人でiphoneアプリ、Windowsアプリをマーケットに売って生き残れ

javaやlinuxは手間がかかる 一人でやるには手間がかかりすぎる 手間がかからないで一人で開発できて
人の多いところで直接販売できる仕組みが提供されているメーカ製言語だけやる ずばりiphone またはWindow 8 Metro App Store C#
やるならメーカー製の言語 洗練された仕様 脆弱性が少なく 開発ソフトが優れ 課金ライブラリ アップデートライブラリが提供されていて 情報、書籍が多く開発しやすい
奴隷になりたければオープン系をやればいい 時間がかかり 人は多く 仕事の取り合い 足の引っ張り合い 脆弱性が多く 互換性がなく 癖があり 大規模開発中心
詳細設計しかやれない体になって年取ってぽいだ 独立もできない 手間のかかりすぎる仕様だから 

派遣屋 IT経営者はその方が喜ぶ 大規模分割開発では使い捨てても独立はできまい 代わりはいくらでもいる 嫌なら辞めろ
若い派遣営業は舐めた態度をとってくる ひどいピンハネ
オープン言語、日本独自開発の言語・フレームワーク ガラパコ携帯 javascript html5 android java linux python rubyやnode.jsとかやめとけ
メディアに金を払ってステマ宣伝してくるが釣られて手を出しても情報は少なく手間がかかり スパゲッティコード 未完成 デスマに陥る
コンパイルできないからパクられ  直接売る場所がないから企業に買い叩かれ金にならない 生きていけない奴隷仕様だ

ここから抜け出すにはiPhone一択 またはWindow 8 Metro App Store(未確) C#
Objective-CやC#を覚えるとサーバーサイドからクライアントサイドまでカバーでき人の多い場所でソフトを売る権利を得られる
仕事や趣味でこれらの言語をやっておけば派遣切りされても会社辞めることになってもソフトを売って生きていける それはセーフティーネットになる
WEBサーバーIIS Win2008ServerVPS SqlServer Oracle MySql 言語はマーケットで売れるメーカー製のみ C#は自分用業務支援ツールとして使える 
例えばPHPでWEBアプリを作っていて管理者画面はC#(EXEアプリ)で作るとかなり早く作れる(Smartyなんか使うよりもかなり早くだ)
662デフォルトの名無しさん:2012/07/30(月) 00:16:07.52
すみません
@compatibility_ariesコンパイラディレクティブって何に使うんでしょうか?
663デフォルトの名無しさん:2012/07/30(月) 06:21:38.73
反原発だからコリアの人々と船出しよう山本太郎もいるよ!←意味がわからないし、何故コリアwwwwwwww
http://engawa.2ch.net/test/read.cgi/poverty/1343579821/


PEACE&GREEN BOAT 2012 開催! −いま、コリアの人々と船出しよう
今年12月、4年ぶりにPeace&Green Boatが出航します。テーマは「脱原発」。
日韓3ヶ所の原子力発電所を訪れ原発の「いま」を見つめ、
原発立地地域の人々との交流を通じて「脱原発」を進めるために必要なことを考えます。

旅をより充実したものへとナビゲートしてくれるのが水先案内人の皆さん。
PEACE&GREEN BOAT2012には多彩な水先案内人の方々が参加予定です。
原発のない社会に向けて、共に各地をめぐり語り合います。(※順不同・敬称略)
アイリーン・美緒子・スミス (グリーン・アクション代表)
鎌田慧 (ルポライター)
田中優 (環境活動家、ap bank監事)
古市憲寿 (社会学者)
松田美由紀 (女優・写真家)
宮台真司 (社会学者)
山本太郎 (俳優)

[魚拓]
http://megalodon.jp/2012-0726-2316-13/www.peaceboat.org/cruise/pg2012/index.shtml
http://niceboat.org/10/s/10ko323392.jpg
または
http://i.imgur.com/lY0nX.jpg

[どうしても直接踏んでソースを確認したい人は]
http://www.pbcruise.jp/cruiseList/peacegreen/index.html
http://www.peaceboat.org/cruise/pg2012/index.shtml
664デフォルトの名無しさん:2012/07/30(月) 09:42:00.06
はてなにあったtyype、これすごくない?
665デフォルトの名無しさん:2012/07/31(火) 13:59:37.07
NSThreadで起動したスレッドの内部で、オブジェクトのbool型変数がFALSEに
なるまでwhile()ループする処理を入れています。
で、ループの直前でNSTimerでタイマを仕掛け、タイマ発火時にFALSEにする
ようにしましたが、ループが回っている間はタイマが発火しなく、無限ルー
プなってします。

ループの最後に[[NSRunLoop currentRunLoop] run];でメッセージを処理さ
せるようにすると指定時間でタイマが発火するのですが、runから処理が戻る
まで3秒以上かかってしまっていて、使えません。

Windowsですと、スレッド内でSetTimer()すると無限ループ中でもタイマ
イベントが発火するのですが、Macではどのようにしたらいいのでしょうか?
666デフォルトの名無しさん:2012/07/31(火) 14:17:09.50
自分ならタイマーじゃなくてもう1個別のスレッドで待つかな。
667デフォルトの名無しさん:2012/07/31(火) 14:28:40.27
>666
もう一個別のスレッドでタイマを仕掛けるんでしょうか?
今、ループ直前のタイマセット処理を別スレッドに移動して、タイマセット
処理を書いていたところにNSThreadを起動するようにしてみたのですが、
だめでした。
668デフォルトの名無しさん:2012/07/31(火) 14:41:28.39
>>665
>NSThreadで起動したスレッドの内部で、オブジェクトのbool型変数がFALSEに
>なるまでwhile()ループする処理を入れています。
出発点がそもそもおかしいと思うが。
普通はセマフォとかメッセージ待ちにするでしょ。
669デフォルトの名無しさん:2012/07/31(火) 14:50:52.21
行儀悪いけどこうやれば3秒後にループから抜けられるよ。

__block bool done = false;

dispatch_async(
 dispatch_get_global_queue(
  DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
  ^{ sleep(3); done = true; });

while (!done) {}
670デフォルトの名無しさん:2012/07/31(火) 15:06:34.03
>>668
同期したいんじゃなくて、一定時間だけ処理させたかったんです。

>>669
結局、それに近い処理で実装してみました。
ループ前にNSDateで現在時間を取って、ループの最後でtimeIntervalSinceDate
で差を取得し、指定時間が経過していたらbreakするように。行儀悪いですが、
ひとまずは目的は果たせています。

スレッド内でのループ処理をタイマで抜けるようにする手法はないんでしょう
かね。
671デフォルトの名無しさん:2012/07/31(火) 15:10:27.29
>>670
>結局、それに近い処理で実装してみました。

近くねえじゃん。
672デフォルトの名無しさん:2012/07/31(火) 15:56:43.79
>>670
NSTimer の説明よく読んでみ
NSTimer は NSRunLoop 内でってことなんだから、定期的に NSRunLoop 呼びださなきゃダメやん
そういう意味でも出発点がかしいと思う

NSRunLoop ですぐに戻ってきて欲しい場合は run じゃなくて runUntilDate: 使えばだけど、Timer 使いたいってのがわからない/使わないそれと変わらないので、それでいいんじゃないの
673デフォルトの名無しさん:2012/07/31(火) 16:36:29.10
>>670
ループ回るのにミリ秒単位で時間かかるなら、これで十分だよ。
const CFAbsoluteTime timeOut = CFAbsoluteTimeGetCurrent() + 1.0; // 1 sec timeout
do {

}while (CFAbsoluteTimeGetCurrent() < timeOut);
674デフォルトの名無しさん:2012/07/31(火) 18:46:46.13
>>672
> NSTimer は NSRunLoop 内でってことなんだから、定期的に NSRunLoop 呼びださなきゃダメやん

定期的にNSRunLoopを呼ぶよりは、そのループ処理そのものを一つのタスクとしてNSRunLoopにスケジュールした方がいい。
そして、自身のタスクを再帰呼び出ししてループする

- (void)Looping:(id)arg
{
// ループ処理
[[NSRunLoop currentRunLoop] performSelector:@selector(Looping:) target:self argument:arg order:1 modes:@[NSDefaultRunLoopMode]];
}

タイマー処理で、上記のLooping:のスケジュールをキャンセルすれば処理終了
675デフォルトの名無しさん:2012/07/31(火) 18:54:52.32
>>674
それって、本当に再帰ってかどんどん深入りしているようだけど?
本当にした方がいいのか?
676デフォルトの名無しさん:2012/07/31(火) 19:06:04.54
え? いやしてないぞ。
performSelector:target:argument:order:modes: は @selector(Looping:) 呼び出し命令を登録するだけ。
実際に呼び出す前に返ってくる。
677デフォルトの名無しさん:2012/07/31(火) 20:26:01.42
みなさん、色々ありがとうございます。

>>672
> NSTimer は NSRunLoop 内でってことなんだから、定期的に NSRunLoop 呼びださなきゃダメやん
これは、僕が最初に書いた[[NSRunLoop currentRunLoop] run];でしょうか。
特にタイマが使いたいわけではないんですが、スレッド内で一定時間だけ処理して、
時間が来たらそこまでで処理を終わる、ということがしたかっただけなんです。
ずっとWindowsプログラマだったので、こういうときはタイマを使っていたので、
その頭でMacプログラムでも同じやりかたをしたというだけなんです。

>>673
おっ、これは僕が最終的に書いたNSDateの比較より、少し綺麗ですね。
ループ処理中は、外部からのイベントなどでループ処理を抜けることは考えて
いないので、開始時間から指定時間経過するのを毎回チェックすればいいやと
考えているところです。

>>674
これは、ちょっと僕の知識では追いつけないです(^^;
本読んで、がんばって理解してみます。
678デフォルトの名無しさん:2012/08/02(木) 15:55:17.88
@YESとか@NOのリテラルって本当に使えるんでしょうか?
@trueとかは使えるのですが@YESとか@NOリテラルはコンパイル時にエラーになります。
679デフォルトの名無しさん:2012/08/02(木) 19:56:45.36
>>678
こっちでは、使えたけど?
@YESや@NOだけじゃなく、@'a'とか、@( object1.intValue + object2.intValue )なんかもOKだったよ
680デフォルトの名無しさん:2012/08/02(木) 20:33:23.91
>>678
clangのバージョンが古いとそうなる
681デフォルトの名無しさん:2012/08/02(木) 21:28:23.75
ありがとうございます。
compilerはApple LLVM Compiler 4.0なんですが、古いですかね。
@[]とか、他のリテラルは問題なく使えるのですが・・・。
682デフォルトの名無しさん:2012/08/03(金) 04:26:27.45
2012年8月19日フジテレビ抗議デモinお台場 告知動画
http://www.nicovideo.jp/watch/sm18497988
8月19日 フジデモ一周年 お台場フジテレビ抗議デモ 告知動画
http://www.nicovideo.jp/watch/sm18468199
【告知】8・19フジデモ一周年inお台場
http://www.nicovideo.jp/watch/sm18413040


かつての「視聴率王」も今は昔――フジテレビに異変が起きている。

2004年から7年間、年間視聴率3冠王に君臨していたが、昨年、日本テレビにその座を奪われたのに始まり、
オダギリジョーが主演した今年4月期のドラマ「家族のうた」は、視聴率3%台で打ち切り。
さらに4〜6月期の平均視聴率はテレビ朝日にも抜かれ、3位に。7月には「3冠王を逃したため」(フジテレビ関係者)、
局長やプロデューサーなどが大幅に入れ替わるテコ入れがなされたが、"迷走"は止まらない。

その一例が情報番組「とくダネ!」だという。
言わずと知れた小倉智昭がメーンキャスターを務める朝の看板番組だ。
同局の人気アナ、ナカミーこと中野美奈子の退社に伴い、
7月からキャスターに抜擢されたのがタレントの菊川怜だったが、その評判が芳しくない。
「同じ時間帯では、日テレの『スッキリ!!』と『とくダネ!』が視聴率を競い、これまではフジが優勢でした。
週5回の放送で負け越しが続くなんてことはほぼなかったのですが、菊川に代わった翌週から、1勝4敗が2週続きました。
扱うニュースなどにもよるので一概にキャスターの責任にはできませんが、菊川が原因だという声がもっぱらです」(番組関係者)

一方、菊川の起用と同時期にあった人事異動が業界で臆測を呼んでいる。情報制作局長や情報制作センター室長、
番組のチーフプロデューサーらが軒並み交代したのだ。テレビ局では、長く続いた番組を終わらせたり、
「大物」キャスターやタレントを降板させたりする際に、局側も相応の立場の人間が異動するのが慣例とされている。
「大物の降板などと同時に異動する局もあるが、フジは必ずしもそうではない。
今度の人事異動は、小倉さんの降板をにらんだもの、という声があります」(同)
もしかして、小倉さん、最後の夏!?

▽週刊朝日
http://www.wa-dan.com/article/2012/07/post-968.php
683デフォルトの名無しさん:2012/08/04(土) 23:09:38.61
@YESってなんだよ。。BOOLのYESと何が違うん?
いらなくね?そんなの。。
684デフォルトの名無しさん:2012/08/04(土) 23:15:50.91
[NSNumber numberWithBool:YES]
685デフォルトの名無しさん:2012/08/04(土) 23:16:13.33
>>683
えっ
686デフォルトの名無しさん:2012/08/05(日) 01:10:11.38
ったく、どいつもこいつも楽することばっかり考えよって
687デフォルトの名無しさん:2012/08/05(日) 01:16:05.18
可読性はどうなん?
688デフォルトの名無しさん:2012/08/05(日) 02:12:25.04
すみません
iOSだとiOS SDK 6.0まで使えないんですね
@(YES), @(NO)なら使えるようで
あるいは
#define YES (1)
#define NO (0)
689デフォルトの名無しさん:2012/08/05(日) 22:36:00.40
-(id)init
{
Test *x =[Test ~~~];
}

-(void)lol
{
[x ~~~];
}

selectorを使ってlolを呼び出すとxが使えません。
どのようにしたらいいでしょうか?
690デフォルトの名無しさん:2012/08/05(日) 22:57:14.70
>>689
訳わからん。変な記号や省略使わないで普通に書いてよ。
つかなんでinitでsuper initしてないの?
691デフォルトの名無しさん:2012/08/05(日) 23:01:40.49
>>690
すみません、省略してました。

hでTest *x;を宣言してmで

-(id)init
{
x =[[Test alloc]init];
}

-(void)lol
{
[x abc];
}


@selectorを使ってlolを呼び出すとxは使えないのでしょうか?
692デフォルトの名無しさん:2012/08/05(日) 23:04:33.91
>>691
???
なんでinitでallocするの?
693デフォルトの名無しさん:2012/08/05(日) 23:10:15.98
あぁ、いやTestをalloc initするのはいいんだけど、自分自身をsuper initしろよまず
694デフォルトの名無しさん:2012/08/05(日) 23:13:15.37
>>693
省略ですreturnもです
695デフォルトの名無しさん:2012/08/05(日) 23:17:45.81
init云々はおそらく関係ないからどうでもいいんだが

>hでTest *x;を宣言してmで

>@selectorを使ってlolを呼び出すとxは使えないのでしょうか?

どう宣言したのか
何故使えないと判断したのか
そのあたりをちゃんと書けよ
696デフォルトの名無しさん:2012/08/05(日) 23:23:12.73
[NSCFString count]: unrecognized selector sent to instance
のエラーでした
697デフォルトの名無しさん:2012/08/05(日) 23:51:21.06
countなんてmethodがどこに出てくるんだよ
698デフォルトの名無しさん:2012/08/05(日) 23:52:10.93
^^;
699デフォルトの名無しさん:2012/08/06(月) 10:02:59.59
関係無さそうだと判断して変に省略するから
そこに原因があることに気がつかない。
700デフォルトの名無しさん:2012/08/06(月) 12:36:48.14
しゃーない
夏だから
701デフォルトの名無しさん:2012/08/06(月) 22:45:07.54
------------- .h ------------
IBOutlet imageview* hoge;
NSArray* array;
UIImage* img;
-------- .m --------------
array = [ [ NSArray alloc] init ];
//xmlのリストを取り込んで、配列に登録
NSBundle* bundle = [ NSBundle mainBundle ];
NSString* path = [ bundle pathForResource:@"omake" ofType:@"plist" ];
array = [ NSArray arrayWithContentsOfFile: path ];
// indexを指定してobjectを読み出し
for (int i = 0 ; i < 5 ; i++ ) {
NSString *str = [array objectAtIndex:i];
NSLog(@"index = %d ; object = %@", i, str);}
中略
- (void)imagexxx{
int i = 1;
//配列からファイル名を取り出して、画像のインスタンスを生成
NSString* str = [array objectAtIndex: i ];
img = [ UIImage imageNamed: str];
//imageviewに画像を反映させる
hoge.image = img;
}
※ omake.plist には5つのpng画像を Strings Type で登録しております。
これを実行すると
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString objectAtIndex:]: unrecognized selector sent to instance 0x147330'
*** Call stack at first throw:
と、エラーが出るのですが、何が問題かわかりませんでした。
NSString* str = [array objectAtIndex: i ];
この部分がダメらしいのですが、
何が間違っているのかご指導いただけませんでしょうか。
よろしくお願いいたします。
702デフォルトの名無しさん:2012/08/06(月) 23:02:53.60
でじゃぶ
703デフォルトの名無しさん:2012/08/06(月) 23:05:54.92
おお、これが噂に聞く問題解決力のない御仁か
704デフォルトの名無しさん:2012/08/06(月) 23:14:34.16
答えられないのにどっちにも張り付いてるクズいるんだなぁ
705デフォルトの名無しさん:2012/08/06(月) 23:18:07.70
>>701
http://anago.2ch.net/test/read.cgi/mac/1342965470/
ID:BAsdE3f70 なんだろうけど、死んでほしいようなヤツだが、
[NSCFString objectAtIndex:]: unrecognized selector...
ってメッセージ出てるんだから、array が NSString インスタンスにすでに置き換わっているんだろ
NSLog( @"%@", array );
ってしてみりゃわかることじゃん。そんなコードだけ示されてもわからんし、そんなこと自分で追っかければわかることだろう

「初心者」から逃げてきたようなのできつめに言ってみたw
706デフォルトの名無しさん:2012/08/06(月) 23:19:11.64
なんか湧いていたw
って言いながらなんにも答えていないってのがわからないんだからしょうがないなw
707デフォルトの名無しさん:2012/08/06(月) 23:23:56.86
だって俺が書いたらそのコード動くもの
書かれていない部分が間違ってるとしか思えん
そんな部分に対してここが間違ってるよなんて、それこそエスパーじゃないと無理
708デフォルトの名無しさん:2012/08/06(月) 23:26:19.61
「だって」が何がだってかわからんw
同じ事言っているよーな
709デフォルトの名無しさん:2012/08/06(月) 23:49:58.29
レベルの低いプログラマに全米が泣いた
710デフォルトの名無しさん:2012/08/06(月) 23:52:05.79
Edit Scheme…
Run xxx
Diagnostics
Enable Zombie Objects
711デフォルトの名無しさん:2012/08/06(月) 23:55:55.31
つーか static analyzer でも使えばすぐにわかりそうなもんだが。
712デフォルトの名無しさん:2012/08/07(火) 00:01:33.04
array = [array objectAtIndex:0];
だと、static analyzer でも出ないようだけど。もちろんコンパイルのワーニングも
>>701 だとやりそうだけどw
713デフォルトの名無しさん:2012/08/07(火) 00:11:07.52
間違いなく、どこかで array に NSString 突っ込んでるんだろうな。
早く死ねばいいのに。
714デフォルトの名無しさん:2012/08/07(火) 00:13:56.69
>>713の頭の悪さも相当なものだな
715デフォルトの名無しさん:2012/08/07(火) 00:17:12.56
だから array = [ [ NSArray alloc] init ]; はいらないって言ってるだろう。
716デフォルトの名無しさん:2012/08/07(火) 00:22:31.19
704=706=708=714の必死さが凄いw
717デフォルトの名無しさん:2012/08/07(火) 00:25:56.11
>>716
すごいエスパー力だなw
>>702,705,706,708,712
だったんだけどな。スッキリしたか?まあお前が必死と思うなら必死でいいけど
すごいエスパー力なのはわかったから、もう出てこなくていいよw
718デフォルトの名無しさん:2012/08/07(火) 01:10:17.69
よかったな。
719デフォルトの名無しさん:2012/08/07(火) 01:35:02.41
>>717
ワロタw
自己申告は偉いけど必死すぎだろw
720デフォルトの名無しさん:2012/08/07(火) 02:05:15.54
>>719
こんなんで必死ってお前のその範囲ってえらいちっちゃいなあ
「偉い」とか言っちゃうんだからマジでちっちゃいんだろうなあw
721デフォルトの名無しさん:2012/08/07(火) 02:15:09.75
必死w
722デフォルトの名無しさん:2012/08/07(火) 03:25:55.14
objcが人の心を荒ませる言語だということはよーくわかった
723デフォルトの名無しさん:2012/08/07(火) 03:41:41.69
このスレ他の言語に比べると荒れてなくてよかったのに
やっぱ夏だからか
724デフォルトの名無しさん:2012/08/07(火) 04:05:16.05
だな。最近のは人(難癖つけたいの)目当てのばっかだからな
725デフォルトの名無しさん:2012/08/07(火) 08:11:25.82
スルーすればいいのになんでいちいちバカ丁寧に相手にするんだろう それも夏だからか?
726デフォルトの名無しさん:2012/08/07(火) 09:08:07.32
http://sarudeki.maiway.jp/forum/topic/150
釣られてるやつ多すぎw
しかも回答できないというww
727デフォルトの名無しさん:2012/08/07(火) 09:42:59.78
ここにいる誰も気に喰わない奴に対して回答する義務はない
728デフォルトの名無しさん:2012/08/07(火) 11:42:47.57
>>725
暇だからw暇だからちょっと相手してやるってぐらいだけどな
難癖つけたがりは過疎っている所に出やすいよなあ。そういうのでも小心者ってはっきりわかるんだけど
729デフォルトの名無しさん:2012/08/07(火) 12:27:13.02
夏だなぁ
730デフォルトの名無しさん:2012/08/07(火) 12:55:59.55
雑魚「夏だなぁ」
731デフォルトの名無しさん:2012/08/08(水) 10:58:27.51
>>701
NSArrayをretainすべし
732デフォルトの名無しさん:2012/08/08(水) 18:38:10.65
プログラムの基本的なことかもしれませんが質問させてください

現在、iPhoneのアプリを作成中です。
同じような処理をほぼ同時に(少し時間差をつけて)3つに分けて処理させてようと思っています
処理の過程で他のクラスで「3つの内のどの処理を行うか」という判断のフラグ処理で悩んでいます

スマートなプログラム書きたいんですがフラグの参照方法がこれぐらいしか思いつきません。
・グローバル変数に設定する
・引数で渡していく
isRecordingのように何かの状態を見て判断させる手もありますが、状態変化で判断する所もなさそうです

他のクラスの中でデータの削除->保存->参照というのをやっていくのでどうしても
「3つの内のどの処理を行うか」という判断が必要になります

なにかいい方法があれば教えてくださいm(__)m
733デフォルトの名無しさん:2012/08/08(水) 18:39:43.15
LEDをフラグ代わりにする
734732:2012/08/08(水) 18:44:41.33
すいません、少し修正です
> 同じようなデータをほぼ同時に(少し時間差をつけて)3つに分けて処理させてようと思っています

> 他のクラスの中でデータの削除->保存->参照というのをやっていくのでどうしても

3つのデータを「他のクラスの中でデータの保存->参照->削除」するためのフラグ処理です
説明がわかりにくくてすいません。。。
735デフォルトの名無しさん:2012/08/08(水) 18:59:03.30
LEDをフラグ代わりにする
736732:2012/08/08(水) 19:01:36.81
> 735

レスありがとうございます。
LEDをフラグ代わりというのはどういうことでしょうか???
フラッシュをピカピカ光らせるということですか???(^^;;
737デフォルトの名無しさん:2012/08/08(水) 19:04:06.94
質問してキーワード貰ったら最低でもググれよ
738デフォルトの名無しさん:2012/08/08(水) 19:11:04.35
>>732
> 説明がわかりにくくてすいません。。。
謝るまえに、もっと分かり易く説明してくれ。
何をしようとしているのか、いまいちよく分からないぞ。

で、これってマルチスレッドな話なのか?
スレッド1: 保存処理 -> 参照 -> 削除処理
スレッド2:  保存処理 -> 参照 -> 削除処理
スレッド2:   保存処理 -> 参照 -> 削除処理
こんな感じ?

それで、話に出て来る「他のクラス」って、いったいなんなの?
それから、ここでいう「データ」って何?
739732:2012/08/08(水) 19:23:12.62
>>737
一応ググったんですが普通にフラッシュの光らせ方しか出てこなかったもんで・・・
ソースコードも見てみましたけど、フラグに使えるんでしょうか?

>>738
ご指摘の通りマルチスレッドを使った1->2->3という処理です
「他のクラス」はマルチスレッドをスタートさせるところ以外のクラスです
「データ」は画像データです

740デフォルトの名無しさん:2012/08/08(水) 19:34:55.82
>>739
じゃあ、処理を3つに分けることと、フラグとの関係は?

@implementation OtherClass

- (void)threadProcess:(NSImage*)image
{
[self save:image];
[self reference:image];
[self delete:image];
}

@end

これじゃ、ダメなの?
741732:2012/08/08(水) 19:40:47.99
>>740
まぁ、それが引数で値を渡すっていう形になりますよね。
その先で色々と処理をしてて、ずっとその引数を渡していくというのが
ちょっとややこしいもんで・・・。
742デフォルトの名無しさん:2012/08/08(水) 19:49:47.65
>>741
別にインスタンス変数にしてもいいんだけど?

@intefface OtherClass : NSObject
@property(readwrite, strong) NSImage* image;
@end

@implementation OtherClass

- (id)initWithImage:(NSImage*)image
{
self = [super init];
if (self) {
_image = image;
}
return self;
}

- (void)threadProcess
{
[self save];
[self reference];
[self delete];
}

@end
743デフォルトの名無しさん:2012/08/08(水) 19:57:55.73
>>741
objc_setAssociatedObject しても良いよ
744732:2012/08/08(水) 19:58:11.73
>>742
続けてレスありがとうございます。
それがグローバル変数的なあつかいになるかと・・・

すいません、なんかケチをつけてるみたいで><
どうしてもその2つ以外の方法がないかと悩んでたので・・・
745732:2012/08/08(水) 20:02:50.35
>>743

objc_setAssociatedObject!これは使えそうです!

まだ軽くしか見てないんですが、最初にひもづけておけば後でもひもづいてる内容が
わかるということでしょうか?
746デフォルトの名無しさん:2012/08/08(水) 20:06:55.18
>>744
おまえの頭の中では、インスタンス変数 == グローバル変数なのかよ

「スマートなプログラム書きたいんです」とか言っているが、そもそも「スマート」の定義って何よ?

まあ、初心者が言う「スマートなプログラム書きたいんです」っていうのは、
「楽がしたい」「難しいことは考えたくない」「面倒はいや」という意思の表れなんだろうけどな
プログラムを書くことから逃げているようでは、立派なプログラマーにはなれないぞ
747デフォルトの名無しさん:2012/08/08(水) 20:10:42.34
>>745
おいおい、なんでインスタンス変数がダメで、AssociatedObjectがOKなんだよ
AssociatedObjectは、既存のオブジェクトにインスタンス変数を追加する用途で使うんだぞ
748デフォルトの名無しさん:2012/08/08(水) 20:13:24.78
>>747
そのクラスの全てにおいて必ずしも利用されない変数だからじゃね?
749732:2012/08/08(水) 20:17:08.66
>>746

グローバル変数というのは書き方が悪かったですが、ただでさえインスタンス変数が
多くなってきてるのに思いつくままに増やしたくはなかったもんで。
まぁ、それが「楽がしたい」「面倒はいや」ということですかね。。。
750デフォルトの名無しさん:2012/08/08(水) 20:48:35.81
>>749
あるクラスにインスタンス変数が多くなり過ぎるのは、クラスの設計が悪い。
一つのクラスに多くの仕事をさせすぎている証拠だ。
そのクラスを役割ごとに分割して整理しろ

結局のところ、その「インスタンス変数がダメ」とかいう話も、
そのクラスに定義されているインスタンス変数の数が少なければ問題なかった、ということなんだろ?
751732:2012/08/08(水) 20:53:52.85
>>750
なるほどですねー。確かにその通りです。
どこでクラスを分ければいいかわからないまま書いていって肥大化してました
インスタンス変数を減らすとか小手先でなんとかしようとしてました

まずはクラスの設計から見直してみます。
色々アドバイスありがとうございますm(__)m



ところでLEDをフラグ代わりにするというのは何だったんでしょうか・・・
752デフォルトの名無しさん:2012/08/08(水) 20:59:23.51
さあ……嫌がらせの釣りじゃない? > LED
753732:2012/08/08(水) 21:17:13.04
>>752

やっぱそうなんですかね。。。
754デフォルトの名無しさん:2012/08/09(木) 17:31:23.08
NSThread detachNewThreadSelectorでスレッドを起動するとき、起動の成功
と失敗を呼出し後すぐに判別する方法を教えてください。
detachNewThreadSelectorは戻り値がvoidなので、それ自体が成功なのか失敗
なのかが分からなくて。
755デフォルトの名無しさん:2012/08/09(木) 17:35:25.59
NSThreadはオワコン
756デフォルトの名無しさん:2012/08/09(木) 17:47:09.77
NSThreadはオワコン
757デフォルトの名無しさん:2012/08/09(木) 18:43:10.66
>>755,756
ありがとうございます。他にスレッドを使用する方法があったなんて!
NSInvocationOperationとNSOperationQueueで実装しました。
NSInvocationOperation initWithTargetからnil以外が返ってきたら、
NSOperationQueue addOperationすればスレッドの起動が失敗することは
ないと考えてよいですか?

因みに、オワコンの意味を調べたのは内緒です。
758デフォルトの名無しさん:2012/08/09(木) 18:54:55.52
終わりのないコンテクストの事だよ!
759デフォルトの名無しさん:2012/08/09(木) 20:56:50.87
>>757
> NSOperationQueue addOperationすればスレッドの起動が失敗することは
> ないと考えてよいですか?

NSOperationQueueは、スレッドと1対1で対応している訳ではないので、それは不明。

あと、あるスレッドでエラーが発生すると、スレッドが落ちることもある。
つまり、スレッドが起動成功しても直後にエラー落ちする可能性もある。

根本的に別の手段を考えた方がいいのでは?
760デフォルトの名無しさん:2012/08/09(木) 21:40:43.07
>>757
NSOperationQueue は同時に起動するスレッド(NSOperation)数はコア数に制限されているから、
スレッドの起動に失敗するということは全くといっていいほど考えられないのじゃないかなあ
761デフォルトの名無しさん:2012/08/09(木) 22:19:02.63
>>760
ん?
スレッド数に制限があることと、スレッドの起動に失敗しないこととの間に、いったいどんな関係が?
762デフォルトの名無しさん:2012/08/09(木) 22:21:17.62
>>761
スレッドの起動に失敗するのって逆にどういうの?リソースが足りないぐらいしか思いつかないんだけど
763デフォルトの名無しさん:2012/08/09(木) 22:45:31.67
>>762
> リソースが足りないぐらいしか思いつかないんだけど

リソースってようするにメモリのことだろ?
極端な話、CPUが2コアなので2スレッド生成しようとしたが、
ある一つのスレッドで大量のメモリを消費していたため、2スレッド目の生成に失敗した。
なんてこともあるわけだ。
スレッド数とリソース消費量との因果関係は、ほとんど説明できないんじゃないか?

あと、スレッドの起動に失敗するケースといえば、例えばスレッド起動ための引数に誤りがあった場合とか。
764デフォルトの名無しさん:2012/08/09(木) 22:50:28.36
>>763
う〜む、想定ではそうなりえるだろうけど、そんなプログラム書かないでしょ?あなたも
数スレッドも起動できないような状態でどうするの??メモリいっぱい喰うようなのが失敗したら、そりゃ失敗の対策を考えるけど、スレッドを起動すらできない状態でアプリ続けられるの?ていう。まあ繰り返すけどそんなプログラムなんて書かないけどw

>スレッド起動ための引数に誤りがあった
ええーっ。バグじゃないの?
765デフォルトの名無しさん:2012/08/09(木) 23:02:48.87
>>763
>スレッド数とリソース消費量との因果関係は、ほとんど説明できないんじゃないか
よくわからないけど、NSThreadは無制限にリソースの許す限りスレッドを起動できるよ。そういう意味で大きな違いがNSOperationQueueとはある
リソースって単にアロケーションするメモリだけじゃなくて、OS側の管理テーブルとかね
766デフォルトの名無しさん:2012/08/09(木) 23:18:27.10
>>764

別に極端にメモリを消費するプログラムを作るとか言う話をしている訳ではない。
スレッド数の制限と、スレッドの起動失敗は、無関係であることを説明しているだけだ。

765も言っているが、おそらくスレッドは無制限に生成できて、失敗はほぼないのだろう。
だから、スレッド数を制限したから起動に失敗しないとかいう話にはならない。
767デフォルトの名無しさん:2012/08/09(木) 23:24:11.21
>>765
すまん。764も765も俺
NSThreadは無制限にリソースの許す限りスレッドを起動できるので、いつか失敗する可能性はアリアリ
NSOperationQueueはコア数に制限されるのでアプリがまともの実行可能な環境であれば、失敗することは無いだろ
ってこと

まあ、全く咬み合わないので、おしまいにしよう
768デフォルトの名無しさん:2012/08/09(木) 23:45:31.85
コア数に制限されるっけ?
シングルコアのiPhone 4で1000個とか普通に動くぜ
769デフォルトの名無しさん:2012/08/09(木) 23:52:51.65
NSString* str = @"hoge";
unsigned long count = CFGetRetainCount((CFStringRef)str);
NSLog("str: %ld",count);
---
-> str: 2147483647

どゆことー?
770デフォルトの名無しさん:2012/08/09(木) 23:58:43.03
>>767
なぜ、話が噛み合ないのかが分かった。

プロセスの起動直後は、メインスレッド1つしかない。
NSOperationQueueを使用した時点で、コア数分のスレッドが生成される。

おまえは、このときNSOperationQueueが行うスレッドの生成処理が絶対に失敗しないことを前提に、
addOperationは失敗しないと言い張っていたんだろ?
771デフォルトの名無しさん:2012/08/10(金) 00:03:41.30
>>769
定数文字列は最初からテーブルに保存されてて、release されることはないと云うこと。
772デフォルトの名無しさん:2012/08/10(金) 00:15:06.96
あるキーつきのオブジェクトの配列があって、別途キーの配列があるとします。
オブジェクトの配列をキー配列の順序でソートしたく、下のように書いたのですが
indexOfObject:のたびに線形探索されていると思うとなんか上手くないなぁと思ってしまいます
もっと上手いやり方があるでしょうか?
NSArray *targetArray = @[ @{ @"object" : @"a", @"key" : @"c" }, @{ @"object" : @"b", @"key" : @"a" }, @{ @"object" : @"c", @"key" : @"b" }, @{ @"object" : @"d", @"key" : @"e" }, @{ @"object" : @"e", @"key" : @"d" }, ];
NSArray *keyArray = @[ @"a", @"b", @"c", @"d", @"e" ];
[targetArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%@ => %@", [obj objectForKey:@"key"], [obj objectForKey:@"object"]);
}];
NSArray *sortedArray = [targetArray sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
NSUInteger index1 = [keyArray indexOfObject:[obj1 objectForKey:@"key"]];
NSUInteger index2 = [keyArray indexOfObject:[obj2 objectForKey:@"key"]];
return [@(index1) compare:@(index2)];
}];
[sortedArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%@ => %@", [obj objectForKey:@"key"], [obj objectForKey:@"object"]);
}];
773デフォルトの名無しさん:2012/08/10(金) 00:29:48.78
>>772

keyArrayを
NSDictionary* keyMap = @{@"a":@0, @"b":@1, @"c":@2, @"d":@3, @e:@4];
に変換してしまうのはどう?
774デフォルトの名無しさん:2012/08/10(金) 00:39:50.14
>>772
線型探索が嫌なら、sortedArray の object/index を、NSDictionary の key/value にすればいいじゃん。
775デフォルトの名無しさん:2012/08/10(金) 01:33:28.92
ありがとうございます。こうなりました。(NSArrayのカテゴリ)
- (NSArray *)sortedArrayUsingKeyPresentationBlock:(id (^)(id obj))keyPresentationBlock withKeyArray:(NSArray *)keyArray {
NSMutableDictionary *metaDictionary = [[NSMutableDictionary alloc] init];
NSMutableArray *resultArray = [[NSMutableArray alloc] init];
NSUInteger __block cachedMark = 0;
NSUInteger count = [self count];
[keyArray enumerateObjectsUsingBlock:^(id key, NSUInteger idx, BOOL *stop) {
id obj = [metaDictionary objectForKey:key];
if (obj == nil) {
for (; cachedMark<count && obj==nil; cachedMark++) {
id aObj = [self objectAtIndex:cachedMark];
id aKey = keyPresentationBlock(aObj);
[metaDictionary setObject:aObj forKey:aKey];
if ([aKey isEqual:key]) {
obj = aObj;
}
}
}
if (obj != nil) {
[resultArray addObject:obj];
}
}];
return [resultArray copy];
}
デジタルソートなので多分速いはず・・・
776デフォルトの名無しさん:2012/08/10(金) 07:35:36.88
>>769
Constant CFStringはコンパイル時に直接オブジェクトの構造を展開する。
これに対するretain/release等はNOP、retain countにも意味は無い。
>>771
それは10年前の話。
777デフォルトの名無しさん:2012/08/10(金) 10:00:28.27
754です。
スレッド起動に関する議論、参考になります。
スレッドが動き出せたのかどうかを知るのって、重要だとおもうんですよ。
議論を読んでいると、NSOperationQueueですら確実に実行できているとは
限らないと読めるんですが、皆さんがスレッド使うプログラムを作るとき
は、結局どう判定してるの?動くこと前提にしちゃうんでしょうか。

>>759
>根本的に別の手段を考えた方がいいのでは?

ということで、オワコンと言われているNSThreadに戻ってきました。
NSThread initWithTargetで、nil以外が受け取れたならばスレッドは起動
出来ると判断して、NSThread startを呼ぶようにしました。
こんな感じですが、どうでしょうか。

NSThread* th = nil;
th = [[NSThread alloc]initWithTarget:self selector:@selector(threadFunc) object:nil];
if(th)
[th start];
else
return false; // エラー
778デフォルトの名無しさん:2012/08/10(金) 10:12:19.01
NSOperationQueueが動かないって、
さすがにそこまでヘボいAPIじゃねーだろ。
779デフォルトの名無しさん:2012/08/10(金) 10:19:07.17
>>777
考えすぎじゃね・・・?
ポストに入れた郵便物がたまたまポスト内でどこかに引っかかって配達員に回収されず届かないのを心配するようなものだと思う。
780デフォルトの名無しさん:2012/08/10(金) 10:36:24.07
>>777
NSOperationQueueにしてもGCDにしてもthread poolに要求投げる処理方式だから
threadの生成タイミングと処理要求タイミングは直接関係無いよ。
そんなにthreadが起こせたか気になるならpthreads使って自分でthread作れば良い。
781デフォルトの名無しさん:2012/08/10(金) 10:38:55.89
スレッドで実行する処理の最初にNSConditionをsignalするようにしといて、
起動元ではそれを時間制限付きで待機。1時間してsignalされなければ谷へ帰りなさい!
782デフォルトの名無しさん:2012/08/10(金) 12:54:01.77
考えすぎですかね?
781の方法も参考に、やってみます。
ありがとうございました!
783デフォルトの名無しさん:2012/08/10(金) 21:16:13.01
>>777
そのコードはちょっと違うだろ。
それだと、単純にinit...メソッドの引数に誤りがあった、という話になる。
チェックしたいのは本当にそこなのか?

NSThread* th = nil;
th = [[NSThread alloc]initWithTarget:self selector:@selector(threadFunc) object:nil];
[th start];
if ([th isExecuting]) {
// たぶん起動成功
}
else {
// たぶん起動失敗
}

あえてやるなら、こうじゃないのか?

で、結局のところいったい何を問題にしてるんだ?
1. スレッドは正常に処理を完了した。
2. スレッドは起動できなかった。
3. スレッドは起動できたが処理を完了できなかった。
この3つのケースで処理を分けたいのか?
それとも、
1. スレッドは正常に処理を完了した。
2. スレッドは正常に処理を完了できなかった。
この2つのケースで処理を分けたいのか?

もしも、後者ならスレッドの終了を確認しなければならない。
スレッドの起動を確認しても無意味だよ。
784デフォルトの名無しさん:2012/08/10(金) 22:13:05.48
>>775

それだと、selfの中に同じキーが複数あると破綻しそうだが...

selfよりも、keyArrayの方をNSDictionaryに詰め直した方がいいんじゃないのか?
785デフォルトの名無しさん:2012/08/13(月) 11:37:54.98
>>783
ありがとうございます。
確認したいのは、スレッドが正常に処理を開始した。です。
スレッドの処理が正常終了なのかエラー終了なのかは、インスタンス変数
的なもので確認するので気にしていません。
今回作るスレッドは、同時に1つだけで、親スレッドは中止ボタンのクリッ
クなどを受け持つようにしています。

教えていただいた、isExecutingでも判定するようにしてみます!
786デフォルトの名無しさん:2012/08/13(月) 20:52:37.75
>>785
もしかして、スレッドの開始を確認したいっていうのは、
その「中止ボタン(NSButton)」のenableとdisableを切り替えたいから、とか?
787デフォルトの名無しさん:2012/08/14(火) 08:59:59.68
>>786
そんな感じです。
実行開始できてないのに、「中止」ボタンが押せるのも変なので。
サブスレッド側で切り替えるようにすればいいだけかもしれませんが。
昨日、サブスレッドでUIをいじるためのdispatch_syncを学習しました。
788デフォルトの名無しさん:2012/08/14(火) 12:30:08.42
「いじるための」はおかしな表現でした、スマソ。
サブスレッドから単純にUIを操作すると例外が発生するので、メインスレッド
にUI処理を委譲させるようにするために、dispatch_syncを使用する方法を
学習しました、です。
789デフォルトの名無しさん:2012/08/21(火) 08:23:48.95
Xcode 4.4.1 cocos2d 1.0.1 使ってるんですが
配列に画像を読み込ませて、それをランダムに一枚ずつ画面に表示させ、
フリックすると画像が切り替わるプログラムを作りたいんですが、どんなふうに書けばいいですかね・・・

allImage = [[CCArray alloc] initWithNSArray:
[[[NSArray alloc] initWithObjects:
...,nil] autorelease]];

ImageRandomIndex = arc4random() % [allImage count];
NSString *flick = [allImage objectAtIndex:ImageRandomIndex];
flickImage = [CCSprite spriteWithFile:@"%@",flick];
こんな感じで実行してみましたが[Too many arguments to method call,expected 1, have 2]とエラーがでます・・・
790デフォルトの名無しさん:2012/08/21(火) 08:52:14.97
> flickImage = [CCSprite spriteWithFile:@"%@",flick];
> @"%@",flick

ふざけてんの?
791デフォルトの名無しさん:2012/08/21(火) 08:53:10.91
なにが?
792デフォルトの名無しさん:2012/08/21(火) 14:07:44.98
エラーのまんまだろ
引数が多いぞボケって言われてるんだよ
793デフォルトの名無しさん:2012/08/21(火) 14:30:12.65
今まで、iPhoneをMACにつなぐと、XCodeの左上のプルダウンに
「〜のiPhone」というのが出てきて選択できたんだが、
それが「iOS Device」となってしまって、実機でデバッグができない。

iPhoneをiOS4からiOS5にバージョンアップしたことが原因かもしれないが、
なんか解決方法ない?
794デフォルトの名無しさん:2012/08/21(火) 14:41:06.56
Xcodeが古いとか
795デフォルトの名無しさん:2012/08/21(火) 14:56:32.58
デバイスサポートがない(Xcodeが古い、サポートプラグインがインストールされていない)
あとスレチ
796デフォルトの名無しさん:2012/08/22(水) 19:43:33.13
@"%@",flickwwwwwwwwwwwwwwwwww
797デフォルトの名無しさん:2012/08/23(木) 12:26:53.18
次のメソッドを書いたら、InstrumentsでstringWithFormatの行でリークが検出されてしまいました。
なぜリークになってしまうのでしょうか?どなたかヒントいただけませんか?
Xcode Version4.3.3 Instruments version 4.3

-(NSString*)urlWithUrl:(NSString*)urlString
{
NSArray* urlComponents = [urlString pathComponents];
NSString* resultUrlString = [NSString stringWithFormat:@"%@//%@/%@/",
[urlComponents objectAtIndex:0],
[urlComponents objectAtIndex:1],
[urlComponents objectAtIndex:3]
];
return resultUrlString;
}
798デフォルトの名無しさん:2012/08/23(木) 21:07:02.77
リークなのか
インデックス範囲外なら出そうな雰囲気だが
799デフォルトの名無しさん:2012/08/23(木) 21:14:18.22
>>797
Analyze はやった?
800デフォルトの名無しさん:2012/08/23(木) 23:14:23.13
Insutrumentsが報告するのは最終的にリークになったオブジェクトだから
そこで生成された後にどう触ってるかも含めて見て行かないと
どこでリークしてるかなんてわからないと思う
リファレンスカウントの履歴をちゃんと調べなさい
801デフォルトの名無しさん:2012/08/25(土) 13:09:02.30
Ubuntu12.04 で Objective-C 版の Swarm と言うライブラリをインストールするにはどうすればいいんですか

http://www.swarm.org/index.php/Swarm:_software_main_page
802デフォルトの名無しさん:2012/08/26(日) 18:38:47.40
ウブンチューwww
803デフォルトの名無しさん:2012/08/26(日) 18:50:16.76
>>801
Ubuntu Swarm
なり
GNUstep Swarm
でググれば答えらしきものはあるけど。どれだけどこまで自分でやったの?
804デフォルトの名無しさん:2012/09/03(月) 16:29:55.02
Windows の ソース(C言語)を読みこませるとエラーが出るんですけど
どうしてですか?
805デフォルトの名無しさん:2012/09/03(月) 16:57:32.71
エラー内容見ないとわからんね
806デフォルトの名無しさん:2012/09/03(月) 17:27:26.09
>>805
どうして起動できないか教えて?
807デフォルトの名無しさん:2012/09/03(月) 19:15:50.68
何が起動できないのか教えて?
808デフォルトの名無しさん:2012/09/03(月) 19:24:11.29
どんなソース読み込ませたのか教えて?
809デフォルトの名無しさん:2012/09/03(月) 20:40:12.09
そりゃあwindowsのソースなんだろう。
Microsoftの人に違いない。
810デフォルトの名無しさん:2012/09/05(水) 22:12:09.09
Excelってソースあるのかねぇ?
いいかげん拡大縮小や印刷で文字の大きさ変わるバグ治してほしいわ
811デフォルトの名無しさん:2012/09/05(水) 23:07:26.03
WISYWIG
812デフォルトの名無しさん:2012/09/06(木) 00:29:12.79
WYSIWYG
813デフォルトの名無しさん:2012/09/07(金) 22:45:57.04
->でのインスタンス変数へのアクセスって出来なくなりました?
selfじゃない同じクラスのインスタンスのreadonlyなプロパティにsynthesizeされている変数にアクセスするために->使おうと思ったんですが構造体でも共用体でもねーぞって怒られます
814デフォルトの名無しさん:2012/09/07(金) 23:15:29.20
俺は4.3.2だから分からんけど、そんなわけ無いと思うが。
815デフォルトの名無しさん:2012/09/07(金) 23:35:03.20
->はできなくなった希ガス
816デフォルトの名無しさん:2012/09/07(金) 23:50:12.84
まじで? 強制的にアクセサ経由ってこと?
817デフォルトの名無しさん:2012/09/07(金) 23:51:25.09
あ、でもプロパティの場合だけだよね。
818デフォルトの名無しさん:2012/09/08(土) 00:03:35.02
と思ったら今やり直したら出来ました
型があってなくて文句言われてたかも知れません
(渡されるオブジェクトは同じクラスのはずだけど型が多分スーパークラスの型だったせい)
お騒がせしました
819デフォルトの名無しさん:2012/09/08(土) 00:49:58.73
絶対にゆ
820デフォルトの名無しさん:2012/09/08(土) 01:03:37.25
絶対にゆがいてやるこのとうきび野郎
821デフォルトの名無しさん:2012/09/09(日) 12:29:25.59
いやとうきびは蒸すのが一番うまいだろ
822デフォルトの名無しさん:2012/09/09(日) 14:08:05.31
焼きだろ
823デフォルトの名無しさん:2012/09/10(月) 00:22:32.82
誰かMacアプリのgui作る時役立つサイトしらない?英語のリファレンス読むの面倒い
824デフォルトの名無しさん:2012/09/10(月) 11:42:24.31
私の声がデムパになって
波になってあなたへ向かってく
私の歌がデムパになって
波になってあなたへ響いてく
私の愛がデムパになって
波になってあなたへ届いてく
私の電子回路が短絡する前に
Electric LOVE Electric LOVE
(∩ ゚д゚) アーアー
この気持ちあなたに届くかな
825デフォルトの名無しさん:2012/09/10(月) 12:37:24.17
>>823
英語のリファレンス読めなきゃ日本語のリファレンス読めば良いじゃない
公式のが出てるだろ
826デフォルトの名無しさん:2012/09/10(月) 13:08:18.50
え?NSBttonとか日本語リファあんの?
827デフォルトの名無しさん:2012/09/11(火) 00:08:41.89
そのレベルじゃソフト組むのは無理だろ
828デフォルトの名無しさん:2012/09/11(火) 00:55:02.04
英語リファをググる翻訳にかけながらプロパティ、メソッド、デリゲートの効果一生懸命調べてんだが問題はわしがIB使わない派で公式のサンプルコードがIB使いまくってるから非常に困るんじゃ
わしは手書きで書きたいんじゃ
829デフォルトの名無しさん:2012/09/11(火) 01:09:30.24
翻訳つかいながらそんだけ真剣に読んでたら、だんだん翻訳使う頻度減ってくるだろ。
830デフォルトの名無しさん:2012/09/11(火) 01:26:16.87
翻訳使っている限り、前には進めない
TOEIC520しかない俺でも、若干怪しい部分がたまにあるがだいたい訳せる
翻訳に逃げず、自らの脚で歩み始めたとき、道は拓ける
831デフォルトの名無しさん:2012/09/11(火) 01:44:22.27
だんだん翻訳するのが面倒になって、直に読むようになるだろって事。
832デフォルトの名無しさん:2012/09/11(火) 01:47:00.09
むしろ、中学生レベルの文法と技術単語なだけなんだから
機械翻訳なんかかけたら単語の意味おかしいgdgdの訳が出てくるだろ。
素で読んだ方が速いって。
833デフォルトの名無しさん:2012/09/11(火) 07:22:03.00
馬鹿はアルファベットすら満足に読み書き出来んの
834デフォルトの名無しさん:2012/09/11(火) 07:53:08.64
小学生ですら英語できる時代だぞ
835デフォルトの名無しさん:2012/09/11(火) 15:29:14.26
英語勉強するか、、しかしめんどくさい、、、、
836デフォルトの名無しさん:2012/09/11(火) 17:38:53.99
大学入試やってればどんなF欄だろうがリファレンス読むのに困ることは無いだろう
中高生はアプリなんか作ってる暇があったら勉強しなさい
837デフォルトの名無しさん:2012/09/11(火) 18:44:23.31
大学進学率は日本は異様に高くて
なんと30%も!と聞いたが。
838デフォルトの名無しさん:2012/09/11(火) 18:59:05.62
原文表示の機械翻訳で困ったこと無い
839デフォルトの名無しさん:2012/09/11(火) 19:23:56.63
>>828
そんな所にこだわるから組めないんだよw
840デフォルトの名無しさん:2012/09/11(火) 20:28:11.04
>>828
IBを使わないことに、何かメリットがあるの?
841デフォルトの名無しさん:2012/09/11(火) 20:30:08.07
>>840
objcを使う前にcを勉強する感じ?
842デフォルトの名無しさん:2012/09/11(火) 20:37:45.05
IB使って色々作って理解を深めた方が、
IB使わないで書けるようになるのも速いような気がする。
それが素晴らしいかどうかは知らんけど。
843デフォルトの名無しさん:2012/09/11(火) 21:05:48.78
>>841
それは、つまり、IBは敷居が高い。ということなのか
844デフォルトの名無しさん:2012/09/11(火) 21:26:27.10
俺は未だにテーブルビューをIB使って書けないから全部コーディングっていう
845デフォルトの名無しさん:2012/09/11(火) 21:37:04.84
最近気づいたのだが、IBで配置したNSScrollViewとコードで生成したNSScrollViewの動作が微妙に違う。
旧で配置したNSScrollViewは、スクロールバーを”なし”に設定しても、マジックマウスのジェスチャーでスクロールできるのだが、
[[NSScrollView alloc] initWithFrame:...]した方は、スクロールバーを”なし”にすると、マジックマウスのジェスチャーでもスクロールできない。
846デフォルトの名無しさん:2012/09/12(水) 02:45:27.41
phpしか書けないバカだけど
iPhoneアプリ作りたい。
Macはある。
マウンテンライオンにエックスコードは挿れた
オススメのサイトや本を教えてください。
847デフォルトの名無しさん:2012/09/12(水) 06:16:16.08
荻原
848デフォルトの名無しさん:2012/09/12(水) 10:20:55.25
ひれがすの原著をkindleでタダ見
849デフォルトの名無しさん:2012/09/12(水) 12:32:25.60
PHPとかできるんだったら、いっそのことネイティブアプリじゃなくてWebアプリでもいい気がするけどね。
850デフォルトの名無しさん:2012/09/12(水) 17:18:05.22
クラス間で変数受け渡しする方法教えてください
ぐぐってもわからん
851デフォルトの名無しさん:2012/09/12(水) 17:28:22.71
一方からもう一方に直接渡す。
双方から見える場所を経由する。
852デフォルトの名無しさん:2012/09/12(水) 17:29:14.44
一方は2chに書き込む
もう一方は2chを読み込む
853デフォルトの名無しさん:2012/09/12(水) 17:31:37.66
インスタンス変数の受け渡しでぐぐれば沢山あるぞ。
854デフォルトの名無しさん:2012/09/12(水) 17:31:42.18
>>851
一度第三のクラス経由するってこと?
855デフォルトの名無しさん:2012/09/12(水) 17:36:27.83
この質問、最近見なくなったなと思ったらw
その場合クラスじゃなくてインスタンスな。
856デフォルトの名無しさん:2012/09/12(水) 17:38:53.31
× クラス間で変数受け渡しする方法教えてください
○ インスタンス間でインスタンス変数の値を受け渡しする方法教えて下さい><
857デフォルトの名無しさん:2012/09/12(水) 17:41:13.47
>>854
オブジェクトでもメモリでもファイルでもインターネットの向こう側でも、都合の良い場所を

ていうか直接渡せばいいでしょ
858デフォルトの名無しさん:2012/09/12(水) 17:43:26.01
なんとなくわかりました
ありがとうございます
859デフォルトの名無しさん:2012/09/12(水) 23:17:50.21
初歩の初歩だぞ、それくらい自力でなんとか出来なきゃ先生きのこだ
860デフォルトの名無しさん:2012/09/13(木) 13:03:17.47
俺高卒のヒキニートだけど英語のドキュメントで困ってないぞ
861デフォルトの名無しさん:2012/09/13(木) 13:57:38.89
@autoreleasepoolについて質問なのですが(ARCありで)、
上のコードはstringのメモリがループするごとに確保→開放されて
下のコードだと100個分のstringがfuncを抜けるタイミングで開放
されるという理解でいいんでしょうか?

- (void)func
{
 for(int i = 0; i < 100; i++) {
  @autoreleasepool {
   NSMutableString *string = [NSMutableString string];
   [string appendString:@"test"];
  }
 }
}

- (void)func
{
 for(int i = 0; i < 100; i++) {
  NSMutableString *string = [NSMutableString string];
  [string appendString:@"test"];
 }
}
862デフォルトの名無しさん:2012/09/13(木) 14:15:36.91
だいたいそうだけど、正確にはfuncを抜けるタイミングではない。
あと上はすごく無駄だと思う。
863デフォルトの名無しさん:2012/09/13(木) 18:32:13.74
つiBooks
意外とドキュメントが充実していたりする
864デフォルトの名無しさん:2012/09/13(木) 20:34:56.20
>>861
下のコードには、@autoreleasepoolがどこにも書いてないので、どのタイミングで解放されるかは分からない。
865デフォルトの名無しさん:2012/09/14(金) 09:51:27.50
alpha=0.0;とhidden=YESって動きにどれくらい差があるもんなんでしょうか?
866デフォルトの名無しさん:2012/09/14(金) 12:55:46.01
>>864
わからなくはないだろう
867デフォルトの名無しさん:2012/09/14(金) 13:19:50.80
funcがどういう環境の中で動いてるのか書いてないんだから、わからないだろ。
868デフォルトの名無しさん:2012/09/14(金) 14:28:32.13
for分の中で宣言したんだから、iがインクリメントされる度にいらなくなるよね。
869デフォルトの名無しさん:2012/09/14(金) 14:46:59.23
要らなくなる=解放される ではない。少なくともObjective-Cの世界では。
870デフォルトの名無しさん:2012/09/14(金) 15:19:07.98
簡易コンストラクタか。ということはデフォルトのautoreleasePoolにスタックされるのかな。
アプリ終了まで非使用領域に残り続けるってことで合ってる?
871デフォルトの名無しさん:2012/09/14(金) 17:39:26.68
>>867,870
「最も内側のautorelease poolがdrainされるタイミングで解放される」
「autorelease poolが全く存在しない場合はリークする」


ちなみにcallerとcalleeがARCでbuildされている場合には
forのスコープを抜ける毎に解放されるが、
これはコンパイラおよびランタイムによる最適化であって言語仕様ではないので、
必ずしもそうであるという保証はない。
872デフォルトの名無しさん:2012/09/14(金) 19:37:56.38
英語リファ読むの思ったより楽だけど所々解釈出来ないとこがあるべよ
それが自分のプログラミングレベルの問題なのか英語をちゃんと読めてないのかわからないのが困る
873デフォルトの名無しさん:2012/09/14(金) 20:02:35.95
きっと両方
874デフォルトの名無しさん:2012/09/14(金) 20:08:55.74
単純な英語も読めないという人は文章把握能力や推理能力の不足に
依る場合も多いから、実は日本語もうまく読み取れていない。
875デフォルトの名無しさん:2012/09/14(金) 20:59:17.39
試しにNSButtonはどおですかねん??全部理解可能??
876デフォルトの名無しさん:2012/09/14(金) 21:17:22.13
わからないとこをここで訊いてみればいいじゃん。
877デフォルトの名無しさん:2012/09/14(金) 21:29:25.56
NSButtonはalternateTitleとattributedTitle。。
と言っても後者はNSAttributdString調べてないからどっちにしろ理解出来んかもしれんけど
878デフォルトの名無しさん:2012/09/15(土) 22:12:02.24
問題出した途端、急にレスが途絶えたな
879デフォルトの名無しさん:2012/09/15(土) 23:03:25.41
問題とは?
880デフォルトの名無しさん:2012/09/15(土) 23:16:20.30
881デフォルトの名無しさん:2012/09/15(土) 23:23:21.75
「NSButtonはalternateTitleとattributedTitle??」
882デフォルトの名無しさん:2012/09/15(土) 23:29:14.65
>>881
872から読んでくれ。てかお前らちゃんと駐在してるのな。。
883デフォルトの名無しさん:2012/09/16(日) 00:33:25.98
NSButtonの挙動なんてInterface Builderでシミュレートするだけで解るだろ。
インスペクタでalternateTitleやらボタンタイプやら変えて動かしてみ。
ドキュメント以前の問題。
884デフォルトの名無しさん:2012/09/16(日) 01:05:21.43
>>883
ですな。。IB弄ってさっきalterateTitleは解決です(attributedTitleはまだ)。IBがGUIの教材になるのは今回いい勉強になったどす。
しかし本題の英語はさっぱりだのう。。。インスタンスの内容が大まかに分かった後でもその英文の説明文の意味はさっぱり。。。。。
ちなみにこれ↓
Sets the title that appears on the button when it’s in its alternate state.
885デフォルトの名無しさん:2012/09/16(日) 01:22:27.85
ボタンがalternateステートの時表示するタイトルをセットする。
886デフォルトの名無しさん:2012/09/16(日) 09:49:26.59
label.text = @"%d",変数;
でエラーがでます。
対処法わかりますか?
887デフォルトの名無しさん:2012/09/16(日) 09:56:58.11
ワロタ
888デフォルトの名無しさん:2012/09/16(日) 13:12:42.10
>label.text = @"%d",変数;

label.text = 変数;

こうしてるのとほぼ同じ。
889デフォルトの名無しさん:2012/09/16(日) 16:25:54.70
>>886
お前 >>789 だろ
890デフォルトの名無しさん:2012/09/16(日) 16:46:23.30
気持ちはわかるw
891デフォルトの名無しさん:2012/09/17(月) 00:10:39.01
>>886
オモロー
892デフォルトの名無しさん:2012/09/17(月) 18:45:10.89
C言語やらずにC++やobj-Cやるやつが多いよな
893デフォルトの名無しさん:2012/09/17(月) 19:27:27.05
多いはずはないんだが、この惨状を見ると、少なからずいるようだな。
894デフォルトの名無しさん:2012/09/17(月) 19:57:00.46
実際のところ、基本的な文法とポインタと構造体さえちゃんと理解していれば、C言語を隅々まで理解してなくても十分じゃないだろうか?
共用体とかあるらしいが使ったことない。
895デフォルトの名無しさん:2012/09/17(月) 19:57:58.71
ていうか、いきなりC++なりobjcなりやってもC身に付くよね普通。
896デフォルトの名無しさん:2012/09/17(月) 20:21:49.63
普通普通
897デフォルトの名無しさん:2012/09/17(月) 20:27:04.64
>>893
多いじゃろう。iPhoneアプリを作ろうとしたプログラミング初心者はいっぱい

わしです
898デフォルトの名無しさん:2012/09/18(火) 02:22:02.51
大学で囓ったCがK&Rと90あたりの過渡期だったので
ポインタを宣言するという概念がなくて
hoge(hage*) <-この後ろアスタリスクなんだろう?Obj-C特有の記法かな?
と思ってました…
899デフォルトの名無しさん:2012/09/18(火) 10:56:55.87
>>895
だな
C++からだったけど構文上のごく一部の非互換を調べた程度で
後は別にCのソースいじるのに支障なかった

Obj-Cに至ってはCと完全互換だしな
900デフォルトの名無しさん:2012/09/19(水) 01:25:34.27
前にNSButtonと翻訳で騒いでたもんだが相変わらずリファの翻訳意味わかんねーよ。。。NSWindowメソッド大杉だろう
901デフォルトの名無しさん:2012/09/19(水) 09:39:12.65
cやってないとstringWithFormatですら戸惑うのではないだろうか
902デフォルトの名無しさん:2012/09/19(水) 10:39:18.68
まあ printf の書式が前提だからなあ。
903デフォルトの名無しさん:2012/09/19(水) 21:02:59.00
日に日に自作コードスニペットと関数マクロ
複数行マクロ、カテゴリ拡張が増えて行って
他の環境で組める気がしない・・・
904デフォルトの名無しさん:2012/09/19(水) 23:17:17.92
>>903
それもいずれdeprecatedになってくんだよな
905デフォルトの名無しさん:2012/09/26(水) 14:06:57.21
TWRequestで送ったTweetのsourceが<a href="http://apple.com">iOS</a>になるのどうにかならないの?
クライアントの名前がiOSとかキモイんだが
906デフォルトの名無しさん:2012/09/26(水) 15:23:27.08
iOS スレで書いてくれ。
907デフォルトの名無しさん:2012/09/26(水) 17:30:45.02
iOSの機能でブラウザなりアプリが無いのだからいいんじゃないの
そんな細かいことをキモイと言う程デキやつなら、NSURLConnection/NSURLRequestで自分でTwitter API実装すればいいじゃん。そうであれば>>906も聞いてくれるかもねw

まあ、些細なことに拘るけどデキもしないやつなんだろうけど
908デフォルトの名無しさん:2012/09/30(日) 10:03:33.99
脱獄アプリを作りたいんだけど、windows上だと開発は無理かな?
スレチだったらすまん
909デフォルトの名無しさん:2012/09/30(日) 13:32:28.93
スレチ
910デフォルトの名無しさん:2012/10/01(月) 03:03:44.55
本屋行ったらObjective-Cのヒレガス本が出てたけど
正直萩原本のほうがいいな。タイミングのせいかARC対応してないし
iOSのほうの原著版は書き直したらしいけど
萩原本とUIKit詳解(を最新に書き直し)は
英訳したら海外でも売れそうな気がする
911デフォルトの名無しさん:2012/10/01(月) 12:32:08.12
>>910
Uikit詳解は今でも使える名本やで
912デフォルトの名無しさん:2012/10/01(月) 15:26:48.87
漫画カメラのフレーム選択画面みたく、
画像を一覧表示、選択、背景に設定ってどうすればできるんでしょう;ー;
初心者ですが簡単な手順だけでも教えていただきたいです
913デフォルトの名無しさん:2012/10/01(月) 20:31:02.61
パクリアプリでも作るつもりですか
914デフォルトの名無しさん:2012/10/02(火) 10:47:46.38
スクロールビューにイメージビュー並べるとか
915デフォルトの名無しさん:2012/10/02(火) 20:25:25.53
http://libro.tuyano.com/index3?id=550001&page=4
「クラスを更に考える」(4/8)について、まるで
わかりません・・・。

@implementation SuperMyTestClass
+(MyTestClass*)superMyTestClassWithMessage:(NSString*) str
andMessage2:(NSString*) str2 {
id obj = [super myTestClassWithMessage:str];
[obj setMessage2:str2];
return obj;
}

-(void)setMessage2:(NSString*) str
{ message2 = str;
}
・・・・

このコンビニエンスコンストラクタですが、
スーパークラスとしてのコンストラクタなので、
戻り値は MyTestClass 型ではなくSuperMyTestClass型の
ではないのでしょうか?
コンストラクタ内記載のobjは、MyTestClass型なのに、
なぜ、スーパクラス側の[obj setMessage2:str2];が
動作するのでしょうか・・・?

初心者の質問でしたらすみませんが、
どなたか教えてください。
916デフォルトの名無しさん:2012/10/02(火) 21:37:03.67
>>915
書いてある返り値の型なんか関係なく、クラスAとしてalloc+initされたら、クラスBとして返されようがクラスAのオブジェクト。
Aのメソッドにはrespondするが、Bのメソッドにはrespondしないので、クラスBはクラスAのスーパークラスでなければならない。
ちなみに、返り値として返すとき、特にサブクラスでオーバーライドされる可能性のあるメソッドは、クラス名ではなくてid型を指定するのが定石。
917デフォルトの名無しさん:2012/10/03(水) 04:25:54.66
いまどきはidじゃなくてinstancetype
ですよ
918デフォルトの名無しさん:2012/10/03(水) 05:28:56.59
ありがとうございます。

そう思って見ても、4行目
obj = [super myTestClassWithMessage:str]と、
スーパークラスのオブジェクトで作ったのに、
5行目の[obj setMessage2:str2]で、スーパクラスでない
自分のクラス側のメソッドにはrespondするのかが
まったくわからんのです・・・
919デフォルトの名無しさん:2012/10/03(水) 05:52:20.47
仕様です
920デフォルトの名無しさん:2012/10/03(水) 09:12:35.77
[self ...]と[super ...]は基本的にはメソッド実装の検索の起点が違うだけで、
メッセージが送られる先のオブジェクト(今の場合はSuperMyTestClassクラスオブジェクト)は同じだから。
「スーパークラスのオブジェクトで作った」のではなく、スーパークラスの「メソッド実装」を自分のクラスに対して呼び出した。
921デフォルトの名無しさん:2012/10/03(水) 12:21:59.17
>>918
MyTestClass の myTestClassWithMessage で [self alloc] しているから。そこが [MyTestClass alloc] だったら、言う通り スーパークラス= MyTestClass のインスタンスにしかならないが、[self alloc] なので self=呼ばれたクラス のインスタンスになる。

@interface MyClass : NSObject
+ (void)printSelfClass;
@end

@implementatio MyClass
+ (void)printSelfClass { NSLog( @"%@", NSStringFromClass( self ) ); }
@end

@interface MySubClass : MyClass
@end

@implementatio MySubClass
+ (void)printSelfClass { [super printSelfClass] }
@end

[MyClass printSelfClass];
[MySubClass printSelfClass];

とすると、self を NSLog しているのは、MyClass でだけど、ちゃんとクラスが違うでしょ
922デフォルトの名無しさん:2012/10/03(水) 12:30:48.24
>>921
@implementatio MySubClass
+ (void)printSelfClass { [super printSelfClass] }
@end
の、
+ (void)printSelfClass { [super printSelfClass] }
が無くて直接 MyClass のを [MySubClass printSelfClass] としても同じ。たぶん
923デフォルトの名無しさん:2012/10/03(水) 12:48:43.30
>>917
こいうのがあるから、いまどきも id なんだと思うけど
MySubClass のインスタンスを MyClass の変数に格納するのはいたって普通だが、MyClass のインスタンスを MySubClass の変数に格納するのはなんだか気持ち悪いじゃんということで
まあ、どっちにしろ実質的な気持ち悪さはあんまり変わらないんだけど
924デフォルトの名無しさん:2012/10/03(水) 19:35:21.89
なんというか、本当はMyTestClassのサブクラスなのに、SuperMyTestClassという名前が付いてるあたりがキモいな。
925デフォルトの名無しさん:2012/10/03(水) 20:05:11.49
超同意。
926デフォルトの名無しさん:2012/10/03(水) 22:24:40.29
画像を表示し、フレームを超える画像サイズの場合は縮小ではなく、
スクロールバーをだす機能を作りたいと考えています。
IBにてNSScrollViewを配置し、IdentityタブでScrollView内のNSViewのクラスをNSImageViewに変更し、
Outletとして登録、setImageで画像を設定するのですが何も表示されません。
Imageメソッドで取得しても(null)になっているので設定ができていないようです。
NSScrollViewではなく直接NSImageViewを配置した場合は表示できているのですが。
どう設定すれば機能を実現できるでしょうか?
927デフォルトの名無しさん:2012/10/03(水) 23:23:29.49
>>926
NSImageViewを配置した後に、メニューから「Embed in」を選ぶ。
928デフォルトの名無しさん:2012/10/04(木) 00:24:19.76
915、918です。

>>916
>>920
ありがとうございます。ようやく意味がわかりました。「スーパークラスのオブジェクトで作った」のではなく、スーパークラスの「メソッド実装」を自分のクラスに対して呼び出したということですね。

>>921
ありがとうございます。それで、printSelfClassでやってみると確かにそのとおり。検証できました。

>>924
本当はMyTestClassのサブクラスなのに、SuperMyTestClassという名前が付いてるので自分もまったく混乱しました。
結局自分としてあるべきコードは、以下だと思うのですが、★の行にてエラーが出てしまい、(MyTestSubClass* )のキャストが要るようなのですが、スーパークラスの「メソッド実装」を自分のクラスに対して呼び出したという観点からすると、いまいち理由がわかりません・・・。

"Incompatible pointer types initializzing 'MyTestSubClass' with an expression of type 'MyTestClass'"

--8<-----8<-----8<-----8<-----8<-----8<---
@implementation MyTestSubClass

+(MyTestSubClass*)myTestSubClassWithMessage:(NSString*) str
andMessage2:(NSString*) str2 {
MyTestSubClass* obj = [super myTestClassWithMessage:str]; //★
[obj setMessage2:str2];
return obj;
}

-(NSString*)message2 {
return message2;
}
・・・・
--8<-----8<-----8<-----8<-----8<-----8<---
929デフォルトの名無しさん:2012/10/04(木) 00:45:43.95
その切り取り線が無性に気になる
930デフォルトの名無しさん:2012/10/04(木) 00:51:44.53
>>928
これならエラー出ないんじゃね?

id obj = [super myTestClassWithMessage:str];
[(MyTestSubClass* )obj setMessage2:str2];
931デフォルトの名無しさん:2012/10/04(木) 01:14:52.62
>>928
サブクラスの型 の変数を 親クラスの型 の変数に入れるのは、サブクラスは親クラスを全て内包しているので問題無い

親クラスの型 の変数を サブクラスの型 の変数に入れるのは、親クラスはサブクラスで追加されたものが入っていないのでいいのかわるいのかはわからない
コンパイラは間違っているんじゃネーのってことでエラーにする。コンパイラがわかるのは変数の型であって、その内容(インスタンス)がサブクラスなのかなんなのかわからないので
キャストするのはプログラマの責任で、id とするのは「なんだかわからないよ」という意味もある。どういうサブクラスが追加されるかわからないから
932デフォルトの名無しさん:2012/10/04(木) 06:15:29.23
915質問者です。

>>920 >>921 によるとコンパイラ君は、[super ・・・]によるコンビニエンスコンストラスタは
きちんとスーパクラスではなく自分のクラスの呼び出しとわかっているはずだな、とおもうので
やっぱりエラー(実際はワーニング)はげせないですね。

>>928
もともとの記事にある方法と同じで、これだと (MyTestSubClass* ) キャストすら
要らないで動きます。
933デフォルトの名無しさん:2012/10/04(木) 09:54:01.40
@interface MyTestClass に
+(MyTestClass*)myTestClassWithMessage:(NSString*)str;
とある以上、コンパイラにはMyTestClassクラスのオブジェクトを返す(つもりである)ことしかわからない。

934デフォルトの名無しさん:2012/10/04(木) 10:35:55.09
そうだよね。コンパイラはヘッダーを見るだけで、親クラスの実装部(.m)は参照しない
親クラスの実装部は何を返すかわからないというのは上で説明されている通り
「[super ・・・]によるコンビニエンスコンストラスタはきちんとスーパクラスではなく自分のクラスの呼び出しとわかっている」から自分のクラスのインスタンスを返すハズというのは言語仕様外の決まり事でしかなく、>>933の言う通りにしかならない
935デフォルトの名無しさん:2012/10/04(木) 21:17:25.19
TextField上でEnterキーを押したときに処理を開始したい場合、IBActionを設定すればできるんですが、
これだとTabキーにも反応してしまいます。
Enterキーのみで処理させるにはどうすればいいでしょうか?
936デフォルトの名無しさん:2012/10/04(木) 21:56:52.94
>>935
そのTexitField内でのEnterだけで何かしたいなら、サブクラスの
- (BOOL)performKeyEquivalent:(NSEvent *)theEvent
937デフォルトの名無しさん:2012/10/04(木) 22:08:54.45
915質問者です。

>>933 >>934

よくわかりました。ありがとうございました。
938935:2012/10/04(木) 22:44:37.02
>>936
できました!ありがとうございます。
939デフォルトの名無しさん:2012/10/05(金) 00:08:32.38
>>935
IBのNSTextFieldの属性で、Actionを「Send On Enter Only」に設定するのはどうだ?
940デフォルトの名無しさん:2012/10/05(金) 04:15:22.97
オブシーって呼んでいいんですか?
941935:2012/10/05(金) 22:45:18.10
>>938
気づかなかった・・・それもシンプルでいいですね!

もう一つ質問させてください。
NSStepperを使いたいと考えているのですがステッパーにて値を変更したことを検知して
処理を走らせたいと思うのですが、どうすれば検知できるでしょうか?
942デフォルトの名無しさん:2012/10/05(金) 23:14:12.00
IBAction で繋げば反応するだろ。というかスレチ
943デフォルトの名無しさん:2012/10/18(木) 00:26:33.43
質問
UILabelを動的にリサイズする方法が分かりません。

storyboard画面で、UITableViewのPrototype Cells(UITableViewCell)にLabelを貼っつけてます。
Prototype Cellsのheightは44、Labelのheightは43に設定してます。
Labelにセットする文字列がはみ出る場合があるので、文字列の長さによってheightを可変にします。

ttp://blog.syuhari.jp/archives/2097
ttp://akabeko.me/blog/category/programing/ios/page/2/
を参考にして
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
のメソッド内でCellのheightは変えられるのは分かったんですが、Labelのheightはどこで変更すれば良いのかが分かりません。

ヘッダファイルに
IBOutlet UILabel *label;
としておいて、上記のメソッド内で
label.frame.size.height = ○○;
などとやってみたんですが、画面に表示するとデフォルトの43に戻ってしまいます。
何処が間違ってるでしょうか?よろしくお願いします。
944デフォルトの名無しさん:2012/10/18(木) 01:02:55.67
>>943
ViewDidLoadでやりなさい

というかframeごと設定してやらないといけないから

CGRect frame = label.frame;
frame.size.height = xxx;
label.frame = frame;

とかやらないとダメだと思うが
945デフォルトの名無しさん:2012/10/18(木) 01:06:15.56
>>944
あ、テーブル内か。ViewDidLoadは無視してくれ
cellForRowAtIndexPathかな
946デフォルトの名無しさん:2012/10/18(木) 01:37:37.63
>>944-945
おおお、cellForRowAtIndexPath内で>>944をやってみたら上手く行きました!
やっと先に進める…
ありがとうございました。
947デフォルトの名無しさん:2012/10/18(木) 19:12:11.86
イマドキはAuto Layoutでやるんじゃないの
948デフォルトの名無しさん:2012/10/19(金) 14:40:33.90
今度のiOSはTextFieldに日本語を入力するとエラーになるようになったね
949デフォルトの名無しさん:2012/10/20(土) 02:59:04.26
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *str = [[NSString alloc] initWithData:data encoding:NSShiftJISStringEncoding];

↑で、dataの中に変な機種依存文字が1文字でも入ってると、
2行目のinitWithData:encoding:でエンコーディングに失敗してstrが空っぽで帰ってきてしまいますよね ?←こういうの
エンコード出来ない文字だけを事前に除外して、それからエンコードする方法って何かありませんかね
950デフォルトの名無しさん:2012/10/20(土) 03:32:24.91
>>949
2chブラウザ作る気?
まぁ、簡単なのは、改行コードのバイト列で事前に区切ってしまえば、空っぽになる範囲を最大で1行分(1レス分)に抑えることができる
もしくは自力で、機種依存文字とか無視して強制変換するコードを書くしかあるまい
951デフォルトの名無しさん:2012/10/20(土) 12:29:03.26
>>949
iconv使え
あと、たぶんShiftJISじゃなくてCP932じゃね?
952デフォルトの名無しさん:2012/10/20(土) 12:35:37.67
NSString の文字コード変換も、iconvを使ってると聞いたことがあるが
953デフォルトの名無しさん:2012/10/20(土) 12:53:52.00
iconvのAPIを直接叩けってことだよ
954デフォルトの名無しさん:2012/10/20(土) 13:44:43.97
あぁMac OS Xならiconvでいけるか?
iOSだとiconv無理だったと思う
955デフォルトの名無しさん:2012/10/20(土) 14:32:00.94
もうおまえ黙ってろよ
956デフォルトの名無しさん:2012/10/20(土) 14:33:49.37
949です
>>950
そのとおりです
勉強がてらtwitterか2chのビューワーを作ってみようかとw

>>951
ありがとうございます、iconvで正常にNSDataからNSStringに変換出来ました

>>954
libiconv.2.4.0.dylibを参照して-liconv.2を追加したらiPhone実機で動きましたよ
957デフォルトの名無しさん:2012/10/22(月) 21:04:50.38
質問というか相談なんですけどナビゲーションでどんどんビュー階層を進んで行くにつれてデータ追加してく場合ってパブリックとプロパティどっちがコードがキレイですかね?
958デフォルトの名無しさん:2012/10/22(月) 22:58:42.33
は?
今時publicなんか使う?
今はpropertyでauto synthesize。
self使えない/使いたくないところは_前置で。
959デフォルトの名無しさん:2012/10/22(月) 23:29:23.52
辞書をプロパティリレーで回すか単品データを一つずつプロパティリレーで回すかどっかでパブリック使うか悩むんですねん、てかパブリックて使ったことないですねん
960デフォルトの名無しさん:2012/10/23(火) 00:48:56.86
ARCでretain、releaseなどを自動挿入したソースコードを見る方法ってあるんですか?
961デフォルトの名無しさん:2012/10/23(火) 02:06:01.15
無い
962デフォルトの名無しさん:2012/10/23(火) 10:25:07.28
>>961
ありがとう。
ARCを信じることにします。
963デフォルトの名無しさん:2012/10/23(火) 10:39:25.28
>>962
Xcodeのナビゲータでアセンブルコードは見れるよ
964デフォルトの名無しさん:2012/10/23(火) 18:37:01.34
>>957
いったい何を問題にしているのかよく分からん。
適当なコードを提示して説明してくれ。
965デフォルトの名無しさん:2012/10/23(火) 19:56:14.26
http://vimeo.com/39105449#t=9
この動画の9秒目の、横にシュッとやると下からメニューが出てくるヤツを真似したいんだけど上手く行かない
新しいようつべアプリでも同じ様なのあるけど、これってどうやってるんですかね?

1.一番下にメニュー画面(テーブルビュー)を置いておく
2.幅2画面弱(520px)の透明のスクロールビューを用意する
[scrollView setContentSize:CGSizeMake(520, self.bounds.size.height)];
[scrollView setBackgroundColor:[UIColor clearColor]];

3.スクロールビューのCGPoint(200,0)をデフォルト位置にする
[scrollView setContentOffset:CGPointMake(200, 0)];

4.スクロールビューのPagingEnabledをYESにする
5.4のデフォルト位置にメイン画面(UIViewとか)をAddする
UIView* mainView = [[UIView alloc] initWithFrame:self.bounds];
[mainView setCenter:CGPointMake(self.center.x + 200, self.center.y)];
[scrollView addSubview:mainView];

6.2〜5で作ったスクロールビューを1のメニュー画面の上に重ねる
7.スクロールビューを右にむかってシュッとやると200px分移動して、下からメニュー画面が出てくる
8.んだけど、スクロールビューの透明な部分が邪魔で下のメニュー画面が押せない…
966デフォルトの名無しさん:2012/10/23(火) 20:08:11.70
【Xcode】iPhoneアプリ開発初心者の集い【iOS】
http://anago.2ch.net/test/read.cgi/mac/1350384879/

こちらでどうぞ
967デフォルトの名無しさん:2012/10/23(火) 20:10:50.41
Cocoa Controlsとかでそういうのライブラリでいっぱいあるから探してパクれ
968デフォルトの名無しさん:2012/10/23(火) 20:27:59.54
>>966
すみません、次回からそっちで聞きます
969デフォルトの名無しさん:2012/10/24(水) 19:41:59.93
>>964
何も問題はないですねん。キレイなコード書きたかったのの相談でしたですねん
970デフォルトの名無しさん:2012/10/26(金) 23:17:21.14
複数ターゲットのプロジェクトで、片方のターゲットに含まれないソースをインポートすると
リンクエラーになってしまいます。
ターゲットによって#import文を分岐させることはできるのでしょうか?
971デフォルトの名無しさん:2012/10/27(土) 00:27:17.60
ターゲットでマクロ定義分けてifdefでもすれば出来る
972デフォルトの名無しさん:2012/10/27(土) 11:36:04.36
>>970
一つのソースファイルを複数のターゲットで共有したいなら、そのソースファイルを複数のターゲットに含めるだけだよ
973デフォルトの名無しさん:2012/10/27(土) 19:22:31.92
>>969
俺はそういう場合、シングルトンのクラスを用意してデータの管理している。
引数やらプロパティで引き継ぐとまじースパゲッティになる。
974デフォルトの名無しさん:2012/10/29(月) 03:52:55.99
シングルトン?グローバル変数?
それはなんか違うような・・

綺麗なコントローラー間の値の受け渡しなどグループ引数的なものはダラダラと記述しないで id 1つ。
coredata使う時のsegueのdetailItem的な感覚が参考になるかな。

idの正体はNSArray*、生成は@[]で、
975デフォルトの名無しさん:2012/10/29(月) 09:59:03.75
各階層でデータを追加等したい場合、それらのデータを管理するオブジェクトの参照が必要になって、それを遷移時に
nextViewController.delegate = self.delegate;
みたいにいちいちリレーするとスパゲッティになるから、
データ管理用のシングルトン型モデルコントローラを作った方が遷移時にdelegateを引き継がなくて良くてすっきりするよねって話じゃないの?
976デフォルトの名無しさん:2012/10/29(月) 21:32:28.74
それならAppDelegateってやつがすでにいるジャマイカ
977デフォルトの名無しさん:2012/10/30(火) 05:41:32.47
アプリが用意するシングルトンクラスなんて、相当な大規模開発時のグローバル変数の受け皿以外の用途が見つからない

サンプルアプリでも使ってるの見たことない

つまりシングルトンなんかでグローバル変数はダメダメ設計って事さ
978デフォルトの名無しさん:2012/10/30(火) 06:46:39.02
Objective-CなんだからちゃんとOPPしてくれよ
979デフォルトの名無しさん:2012/10/30(火) 14:05:42.14
OPP?
OOP?
980デフォルトの名無しさん:2012/10/30(火) 14:16:11.45
NSUserDefaultsなんかもシングルトンじゃん
アプリケーション内のあちこちで共有されるモデルを、モデルコントローラで統一管理して何がいけないのか
OOPからも逸脱してないと思うけど
981デフォルトの名無しさん:2012/10/30(火) 20:25:08.99
システムが用意するシングルトンクラスの話なんか誰がしてるんだよ!

アプリでシングルトンクラスが必要なのは、天下の裏金マンセーIBMが受注する、6000万円クラスのWEBシステムぐらいだ!それを人はアプリと呼ばないがなwwww

そしてIBMはスルガ銀行の時みたいに失敗して損害賠償裁判に負けるのさwwww
982デフォルトの名無しさん
>>981
楽しそうですね