トップページ⇒tech
982コメント357KB

Objective-C [ObjC part:7];

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2012/02/27(月) 17:21:46.39
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
0002デフォルトの名無しさん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/
0003デフォルトの名無しさん2012/02/27(月) 17:23:48.25
*** 本家 ***
Objective-C 2.0 プログラミング言語
ttp://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/

Introduction to The Objective-C 2.0 Programming Language
ttp://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html

そのほか英語
ttp://developer.apple.com/documentation/Cocoa/ObjectiveCLanguage-date.html

*** 書籍 ***
荻原本 第3版
http://amazon.jp/dp/4797368276

HMDTダイナミック本
http://amazon.jp/dp/4861006414
0004デフォルトの名無しさん2012/02/27(月) 17:24:49.73
*** 本家 ***
Objective-C 2.0 プログラミング言語
http://developer.apple.com/jp/devcenter/ios/library/documentation/ObjC.pdf

Blocksプログラミングトピックス
http://developer.apple.com/jp/devcenter/ios/library/documentation/Blocks.pdf

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

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

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

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

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

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

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

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

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

}


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

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

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

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

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

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

Objective-Cの仕様上、引数の数が違う場合は:の数が異なるので
これを他のOOPにおけるメソッド名が同じで引数の個数が違う
メソッドオーバーロードと同じとみなせば、
これに限っては事実上できることにはなる
0087>>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:)

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

なので、結局メソッド名が同じメソッドをオーバロードしていないという
ことがよくわかると思う
0088>>85の訂正2012/03/28(水) 01:52:04.54
あー、我ながらわかりにくい説明w
0089デフォルトの名無しさん2012/03/28(水) 02:49:23.54
ていうか>>81はオーバーロードですらないじゃん
0090デフォルトの名無しさん2012/03/28(水) 03:34:32.18
>>81が何をやりたかったのかが真剣にわからん
0091デフォルトの名無しさん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
0092デフォルトの名無しさん2012/03/28(水) 07:12:45.58
変なの出るから変なの湧くw
0093デフォルトの名無しさん2012/03/28(水) 08:21:57.90
>>89
そうだよ
引数名のみ違う状況だから、Obj-C以外でもオーバーロードにならないね
って話だよ

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

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

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

>>90
popoverの処理なんですが、
2種類のポップオーバーを用意していて、
それぞれ別の動作をさせたかったんです。
if文で判断できるのでひとつのソースで済んだのですが。
0096デフォルトの名無しさん2012/03/28(水) 18:28:59.11
>>94
いつの間にか C++ の template は関数の引数と同じように使えるようになったのか
実クラスで置き換えるというのでしか使ったことないなあ
0097デフォルトの名無しさん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++ だよ
0098営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 10:04:45.94
これやるにはCやっといたほうがいい?
0099営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 10:20:36.00
>>98
出来ればCの知識もあったほうがいい。
Objective-CはCが土台だから。
0100営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 10:40:19.84
いきなりCはアレだから、まずはキスからだな
0101営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 10:44:28.33
www
エロw
そういえば「初めてのC」とかいうふざけた名前の参考書があったね。
0102営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 10:47:16.10
>>99-101
ありがとう。初めてのCという本探してみるよ。
0103営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 13:32:19.69
初めてのCは微妙だったぞ
やさしいCで入門して、ポインタを詳しく書いてる本を別に読む方が良い
0104営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 15:07:42.20
穴が3つあるから間違えないように気をつけろよ
0105営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 16:24:01.90
CならK&Rだろ
0106営利利用に関するLR審議中@詳細は自治スレへ2012/03/29(木) 18:47:40.19
K&Rスタイルはもう古いよ
0107営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 02:59:38.31
今は何スタイル?
0108営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 08:10:06.77
C++11
0109営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 08:33:20.22
他に使える言語があるのなら、ブライアン・カーニハン、デニス・リッチーの「プログラミング言語C」はお勧め。
0110営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 13:21:02.67
>>105
K&Rは説明の簡潔さと練習問題の秀逸さが売り
コンピュータの基本構造知ってれば、初心者でも十分読める
が、今時コンピュータの基本構造理解してる初心者は居ない
0111営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 14:09:57.72
最初がK&Rはハードルが高いが、K&Rが読めないうちはまだCを理解してるとは言えない。
0112営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 15:16:44.61
最近は(レーザー)ポインタという同じ名称で同じ役割のものがあるのに
C言語のポインタが分からないってどういうことなの?
0113営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 15:58:22.22
配列とポインタというまるきり違うものが同じ扱いができる場面があったりすることで混同することに尽きるんじゃないの
0114営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 17:10:23.61
>113
objcでそんなことする場面はほとんど無いから無視して良さそうだね

...
iOSは弄った事ないけど生でbitmapいじり倒したりが当たり前とかないよね?
0115営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 17:48:47.57
仕事で使ってない趣味だけだったら、どうでもいいよ
仕事でなら使えないヤツと思うけど
0116営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 18:05:51.76
>>115
仕事としてたら偉い人みたいな言い方はどうかと思うよ?

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

てか、Objcを仕事で使うとポインタと配列を混ぜて使うのが当たり前になるの?
それもどうかと思うけど
0117営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 18:19:46.60
>>116
別に偉いってわけじゃないよ。仕事として使うなら他人に読まれるってことだよ。読まれた時にスキルは自ずと判断される。意識的にも無意識的にも
配列をポインタでってのは、極めて普通のことだけど?混ぜて使うとか意識しないで使う
Objective-C でというより、C でね。もちろん、Objective-C は C だし、C の配列を使う機会はあまり無いけどそれは別の話
0118営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 18:21:15.93
他人=自分以外
0119営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 18:44:00.45
>>116
例えばさ、
char array[100];
と
char *array = (char *)malloc( 100 );
は、同じじゃないとめんどくさくない?上は char[i] でしか使えなくて、下は *(char + i) でしか使えなかったら
たぶんこういうのは、割と普通に下も char[i] でも可能ってのは理解できるんじゃないかなあ(お前じゃなくて一般的にね)

俺は、なるほどなるほどって理解したつもりでいたら、いきなり **p って出てきて、なんじゃこりゃ??としばし悩んだ口だな
0120営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 19:11:28.19
初心者がポインタでつまづくのはポインタと配列を同等に扱うのが混乱するからなら、
そんなことはめったにしないObjective-Cではつまずくことはめったに無い
って事で良いんじゃないの?

わざわざポイインタは覚えないと駄目!とかいう必要がないような気がするんだけど
0121営利利用に関するLR審議中@詳細は自治スレへ2012/03/30(金) 19:28:31.93
>>119
char[i]
*(char + i)
って、なんなんねんっ。array[i] 及び *(array + i) ね

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

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

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

しかし、OS 依存のコードが大部分で Pure C に分離できるものは微々たる量でしかないのは、Windowsでも書いたことあるならわかるでしょ
0134営利利用に関するLR審議中@詳細は自治スレへ2012/03/31(土) 19:52:10.72
>>132
他人を追求したいならお断りだ
自分で上手な設計を追究したいんならすればいい
がんばれよ新人

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

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

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

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

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

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

http://upload.saloon.jp/src/up5313.zip.html
0156デフォルトの名無しさん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スレッドも同じオブジェクト、
という構成になっているっぽくて俺的に分かりづらかったので、クラス構成は変更しています。
0157デフォルトの名無しさん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"という文字列にマッチしてしまっている)
0158デフォルトの名無しさん2012/05/12(土) 05:28:06.57
うわああ
Macだと\とバックスラッシュの文字コードって違うんですね
自決しました
0159デフォルトの名無しさん2012/05/12(土) 09:20:33.41
>>158
>自決しました

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

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

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

すいません。サンプルコードのみてたですが、上のコードはどういういみなんですか?
よくわかりません。鍵括弧ってどういうこと?
0175デフォルトの名無しさん2012/05/15(火) 18:44:37.01
カテゴリ
0176デフォルトの名無しさん2012/05/15(火) 19:14:31.26
ウホッ
0177デフォルトの名無しさん2012/05/15(火) 19:24:19.38
>>174
ESRenderer っていうプロトコルを実装しているインスタンス(を返します)
0178デフォルトの名無しさん2012/05/15(火) 19:40:02.36
>>174
よく見たらその文法は初めてだなw
ググっても、ないよーっ
- (id<ESRenderer>)init ならいっぱいあるw
0179デフォルトの名無しさん2012/05/15(火) 19:41:25.44
微妙にホッとしている俺がいる
0180デフォルトの名無しさん2012/05/15(火) 20:14:04.69
>>164
三ヶ月後にも思い出せるかな?
01811552012/05/15(火) 21:50:08.04
>>156
ありがとうございます!!今DLしました!とうかレス遅くなってすみません!
2日ほど待って諦めてて今日思い出して久しぶりにこのスレに来ました!
本当に助かります!早速確認します!ありがとうございます!
0182デフォルトの名無しさん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のクラスはどこで呼ぶように定義されているのでしょうか?
気になって眠れません。
0183デフォルトの名無しさん2012/05/17(木) 00:24:50.52
こちらでどぞ
[SDK]iPhoneアプリ開発初心者質問箱25[touch][iPad]
http://anago.2ch.net/test/read.cgi/mac/1335398820/
0184デフォルトの名無しさん2012/05/26(土) 02:22:41.85
Objective-Cって設計思想でぬるぽが存在しないってことなのかな
nilへのメッセージ送信が可能で
プロパティがゲッターセッターの自動生成だとすると
0185デフォルトの名無しさん2012/05/26(土) 07:35:45.23
   ∧_∧
  ( ´∀`) にるぽ
0186デフォルトの名無しさん2012/05/26(土) 13:17:39.52
>>184
Objective-Cにも、値がゼロのポインタ値は普通に存在する。
ヌルポが存在しないのは、OCamlのほうだ。
0187デフォルトの名無しさん2012/05/26(土) 13:38:10.76
ぬるぽいんたえくせぷしょんはObjCには存在しないよ
ぬるぽはあるけど
0188デフォルトの名無しさん2012/05/27(日) 05:55:44.15
Javaにはポインタが存在しないはずなのに
ぬるぽが発生するのは何でJava
0189デフォルトの名無しさん2012/05/27(日) 07:33:40.26
存在しないと誰が言った!
0190デフォルトの名無しさん2012/05/29(火) 15:51:59.27
吉永先生
0191デフォルトの名無しさん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
01921912012/06/02(土) 22:33:16.68
すみまぜん>>191はスルーしてください。。Headerdoc使うのやめようと思います。
ちなみにみなさんどのドキュメントツール使ってますか?
今からappledocいじってみます
0193デフォルトの名無しさん2012/06/03(日) 17:11:42.27
なんかダウンロードしろってゆわれたからダウンロードしようと思ったら
英語でぜんぜんわからんわ。

詐欺師

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

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

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

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

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

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

訴えてやる!!!

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

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

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

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

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

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

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

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

ネタじゃねーよボケ!

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Xcode使ってボタンを押すと文字が表示できたら受け取ったり
簡単なrpgはできるようになったけど、まだCuiのRPGと変わらないくらい低レベルだから
もっと高レベルなことやりたいんだ
0230デフォルトの名無しさん2012/06/05(火) 11:09:16.60
スレチ
0231デフォルトの名無しさん2012/06/05(火) 11:29:44.37
Objective-cでできないってこと?
0232デフォルトの名無しさん2012/06/05(火) 11:35:01.69
頭をもっと高レベルにしてから出直せ
0233デフォルトの名無しさん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についてってことでスレチではないよね?
0234デフォルトの名無しさん2012/06/05(火) 12:11:23.29
Core Animation 使うのも OpenGL ES 使うのも他のアプリ使うのも、お前の勝手だろ。
その程度の単純なアニメーションくらい幾らでも方法はある。

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

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

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

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

と。

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

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

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

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

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

UINavigationBarのタイトルを置き換える方法探しても見つからないしメソッドってのを自分で
作らないといけないのかな
考えてたら禿げてきた
0252デフォルトの名無しさん2012/06/06(水) 16:33:02.48
>>251
簡単にできるよ。標準のにちょっと手を加えるだけで
とりあえず標準を使いこなして何ができるできないが判断できないとね。標準をそれなりに理解しつくすのがまずは先だね
0253デフォルトの名無しさん2012/06/06(水) 18:18:59.45
>>248
Core Graphicsは100%CPUによるレンダリングだから、比較的遅いと思うぞ
0254デフォルトの名無しさん2012/06/06(水) 19:11:22.66
100%CPUってのは無いんじゃないの。そんなには期待できないだろうけど
Quartz ExtremeレベルのはiOSでも実装されているじゃないかなあ
こんな◯だけのはどっちにしろたいした変わらないじゃないの
0255デフォルトの名無しさん2012/06/06(水) 19:14:24.21
CocoaをC++でラップしたみたいな
ライブラリありませんか?
0256デフォルトの名無しさん2012/06/06(水) 19:22:06.88
そんなのがなぜ必要なの?ちなみにここは Objective-C のスレです。覚えるのが嫌とかは許しません
0257デフォルトの名無しさん2012/06/06(水) 19:27:20.00
覚えるのが嫌
0258デフォルトの名無しさん2012/06/06(水) 19:30:32.51
CocoaをC++でラップしても、結局Cocoa覚えないと使えなくね?
0259デフォルトの名無しさん2012/06/06(水) 19:41:06.37
だよな。てか、ラップされての癖のような変なのも追加で覚えなければならいよな
安物買いの銭失い的なもんだなw
0260デフォルトの名無しさん2012/06/06(水) 19:52:42.37
Objective-Cを直接使うよりまし
0261デフォルトの名無しさん2012/06/06(水) 20:00:54.03
Objective-C++ってけっこう使うけど、カオスっぷりがなかなか素敵だよw
0262デフォルトの名無しさん2012/06/06(水) 20:19:04.45
コンパイル遅くてダレそう
0263デフォルトの名無しさん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も無いんじゃないのか?
0264デフォルトの名無しさん2012/06/06(水) 20:36:10.78
>>262
そこまで遅くないし、普通はつなぎ目にしか使わない。
0265デフォルトの名無しさん2012/06/06(水) 21:16:17.75
>>624
うん。遅いというヤツのマシンスペックを知りたいものだな

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

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

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

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

>285
この方法も面白いのですが、パフォーマンスを落ちてしまうので残念ですね。
0287デフォルトの名無しさん2012/06/08(金) 00:28:01.06
メソッドの引数で聞きたいことがあります。
C++ではメソッドの引数の参照渡しがあります。
 (void)hoge(int &value)
objective-Cでもこのような参照渡しは可能しょうか。
 - (void)hoge:(int &)value →参照渡しはNG(コンパイルエラー)
 - (void)hoge:(int *)value →ポインタ渡しはOK
0288デフォルトの名無しさん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++の参照は無理。
0289デフォルトの名無しさん2012/06/08(金) 00:38:45.88
>>287
Objective-C++ならできる。
0290デフォルトの名無しさん2012/06/08(金) 00:41:34.15
>288
ありがとうございます。この資料を探していました。
0291デフォルトの名無しさん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

ポインタと同じ扱いでした。(;^ω^)
02922882012/06/08(金) 00:48:07.30
↑のレスは288ね。
0293デフォルトの名無しさん2012/06/08(金) 01:05:13.15
>289, 291
まだobjective-Cの知識が不十分なのでobjective-C++を使うのを躊躇していましたが、
objective-C++を使う方が自分のやりたかったことをスマートに実装できそうです。
アドバイスありがとうございました。
0294デフォルトの名無しさん2012/06/08(金) 01:21:32.59
使える所はObjective-C++でC++のソースそのまま使えば良いんだよ。
Objective-CのAPIも使えるし、Toll Free Bridgeあるから基本的な
オブジェクトもCレベルで互換性あるし。
0295デフォルトの名無しさん2012/06/08(金) 22:02:02.39
カオス
http://www.stripe-net.jp/cocoa/program/blog20091112.html
http://www.stripe-net.jp/cocoa/program/blog20100423.html
http://www.stripe-net.jp/cocoa/program/blog20100607.html
0296>>2782012/06/09(土) 02:17:43.69
>>279-282
遅くなったがありがとう。ObjC++で問題なさそうだね
このスレ親切だなー
0297デフォルトの名無しさん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ではあまり使わないのかな
オーバーライド必須メソッドを親クラスで呼んでコントロールするという
0298デフォルトの名無しさん2012/06/14(木) 20:02:06.10
親クラスに
+ (id)sharedTableView {
 return TheOyaClass;  //的な
}
でも作って、
子クラスの init (とか)の中で [super sharedTableView].delegate = self; とか。
0299デフォルトの名無しさん2012/06/14(木) 20:31:25.84
親クラスのメソッド内でで単に _tableView.delegate = self でいいんじゃないの??
self はインスタンスを生成したクラスなんだから。つまり小クラスであるのだから
親クラスもDelegateプロトコルに準拠だけしておけば何も問題なさそうだけど
0300デフォルトの名無しさん2012/06/14(木) 21:05:27.32
>>298
それってプロパティに近いですよね。
4.2からは実装部だけでインスタンス変数が宣言できるので
なるだけ隠したいというのが発端でした。

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

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

また、Bがなんかのクラスの小クラスであっても、親クラスのADelegateMethodが自動的に呼ばれることは無いよ
必要なら、BクラスのADelegateMethodで[super ADelegateMethod:...]を呼ばなければならい。親クラスの処理を先にやりたいならBクラスのADelegateMethodの頭のほうでそれを、後でやらせたになら後ろのほうでそれを
0306デフォルトの名無しさん2012/06/15(金) 00:24:39.03
>>304
Delegateのまえに、@protocolの事は知っているのか?
0307デフォルトの名無しさん2012/06/15(金) 00:46:51.58
>>305
うーむ、例えばテーブルビューを使うとなるとUITableViewDelegateとUITableViewDataSource(スペル合ってるかな、、)を使って最低セルの数とセルの内容を決めるメソッドを書かなきゃいけないですけど
その場合はデリゲートを使って数と内容を決めるメソッドをオーバーライドみたいにしてると思ったんですけど違うんですかね??
>>306
なんとなく位なら、、
0308デフォルトの名無しさん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のインターフェースに相当するもの
0309デフォルトの名無しさん2012/06/15(金) 02:03:37.79
>>303
IBを使わないでコーディングしています。
親のViewDidLoadで共通部品生成
子のViewDidLoadで
[super ViewDidLoad]
の後に差分のコンポーネント生成とか
入力チェックなんかの共通処理は親でやりたいなと
0310デフォルトの名無しさん2012/06/15(金) 02:11:24.42
>>307
オーバーライドじゃないよ。
プロトコルはメソッドの宣言の集まり。元の実装がないのだからオーバーライドも何も元がない。
従ってプロトコルを採用し、実装する側はメソッドをイチから実装する。
0311デフォルトの名無しさん2012/06/15(金) 02:11:37.33
>>307
>メソッドをオーバーライドみたいにしてると
うん、違う
メソッド本体はどこにも無いよ。>>308にある通りインターフェース(Cで言えばプロトタイプ宣言)だけ
メソッド本体はその例えでいうとUITableViewDelegateやUITableViewDataSourceプロトコルを実装するクラスにってこと
0312デフォルトの名無しさん2012/06/15(金) 02:49:56.65
>>310,311
今までデリゲートはオーバーライドみたいなことをしていてテーブルビューで言えばプロトコルに準拠したメソッド上のどこかでテーブルビューを作っていたと思っていたんですけど、
あのプロトコルメソッド群は本当に只々数値を返したり引数を受け取って色々したりするだけ(当たり前だけど、、)なんですな。
テーブルビューで言うとテーブルビューオブジェクトはdelegate,datasourceプロパティを使ってUITableViewDelegate,UITabelViewDataSource準拠したメソッドを使って自身を設定してるのかな??
0313デフォルトの名無しさん2012/06/15(金) 03:44:44.49
>>312
オーバーライドタイプだとして(そういうのが無いわけでもない)も、自分で実装したメソッドで super でオーバーライドした元を呼んだりしなければ、Delegateメソッドで他に何かをしているとかは無いんだけど
テーブルビューは枠組みを提供しているのであって、ユーザサイド(貴方や俺やテーブルビュー使ってなんか作る人ね)固有と思われるのをUITableViewDelegateやUITabelViewDataSourceで取得、通知しているってのだけど
0314デフォルトの名無しさん2012/06/15(金) 03:50:01.04
ユーザサイド固有のデータの取得や、ユーザサイドが必要とするであろうテーブルの変化の通知
0315デフォルトの名無しさん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
0316デフォルトの名無しさん2012/06/15(金) 08:15:49.25
-(void)methodA:(id<protocolB>) hoge
{
[hoge methodB]
}

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

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

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

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

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

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

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

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

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

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

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

atomicはたいして意味がないから基本nonatomicでいい
0356デフォルトの名無しさん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/


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

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

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

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

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

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

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

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

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

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

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

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

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

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

長い間Lockされ続けるは無しでいいんだな?w
0396天才かえるん ◆69rLNSEETE 2012/06/18(月) 21:10:00.40
Glenn Seemannが一番最強だけどな
お前らは小物なんだよ
0397デフォルトの名無しさん2012/06/18(月) 21:13:50.79
>>396
大物らしくしてください。それだと狐にしか見えませんぜ
0398デフォルトの名無しさん2012/06/18(月) 21:22:40.00
Glenn Seemannって言ってみたかっただけだろ
0399デフォルトの名無しさん2012/06/18(月) 21:26:04.77
GCDは、lockのコスト軽減云々よりはむしろdeadlockや不適切なlockの範囲など、
プログラムエラーの回避を容易にするためのもんなんじゃないの?
0400デフォルトの名無しさん2012/06/18(月) 21:31:14.11
ここで新説の登場か
0401デフォルトの名無しさん2012/06/18(月) 22:07:34.64
GCDはスレッドプールだろ
0402デフォルトの名無しさん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;
}
0403デフォルトの名無しさん2012/06/18(月) 23:36:44.79
ARCならあってるけどMRCならリークしてる
0404デフォルトの名無しさん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の方がいいんですかね?
0405天才かえるん ◆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年以上前の人にも勝てないし
どうせ図形やグラフ表示させて喜んでる程度だろ
ゲームは創作物としてレベル高いからな
0406デフォルトの名無しさん2012/06/19(火) 11:17:59.06
マジすねおだった。ああスネオは親が金持ちっていうのがあるからそれ以下かw
0407デフォルトの名無しさん2012/06/19(火) 22:10:00.39
>>405
Unityスレに帰れよw
0408デフォルトの名無しさん2012/06/19(火) 22:50:43.95
>>404
> この場合NSNotFoundの方がいいんですかね?
それは、このコードの仕様を考えた自分自身にしか分からない。
0409デフォルトの名無しさん2012/06/20(水) 13:07:56.10
>>405
俺昔一人でEQ LikeなMMO書いた人知ってるけど、お前みたいにドヤってもいいかな?
0410デフォルトの名無しさん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;
}
ってしないとダメですよね?
0411デフォルトの名無しさん2012/06/20(水) 15:21:00.86
ARC=Auto Refarence Counting
自動で参照カウンタを操作する
自動で参照カウンタを
自動で
自動
0412デフォルトの名無しさん2012/06/20(水) 15:52:38.49
>>410
いちいち変数に入れる必要はない。あと、ほとんどの場合、自分で @autoreleasepool {} を書く必要もない。
0413天才かえるん ◆69rLNSEETE 2012/06/20(水) 17:58:30.33
>>409
外人?
どうせドルアーガの塔レベルだろ

コミュニティはどれくらい続いてる?
10年以上続いてるかな?
サーバー代とか無料プレーかな?
0414天才かえるん ◆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の開発者ないんだろうな

まあクズで視野が狭いし 世界観も狭そうだから
知らないんだろうなグズが
0415デフォルトの名無しさん2012/06/20(水) 18:24:06.73
うん、天才かえっていいから
もしくはObjective-Cの話をしてみてよ
0416デフォルトの名無しさん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を適切に自動的に付け足す
0417デフォルトの名無しさん2012/06/20(水) 19:59:33.25
NSUserDefaluts使って2つのViewController間で値渡しってさせられる?
ViewControllerAである変数をNSUserDefalutsに保存してViewControllerBから読み込むみたいな
できたら便利なんだけど
0418デフォルトの名無しさん2012/06/20(水) 20:00:46.33
ぜんぜん便利に思えない・・・
0419デフォルトの名無しさん2012/06/20(水) 20:10:06.56
え?便利じゃない?
Prapareなんとかって無駄に長いし
0420デフォルトの名無しさん2012/06/20(水) 20:22:14.68
グローバル好きと変わらないような。グローバルも便利だと言えば便利だろう
値渡しとか一時的なもんに使うのは気持ち悪いんだけど。グローバルじゃなくてNSUserDefaluts 使うのはグローバルが気持ち悪からでしょ?
NSUserDefaluts って文字が示しているように一時的なもんじゃなくて、Defaults (ユーザ設定)に使うもんだけど。本来
0421デフォルトの名無しさん2012/06/20(水) 20:23:32.75
直接わたせばいいじゃん
0422デフォルトの名無しさん2012/06/20(水) 20:24:37.34
ああ>>417のような質問をするってことは、何もわかってなかったんだな
そんなことするなっw
0423デフォルトの名無しさん2012/06/20(水) 20:33:24.88
え、グローバル変数って別のクラスからでも扱えるの?
できなかったんだけど
0424デフォルトの名無しさん2012/06/20(水) 20:35:11.97
んーと、君は某スレの人でしょ。いろいろと勉強しなさい
グローバルはグローバルだよ。クラスなんて関係ないよ。どの言語でも
0425デフォルトの名無しさん2012/06/20(水) 20:36:59.39
>>423
てか、使おうとするなよっw
まあ、お前さんがどう変なコード書こうがお前さんの自由だが
0426デフォルトの名無しさん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されると思うのですが大丈夫なんでしょうか?
0427デフォルトの名無しさん2012/06/20(水) 22:36:54.74
こちんこちんのちんこ
0428デフォルトの名無しさん2012/06/20(水) 23:52:41.62
>>426
イミフ。ARCとMRCがごっちゃになってない?
ARC厳禁でMRCから始めてみたら?
0429デフォルトの名無しさん2012/06/21(木) 00:09:52.99
>>428
alloc, copy, mutableCopy, newメソッドファミリに属するメソッドは保持可能なインスタンスへのポインタを返し、これら以外は一時的なインスタンスへのポインタを返すだったと思いますが、
一時的なインスタンスへのポインタを返すということは, そのメソッド定義の最後で, autoreleaseされてreturnされるということだと思いますが、
ARCではretain, release, autoreleaseは書けませんから、そのメソッド定義内でオーナーシップを持っていたオブジェクトを、最後にautoreleaseする処理が自動的に入るはずです。
なので、一時的なインスタンスを返すメソッド定義では、最後にautoreleaseが補完されることを念頭に置いて、オーナーシップを持っておかなければならない、
つまり一時的なインスタンスを別の上記メソッドファミリ以外のメソッドで取得し、オーナーシップを取らずにそのままreturnするとまずいと思うのですが間違ってますでしょうか?
0430デフォルトの名無しさん2012/06/21(木) 00:29:20.65
>>423
sharedXXXとか使ったことないのか?
てか421の言うように直接渡せばいいだろ
渡される側に公開メソッドとかプロパティ用意すればいいだけだろ

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

それにしてもdelegateベースの多態に慣れないなあ
なんかjavaっぽくなってしまう...
実現できるからいいっちゃあ良いんだろうけど人に見せられない
0431デフォルトの名無しさん2012/06/21(木) 00:40:23.99
delegateベースの多態?
0432デフォルトの名無しさん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;
}
0433デフォルトの名無しさん2012/06/21(木) 01:33:41.80
>>429
やっぱりMRCが始めるのがいい。Reference Counter がわかってないので(>>430の言う通りだんだけど)

ARCは高度に勝手にコード中にrelease/autoreleaseが入る。それは値を返すメソッドとは限らず、受け取り側のコード中にも埋められる
ほとんど Reference Counter を意識させないのがARCの目的でもあるんだが、あなたのように気になりまた、間違って理解しているなら、MRCからだね。やっぱり
0434デフォルトの名無しさん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
0435デフォルトの名無しさん2012/06/21(木) 09:40:05.73
>>429
id foo = [anObj URLPathComponent1];
↑ここ(呼び出し側)で適切にオーナーシップが設定される。

この場合なら恐らく retain,autorelease だけど、プログラマが考える必要は特にない。
0436天才かえるん ◆69rLNSEETE 2012/06/21(木) 10:01:34.17
口だけバカは逃げたか
虚勢はって逃げたな
0437デフォルトの名無しさん2012/06/21(木) 14:50:56.03
>>431
まぁ、言いたいことはわかる
0438デフォルトの名無しさん2012/06/21(木) 17:33:09.84
梅雨時になると変なカエルが出てくるね
0439デフォルトの名無しさん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_のメモリリークとか起きないでしょうか?)

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

@property (readonly) *NSString hoge;

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

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

普通、viewDidUnload() で、

self.nameTextField = nil;

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

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

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

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

>respondsToSelectorも要らない
optional を使わないならいらないでしょ
0470デフォルトの名無しさん2012/06/29(金) 18:32:54.26
performSelectorと直接実行は意味的に同じではないけどね。delayを0にしたとしても。
その違いを理解していないと、なかなか使い分けられないだろうね。
0471デフォルトの名無しさん2012/06/29(金) 18:35:14.36
それだとdelay付きのことだけを言っているようだけど?
delay無しは直接実行(?)とおんなじだよ
0472デフォルトの名無しさん2012/06/29(金) 18:43:26.97
performSelector を呼んだら、セレクタを実際に実行するまで返ってこないってことね<おんなじ
delay 付きは0にしても、どっかのキューに登録するだけで直ぐに返ってきて、セレクタが実行されるのは次の実行ループだと言いたいのはわかるが、どう理解して使い分けているんだろ??
0473デフォルトの名無しさん2012/06/29(金) 18:46:28.48
おっとプロトコルの方の話か、失礼した。
0474デフォルトの名無しさん2012/06/29(金) 19:04:59.65
>>472
例えばなんかの処理中に UIActivityIndicatorView を回転させたい時に
startAnimating の直後にその処理を直接実行しても インディケータは回転しないから、
いったんcurrentRunLoopに戻すためにperformSelectorのdelayバージョンで使うとか。
あるアニメーションの中で、別のアニメーションを起動したいけど、タイミングをずらしたい時とか。
あるアニメーションの中で別のアニメーションを実行するとアラート吐くことあるからな。
ここでいうアニメーションとはImagePickerの起動とかviewの遷移アニメーションも含む。
0475デフォルトの名無しさん2012/06/29(金) 19:12:05.93
>>474
delay付きだけの話ね。それは0でも遅延だから>>467も言っていることだろうし、俺も遅延としては便利に使う
でもそもそもdelay付き(に限って)の話ではないので>>470でいきなり理解してないとというが理解できなかった
delegateでも遅延の方がいいかなあという時もあることはあるけど、さほどないし
0476デフォルトの名無しさん2012/06/29(金) 23:01:06.81
jsのsetTimeoutと同じってことでいいの?
0477デフォルトの名無しさん2012/06/29(金) 23:16:28.48
うん。同じというと語弊があるが同じw
0478デフォルトの名無しさん2012/06/29(金) 23:17:31.13
delay と timeout じゃ意味違うだろ
0479デフォルトの名無しさん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];
ってやるほうが流儀なのかなあ。どうでもいいか
0480デフォルトの名無しさん2012/06/30(土) 00:10:46.41
[self.delegate someMethod];
ってやらないとプロパティ経由にならないんじゃねーか?
0481デフォルトの名無しさん2012/06/30(土) 01:09:08.91
>>480
あ、そうだった。長々とすまん。

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

インスタンス変数の宣言が省略可能になったので、
@synthesize delegate
は、delegate というインスタンス変数が
@synthesize delegate = _delegate;
は、_delegate というインスタンス変数が
というだけなので、>>480の言うとおり
0484デフォルトの名無しさん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があるものを抽出する...という形になるのでしょうか.
0485デフォルトの名無しさん2012/06/30(土) 22:20:33.24
いいえ
0486デフォルトの名無しさん2012/06/30(土) 23:03:12.64
>>485
ありがとうございます。
[@"self in %@", a.bs]
で調べられるんですね・・・、
%@ですから文字列比較しかできないものかと
0487デフォルトの名無しさん2012/06/30(土) 23:05:22.85
ここ見れ

http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html#//apple_ref/doc/uid/TP40004265

%@は文字列だけって書いてあるか?
0488デフォルトの名無しさん2012/06/30(土) 23:22:31.45
>>487
エッ――!
%@ってNSString以外にも使えたんですか・・・
確かに配列とかURLとかに使われていることがあったのですが
てっきり自動でdescriptionを呼び出しているだけかと・・・
0489デフォルトの名無しさん2012/06/30(土) 23:30:01.16
description はNSStringじゃなくて、NSObjectプロトコルの必須メソッドな。
だからNSObjectに適応したオブジェクトは全て%@で出力対象となる。
0490デフォルトの名無しさん2012/06/30(土) 23:41:13.75
>>489
えぇ、それはわかるのですが
ですから@"self ub %@", a.bs
なんてのはa.bs.description(←この時点でNSStringになってしまう)のなかにselfがありますか、
ということだと思って
a.bs(←NSArray)の中からself(evaluatedObject)を探してくるなんて芸当をやるとは思いませんでした
0491デフォルトの名無しさん2012/06/30(土) 23:48:22.73
> [@"self in %@", a.bs]
これって何してるの?
0492デフォルトの名無しさん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
これ
0493デフォルトの名無しさん2012/07/01(日) 00:09:54.40
ありがとうございます。読んでみます。
相互参照で、entityBからentityAはn:1対応なのでもっと簡単に調べる書き方がありました。
@"a == %@", a
こっちの方が配列から探さず調べられるので多分速い?かも知れません
0494デフォルトの名無しさん2012/07/01(日) 00:20:04.31
>>484
CoreDataな話なんだよね?
インスタンスaに、インスタンスbへのrelationshipを表すNSSet型のプロパティbsがあるはずだよね?
0495デフォルトの名無しさん2012/07/01(日) 13:07:35.34
>>493
それについても、
インスタンスbに、インスタンスaへのrelationshipを表すClassA型のプロパティaがあるはずだよね?

NSPredicateを使って検索する必要ないんじゃ?
0496デフォルトの名無しさん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
0497デフォルトの名無しさん2012/07/01(日) 13:58:45.47
昔の日本人ってすごかったんだね。どうしてこうなったんだろ。
0498デフォルトの名無しさん2012/07/01(日) 14:10:03.54
腕時計じゃなくてクォーツ式腕時計だろ
0499デフォルトの名無しさん2012/07/01(日) 14:23:51.38
だよな。腕時計で高級品は(機械式のすごいのも)日本のじゃないしな

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

Rubyの14歳子みったーを思い出した
0504デフォルトの名無しさん2012/07/01(日) 15:43:52.32
>>494-495
ありがとうございます。もちろん最初に書いたとおり、
全部オブジェクトとしてとってきてから、b.a(bからaへの対1参照)なり、a.bs(aからbへの対多参照)なりのプロパティで比較すれば出来るのですが、
コードをシンプルにするのとパフォーマンスを改善するためにNSPredicateで条件指定出来ればいいなと思いまして・・・
0505デフォルトの名無しさん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が全て入っていると思うのですが。
0506デフォルトの名無しさん2012/07/02(月) 00:34:46.35
>>505
あ。その手は思いつかなかったです・・・。
中身はRDBMSだという固定観念に縛られておりました。
つい、いちいちフェッチしないといけないものかと
チュートリアルにも必ずしもフェッチしなくてもよい場合があると書いてありました
条件を加えて検索しなおすとかでなければ、オブジェクトのまま関係を辿れるんですね
ここで、もう一つ疑問が出てきたのですがあるオブジェクトと1:nで大量のオブジェクトが結ばれているとき、
このオブジェクトをとってきても、すぐに大量のオブジェクトがフェッチされる訳ではないようですが
だからといってツリー状にどんどん繋げてしまうと、何かの拍子で一気に大量のオブジェクトがメモリにロードされて落ちるんじゃないかという懸念があるのですが
あまり気にしなくても上手く管理してくれるんでしょうか
それとも、大量のオブジェクトへの参照があるところでリレーションを切って、キーを設定して、キーを元に明示的にフェッチするようにすべきなんでしょうか
0507デフォルトの名無しさん2012/07/02(月) 19:11:40.27
>>506
ごく普通にオブジェクトを操作するだけで、背景で自動的にRDBMSが動いてくれるのがORMだと思います。
レコードをフェッチするという概念がオブジェクト側にないので、大量のオブジェクトのロードは基本的に制御しきれないと思います。
また、「大量のオブジェクトへの参照があるところでリレーションを切って」などとやると、ORMのメリットを失うような気がします。

実際に試して見て、「オブジェクトの大量ロード」がパフォーマンスに影響を与えないなら、気にしないのが一番ですし、
パフォーマンスに影響するなら、SQLiteのAPIを直接操作した方が良いと思います。
0508デフォルトの名無しさん2012/07/03(火) 00:13:24.72
GNUstepでObjective-Cを始めようと思ってます。
0509デフォルトの名無しさん2012/07/03(火) 00:28:24.39
GNUStepってObjectiveーC2.0にも届いてないだろ
覚えても使い道もないわAppleのとはソース互換もないわではっきし言うと無駄だと思うぞ
0510デフォルトの名無しさん2012/07/03(火) 00:37:38.66
Mac買わなくてもObjective-Cはできる。Objective-Cの絶妙なゆるゆるさが堪能できる
から、いいんじゃないの。MacでGNUstepやるのはなんの意味もないと思うけど
0511デフォルトの名無しさん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を上手く調整するコントローラを作るべきなんでしょうか
0512デフォルトの名無しさん2012/07/03(火) 02:56:55.09
>>509
大抵の機能は使えるはずだが。
0513デフォルトの名無しさん2012/07/03(火) 18:46:30.40
>>511
うーん。。。なにやら変な方向に話が進んでいるような気が(^^;

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

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

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

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

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

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

あと「同期」という言葉が出て来ますが、これって具体的には何と何を同期するの?
0527デフォルトの名無しさん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)です。
0528デフォルトの名無しさん2012/07/07(土) 09:16:46.29
ヒガレスw
0529デフォルトの名無しさん2012/07/07(土) 11:12:29.09
いじめ自殺の起きた大津市の某中学の素敵な学習内容

http://cdn.uploda.cc/img/img6946.jpg
http://libdspace.biwako.shiga-u.ac.jp/dspace/bitstream/10441/5193/1/fuchukiyo51
0530デフォルトの名無しさん2012/07/07(土) 13:08:12.38
>>525
ありがとう
昔の(NeXTの頃の)EOFとはほとんど同じだけど微妙に違うのね
0531デフォルトの名無しさん2012/07/07(土) 13:43:58.10
>>527
> もちろん、ローカルとiCloud(Ubiquitous Storage)です。

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

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

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




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

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

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

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

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

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

俺も大学でC齧ったあとだいぶ間が空いてiOSでなんかやるかーと
趣味で復帰したんで、たしかにObj-C関係の入門や解説が
Cをどっか別のとこでやった人にObj-Cを解説する感じのばっかりな現状なのは
もうすこしなんとかならんのかなとは思う。
0546デフォルトの名無しさん2012/07/10(火) 22:21:47.05
C自体の解説や入門は別に山ほどあるんだから、それは他所に譲るのは妥当。
0547デフォルトの名無しさん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];
}
}
0548デフォルトの名無しさん2012/07/11(水) 07:16:20.87
>>547
NSTimer とか
そのメソッド内で NSRunLoop を回すとか
0549デフォルトの名無しさん2012/07/11(水) 09:03:28.65
>>546
MSのC#とかも「Cと違うところだけ列挙するから、
まずどっかでCを学習してきなよ」ってスタンスなのかね
0550デフォルトの名無しさん2012/07/11(水) 09:21:39.24
>>547
値を変えるblockを作りcompletionハンドラで次の値に変えるblockを再起的に呼び出すようにblockを呼び出す。
0551デフォルトの名無しさん2012/07/11(水) 09:30:49.90
>>547
そのようなLabelのサブクラスを作る方がわかりやすいと思う
0552デフォルトの名無しさん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];
}
だけでいいんだけど、回っている最中にボタンを押されるとリエントリーされるので、ちょっと工夫(インスタンス変数を持たねばならないとか)が必要
まあ、それ用のインスタンス変数を持たねばならないんだったらクラス分けたほうがいいよな
0553デフォルトの名無しさん2012/07/11(水) 10:22:05.82
NSTimer で良いだろ。
0554デフォルトの名無しさん2012/07/11(水) 10:26:12.26
NSTimer な間隔な繰り返しならねえ。考えたらもっと頻繁かなあと思った
0555デフォルトの名無しさん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
0556デフォルトの名無しさん2012/07/11(水) 11:11:06.92
あ、アニメーションブロックに突っ込む意味なかったわ。
05575472012/07/11(水) 14:25:30.71
みんな。回答ありがとう!
まだ家に戻ってないので試してないんだけど質問です。

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

どんな仕様でクラスやらNSTimerやら追加しなくてはならないのか教えてくれると助かる。
他の言語からの移住民なのでここがクリア出来れば、objective-cと仲良くなれそうな気がしてるw
0558デフォルトの名無しさん2012/07/11(水) 15:07:49.78
>>549
C#はそもそも名ばかりのCなんで関係ありません
0559デフォルトの名無しさん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];
}
}
0560デフォルトの名無しさん2012/07/11(水) 16:04:27.99
>>557
Viewの更新(描画)を行うタイミング、及び、GPUのVRAMに書き込むタイミングのためという理由から
いまどきのどのOSでも似たようなもんだと思うけど
0561デフォルトの名無しさん2012/07/11(水) 16:12:50.42
>>557
例えば、
scoreText.text = [NSString stringWithFormat:@"%d",i + l];
は、インスタンス変数 text を変えるだけで、描画はされない。フラグを立てるだけ
そのフラグをチェックして scoreText に描画させるのは NSRunLoop のどっかでの処理(だと思う)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

このクラスを使いたいからこのヘッダーをというのは理にかなっているし、簡単で別にかまわないことなのにな
極端に言いえば、このクラスを使いたいのだがこのクラスはあのクラスも使っているからあのヘッダーも、あのクラスはあっちのクラスも使っているのであっちのヘッダーもってめんどくさっと思うけど、別にそれはそれで勝手にすればいいことではある
趣味の範囲の話だなw
0612デフォルトの名無しさん2012/07/13(金) 14:49:19.26
前方宣言とインクルードガードじゃ目的がぜんぜん違うじゃないの。
0613デフォルトの名無しさん2012/07/13(金) 14:54:45.09
うん、そのふたつは全然関係ないよ。結びつけるとは思わなかったw
ヘッダーでヘッダーをという問題で、何を問題にしているか具体的にわからないから、これも問題と見なしているのであればって話
0614デフォルトの名無しさん2012/07/13(金) 15:06:21.40
>>603
こういう低レベルな奴の相手するのがそもそもの間違い。
0615デフォルトの名無しさん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は全てのソースから参照可能なので、これを修正すると全ての
ソースの再コンパイルが必要になる。
0616デフォルトの名無しさん2012/07/13(金) 17:58:45.41
>>597
@public 使うような設計がキモいんだよ。
オシャレとか何言い出してんのお前。
0617デフォルトの名無しさん2012/07/13(金) 18:06:33.48
出た♥
自分の感性に合わないことは断固として認めない昭和の頑固オヤジw
柔軟性の欠片もない凝り固まった頭でキモいキモいを連発w
0618デフォルトの名無しさん2012/07/13(金) 18:55:28.79
なんでもあり感とかお手軽感とかの事だと思うが、
キモいって程じゃねえなあw
0619デフォルトの名無しさん2012/07/13(金) 19:10:57.74
ObjCの場合、アクセス修飾子は飾りというか作成者の願いというかw
0620デフォルトの名無しさん2012/07/13(金) 19:30:38.08
コメントに近いよねw
0621デフォルトの名無しさん2012/07/13(金) 23:45:22.41
>>597
たぶん昔の「あんたたちイモね」ってのと同じレベルの慣用表現太と思うよ>「キモイ」
0622デフォルトの名無しさん2012/07/13(金) 23:58:07.25
ダサいみないなもんか。
オサレが昔のナウい?
0623デフォルトの名無しさん2012/07/15(日) 12:31:00.96
ヤバイ
0624デフォルトの名無しさん2012/07/20(金) 13:35:41.52
質問なんですが、
画面の数分の1くらいの大きさのModalを表示させて、残りの部分は、
裏側のViewが見えたまま、みたいな事をしたいんですが、StoryBoardで実装できますか?
Modal用にViewControllerを用意してSegueで繋いでStyleをModalにしても、
Modalが全画面表示みたいな感じになってしまって困ってます
0625デフォルトの名無しさん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
0626デフォルトの名無しさん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/
0627デフォルトの名無しさん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);
0628デフォルトの名無しさん2012/07/22(日) 16:02:27.65
>>627
b=cした時点でbからリテインされていたオブジェクトがreleaseされaからリテインされてないからdeallocされてaがゼロ化される。
06296272012/07/22(日) 18:11:57.00
自分の質問の仕方が悪かったです>>627のコードをそのまま実行すると
2回目のNSLog()の時にaがゼロ化されていないのですが、なぜでしょうか?
本当ならゼロ化されてnilになってるはずだと思うのですが。。。
0630デフォルトの名無しさん2012/07/22(日) 18:32:46.90
>>629
最初のNSLogの中で a の中身が autoreleasepool に積まれてるみたいだ。
だから b=c しても、元々bが指してたものは生きてる。
0631デフォルトの名無しさん2012/07/23(月) 01:30:19.39
>>624
できる。presentModal はフルスクリーンにしかならないので、CustomSegue と、ViewController で自分でそういうタイプのモーダルにする
0632デフォルトの名無しさん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
0633デフォルトの名無しさん2012/07/23(月) 17:09:14.51
エラーの内容くらい書け
0634デフォルトの名無しさん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で、ディストリビューションを設定するとこの現象に陥ります。
0635デフォルトの名無しさん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
0636デフォルトの名無しさん2012/07/25(水) 11:46:43.66
お前らホント韓国ネタが好きだよな
0637デフォルトの名無しさん2012/07/25(水) 12:03:24.14
お前らっつてレスしても逃げててわからんだろ。逃げてってかあれがあいつらの活動wなんだろうけど
街宣右翼の張り紙や極左のビラまきといっしょ。内容的にもの挑発的攻撃的なのが似ているし
0638デフォルトの名無しさん2012/07/25(水) 16:25:10.35
>>631
なるほど、理解しました。
CustomSegueと↓のを組み合わせれば出来そうな気がします。
ありがとうございました。
ttp://www.cyrus.co.jp/tdiary/?date=20101005
0639デフォルトの名無しさん2012/07/26(木) 00:36:08.43
なんか、Objective-Cの文法がアップグレードしたなぁ

@synthesizeが省略可
NSArrayとNSDictionaryとNSNumberのリテラル追加
NSArray* list = @[@11, @22, @33];
NSDictionary* map = @{@"name":@"Red", @"value":@"#FF0000"};
0640デフォルトの名無しさん2012/07/26(木) 01:23:36.09
さっそく@synthsize一掃したんだけど
変数名が_プロパティ名になるのって公式にはどこに出てるの?
WWDCのスライドしかみつけられんかった
0641デフォルトの名無しさん2012/07/26(木) 02:50:57.72
@property が初出の頃
0642デフォルトの名無しさん2012/07/26(木) 03:26:56.70
なわけないだろ
0643デフォルトの名無しさん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だから不思議ではない。どっちにするってときに
0644デフォルトの名無しさん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
0645デフォルトの名無しさん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が言っているのは、そういう話じゃないと思うぞ
06466402012/07/26(木) 22:35:04.77
>>645
情報サンクス

そうそう。以前だと
@synthesize プロパティ名
だけだとプロパティ名と同名のプライベート変数が出来てたよね
643のコードだとhogeと_hogeが同時に存在してしまう
0647デフォルトの名無しさん2012/07/26(木) 23:47:51.33
xibファイルのBase Internationalizationもなかなか良い
0648デフォルトの名無しさん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もセットされてない。

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

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

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

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


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

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

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


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

■総投票数 25982票

0661デフォルトの名無しさん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なんか使うよりもかなり早くだ)
0662デフォルトの名無しさん2012/07/30(月) 00:16:07.52
すみません
@compatibility_ariesコンパイラディレクティブって何に使うんでしょうか?
0663デフォルトの名無しさん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
0664デフォルトの名無しさん2012/07/30(月) 09:42:00.06
はてなにあったtyype、これすごくない?
0665デフォルトの名無しさん2012/07/31(火) 13:59:37.07
NSThreadで起動したスレッドの内部で、オブジェクトのbool型変数がFALSEに
なるまでwhile()ループする処理を入れています。
で、ループの直前でNSTimerでタイマを仕掛け、タイマ発火時にFALSEにする
ようにしましたが、ループが回っている間はタイマが発火しなく、無限ルー
プなってします。

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

Windowsですと、スレッド内でSetTimer()すると無限ループ中でもタイマ
イベントが発火するのですが、Macではどのようにしたらいいのでしょうか?
0666デフォルトの名無しさん2012/07/31(火) 14:17:09.50
自分ならタイマーじゃなくてもう1個別のスレッドで待つかな。
0667デフォルトの名無しさん2012/07/31(火) 14:28:40.27
>666
もう一個別のスレッドでタイマを仕掛けるんでしょうか?
今、ループ直前のタイマセット処理を別スレッドに移動して、タイマセット
処理を書いていたところにNSThreadを起動するようにしてみたのですが、
だめでした。
0668デフォルトの名無しさん2012/07/31(火) 14:41:28.39
>>665
>NSThreadで起動したスレッドの内部で、オブジェクトのbool型変数がFALSEに
>なるまでwhile()ループする処理を入れています。
出発点がそもそもおかしいと思うが。
普通はセマフォとかメッセージ待ちにするでしょ。
0669デフォルトの名無しさん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) {}
0670デフォルトの名無しさん2012/07/31(火) 15:06:34.03
>>668
同期したいんじゃなくて、一定時間だけ処理させたかったんです。

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

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

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

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

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

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

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

>>674
これは、ちょっと僕の知識では追いつけないです(^^;
本読んで、がんばって理解してみます。
0678デフォルトの名無しさん2012/08/02(木) 15:55:17.88
@YESとか@NOのリテラルって本当に使えるんでしょうか?
@trueとかは使えるのですが@YESとか@NOリテラルはコンパイル時にエラーになります。
0679デフォルトの名無しさん2012/08/02(木) 19:56:45.36
>>678
こっちでは、使えたけど?
@YESや@NOだけじゃなく、@'a'とか、@( object1.intValue + object2.intValue )なんかもOKだったよ
0680デフォルトの名無しさん2012/08/02(木) 20:33:23.91
>>678
clangのバージョンが古いとそうなる
0681デフォルトの名無しさん2012/08/02(木) 21:28:23.75
ありがとうございます。
compilerはApple LLVM Compiler 4.0なんですが、古いですかね。
@[]とか、他のリテラルは問題なく使えるのですが・・・。
0682デフォルトの名無しさん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
0683デフォルトの名無しさん2012/08/04(土) 23:09:38.61
@YESってなんだよ。。BOOLのYESと何が違うん?
いらなくね?そんなの。。
0684デフォルトの名無しさん2012/08/04(土) 23:15:50.91
[NSNumber numberWithBool:YES]
0685デフォルトの名無しさん2012/08/04(土) 23:16:13.33
>>683
えっ
0686デフォルトの名無しさん2012/08/05(日) 01:10:11.38
ったく、どいつもこいつも楽することばっかり考えよって
0687デフォルトの名無しさん2012/08/05(日) 01:16:05.18
可読性はどうなん?
0688デフォルトの名無しさん2012/08/05(日) 02:12:25.04
すみません
iOSだとiOS SDK 6.0まで使えないんですね
@(YES), @(NO)なら使えるようで
あるいは
#define YES (1)
#define NO (0)
0689デフォルトの名無しさん2012/08/05(日) 22:36:00.40
-(id)init
{
Test *x =[Test ~~~];
}

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

selectorを使ってlolを呼び出すとxが使えません。
どのようにしたらいいでしょうか?
0690デフォルトの名無しさん2012/08/05(日) 22:57:14.70
>>689
訳わからん。変な記号や省略使わないで普通に書いてよ。
つかなんでinitでsuper initしてないの?
0691デフォルトの名無しさん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は使えないのでしょうか?
0692デフォルトの名無しさん2012/08/05(日) 23:04:33.91
>>691
???
なんでinitでallocするの?
0693デフォルトの名無しさん2012/08/05(日) 23:10:15.98
あぁ、いやTestをalloc initするのはいいんだけど、自分自身をsuper initしろよまず
0694デフォルトの名無しさん2012/08/05(日) 23:13:15.37
>>693
省略ですreturnもです
0695デフォルトの名無しさん2012/08/05(日) 23:17:45.81
init云々はおそらく関係ないからどうでもいいんだが

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

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

どう宣言したのか
何故使えないと判断したのか
そのあたりをちゃんと書けよ
0696デフォルトの名無しさん2012/08/05(日) 23:23:12.73
[NSCFString count]: unrecognized selector sent to instance
のエラーでした
0697デフォルトの名無しさん2012/08/05(日) 23:51:21.06
countなんてmethodがどこに出てくるんだよ
0698デフォルトの名無しさん2012/08/05(日) 23:52:10.93
^^;
0699デフォルトの名無しさん2012/08/06(月) 10:02:59.59
関係無さそうだと判断して変に省略するから
そこに原因があることに気がつかない。
0700デフォルトの名無しさん2012/08/06(月) 12:36:48.14
しゃーない
夏だから
0701デフォルトの名無しさん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 ];
この部分がダメらしいのですが、
何が間違っているのかご指導いただけませんでしょうか。
よろしくお願いいたします。
0702デフォルトの名無しさん2012/08/06(月) 23:02:53.60
でじゃぶ
0703デフォルトの名無しさん2012/08/06(月) 23:05:54.92
おお、これが噂に聞く問題解決力のない御仁か
0704デフォルトの名無しさん2012/08/06(月) 23:14:34.16
答えられないのにどっちにも張り付いてるクズいるんだなぁ
0705デフォルトの名無しさん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
0706デフォルトの名無しさん2012/08/06(月) 23:19:11.64
なんか湧いていたw
って言いながらなんにも答えていないってのがわからないんだからしょうがないなw
0707デフォルトの名無しさん2012/08/06(月) 23:23:56.86
だって俺が書いたらそのコード動くもの
書かれていない部分が間違ってるとしか思えん
そんな部分に対してここが間違ってるよなんて、それこそエスパーじゃないと無理
0708デフォルトの名無しさん2012/08/06(月) 23:26:19.61
「だって」が何がだってかわからんw
同じ事言っているよーな
0709デフォルトの名無しさん2012/08/06(月) 23:49:58.29
レベルの低いプログラマに全米が泣いた
0710デフォルトの名無しさん2012/08/06(月) 23:52:05.79
Edit Scheme…
Run xxx
Diagnostics
Enable Zombie Objects
0711デフォルトの名無しさん2012/08/06(月) 23:55:55.31
つーか static analyzer でも使えばすぐにわかりそうなもんだが。
0712デフォルトの名無しさん2012/08/07(火) 00:01:33.04
array = [array objectAtIndex:0];
だと、static analyzer でも出ないようだけど。もちろんコンパイルのワーニングも
>>701 だとやりそうだけどw
0713デフォルトの名無しさん2012/08/07(火) 00:11:07.52
間違いなく、どこかで array に NSString 突っ込んでるんだろうな。
早く死ねばいいのに。
0714デフォルトの名無しさん2012/08/07(火) 00:13:56.69
>>713の頭の悪さも相当なものだな
0715デフォルトの名無しさん2012/08/07(火) 00:17:12.56
だから array = [ [ NSArray alloc] init ]; はいらないって言ってるだろう。
0716デフォルトの名無しさん2012/08/07(火) 00:22:31.19
704=706=708=714の必死さが凄いw
0717デフォルトの名無しさん2012/08/07(火) 00:25:56.11
>>716
すごいエスパー力だなw
>>702,705,706,708,712
だったんだけどな。スッキリしたか?まあお前が必死と思うなら必死でいいけど
すごいエスパー力なのはわかったから、もう出てこなくていいよw
0718デフォルトの名無しさん2012/08/07(火) 01:10:17.69
よかったな。
0719デフォルトの名無しさん2012/08/07(火) 01:35:02.41
>>717
ワロタw
自己申告は偉いけど必死すぎだろw
0720デフォルトの名無しさん2012/08/07(火) 02:05:15.54
>>719
こんなんで必死ってお前のその範囲ってえらいちっちゃいなあ
「偉い」とか言っちゃうんだからマジでちっちゃいんだろうなあw
0721デフォルトの名無しさん2012/08/07(火) 02:15:09.75
必死w
0722デフォルトの名無しさん2012/08/07(火) 03:25:55.14
objcが人の心を荒ませる言語だということはよーくわかった
0723デフォルトの名無しさん2012/08/07(火) 03:41:41.69
このスレ他の言語に比べると荒れてなくてよかったのに
やっぱ夏だからか
0724デフォルトの名無しさん2012/08/07(火) 04:05:16.05
だな。最近のは人(難癖つけたいの)目当てのばっかだからな
0725デフォルトの名無しさん2012/08/07(火) 08:11:25.82
スルーすればいいのになんでいちいちバカ丁寧に相手にするんだろう それも夏だからか?
0726デフォルトの名無しさん2012/08/07(火) 09:08:07.32
http://sarudeki.maiway.jp/forum/topic/150
釣られてるやつ多すぎw
しかも回答できないというww
0727デフォルトの名無しさん2012/08/07(火) 09:42:59.78
ここにいる誰も気に喰わない奴に対して回答する義務はない
0728デフォルトの名無しさん2012/08/07(火) 11:42:47.57
>>725
暇だからw暇だからちょっと相手してやるってぐらいだけどな
難癖つけたがりは過疎っている所に出やすいよなあ。そういうのでも小心者ってはっきりわかるんだけど
0729デフォルトの名無しさん2012/08/07(火) 12:27:13.02
夏だなぁ
0730デフォルトの名無しさん2012/08/07(火) 12:55:59.55
雑魚「夏だなぁ」
0731デフォルトの名無しさん2012/08/08(水) 10:58:27.51
>>701
NSArrayをretainすべし
0732デフォルトの名無しさん2012/08/08(水) 18:38:10.65
プログラムの基本的なことかもしれませんが質問させてください

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

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

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

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

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

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

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

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

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

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

0740デフォルトの名無しさん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

これじゃ、ダメなの?
07417322012/08/08(水) 19:40:47.99
>>740
まぁ、それが引数で値を渡すっていう形になりますよね。
その先で色々と処理をしてて、ずっとその引数を渡していくというのが
ちょっとややこしいもんで・・・。
0742デフォルトの名無しさん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
0743デフォルトの名無しさん2012/08/08(水) 19:57:55.73
>>741
objc_setAssociatedObject しても良いよ
07447322012/08/08(水) 19:58:11.73
>>742
続けてレスありがとうございます。
それがグローバル変数的なあつかいになるかと・・・

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

おまえは、このときNSOperationQueueが行うスレッドの生成処理が絶対に失敗しないことを前提に、
addOperationは失敗しないと言い張っていたんだろ?
0771デフォルトの名無しさん2012/08/10(金) 00:03:41.30
>>769
定数文字列は最初からテーブルに保存されてて、release されることはないと云うこと。
0772デフォルトの名無しさん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"]);
}];
0773デフォルトの名無しさん2012/08/10(金) 00:29:48.78
>>772

keyArrayを
NSDictionary* keyMap = @{@"a":@0, @"b":@1, @"c":@2, @"d":@3, @e:@4];
に変換してしまうのはどう?
0774デフォルトの名無しさん2012/08/10(金) 00:39:50.14
>>772
線型探索が嫌なら、sortedArray の object/index を、NSDictionary の key/value にすればいいじゃん。
0775デフォルトの名無しさん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];
}
デジタルソートなので多分速いはず・・・
0776デフォルトの名無しさん2012/08/10(金) 07:35:36.88
>>769
Constant CFStringはコンパイル時に直接オブジェクトの構造を展開する。
これに対するretain/release等はNOP、retain countにも意味は無い。
>>771
それは10年前の話。
0777デフォルトの名無しさん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; // エラー
0778デフォルトの名無しさん2012/08/10(金) 10:12:19.01
NSOperationQueueが動かないって、
さすがにそこまでヘボいAPIじゃねーだろ。
0779デフォルトの名無しさん2012/08/10(金) 10:19:07.17
>>777
考えすぎじゃね・・・?
ポストに入れた郵便物がたまたまポスト内でどこかに引っかかって配達員に回収されず届かないのを心配するようなものだと思う。
0780デフォルトの名無しさん2012/08/10(金) 10:36:24.07
>>777
NSOperationQueueにしてもGCDにしてもthread poolに要求投げる処理方式だから
threadの生成タイミングと処理要求タイミングは直接関係無いよ。
そんなにthreadが起こせたか気になるならpthreads使って自分でthread作れば良い。
0781デフォルトの名無しさん2012/08/10(金) 10:38:55.89
スレッドで実行する処理の最初にNSConditionをsignalするようにしといて、
起動元ではそれを時間制限付きで待機。1時間してsignalされなければ谷へ帰りなさい!
0782デフォルトの名無しさん2012/08/10(金) 12:54:01.77
考えすぎですかね?
781の方法も参考に、やってみます。
ありがとうございました!
0783デフォルトの名無しさん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つのケースで処理を分けたいのか?

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

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

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

教えていただいた、isExecutingでも判定するようにしてみます!
0786デフォルトの名無しさん2012/08/13(月) 20:52:37.75
>>785
もしかして、スレッドの開始を確認したいっていうのは、
その「中止ボタン(NSButton)」のenableとdisableを切り替えたいから、とか?
0787デフォルトの名無しさん2012/08/14(火) 08:59:59.68
>>786
そんな感じです。
実行開始できてないのに、「中止」ボタンが押せるのも変なので。
サブスレッド側で切り替えるようにすればいいだけかもしれませんが。
昨日、サブスレッドでUIをいじるためのdispatch_syncを学習しました。
0788デフォルトの名無しさん2012/08/14(火) 12:30:08.42
「いじるための」はおかしな表現でした、スマソ。
サブスレッドから単純にUIを操作すると例外が発生するので、メインスレッド
にUI処理を委譲させるようにするために、dispatch_syncを使用する方法を
学習しました、です。
0789デフォルトの名無しさん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]とエラーがでます・・・
0790デフォルトの名無しさん2012/08/21(火) 08:52:14.97
> flickImage = [CCSprite spriteWithFile:@"%@",flick];
> @"%@",flick

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

iPhoneをiOS4からiOS5にバージョンアップしたことが原因かもしれないが、
なんか解決方法ない?
0794デフォルトの名無しさん2012/08/21(火) 14:41:06.56
Xcodeが古いとか
0795デフォルトの名無しさん2012/08/21(火) 14:56:32.58
デバイスサポートがない(Xcodeが古い、サポートプラグインがインストールされていない)
あとスレチ
0796デフォルトの名無しさん2012/08/22(水) 19:43:33.13
@"%@",flickwwwwwwwwwwwwwwwwww
0797デフォルトの名無しさん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;
}
0798デフォルトの名無しさん2012/08/23(木) 21:07:02.77
リークなのか
インデックス範囲外なら出そうな雰囲気だが
0799デフォルトの名無しさん2012/08/23(木) 21:14:18.22
>>797
Analyze はやった?
0800デフォルトの名無しさん2012/08/23(木) 23:14:23.13
Insutrumentsが報告するのは最終的にリークになったオブジェクトだから
そこで生成された後にどう触ってるかも含めて見て行かないと
どこでリークしてるかなんてわからないと思う
リファレンスカウントの履歴をちゃんと調べなさい
0801デフォルトの名無しさん2012/08/25(土) 13:09:02.30
Ubuntu12.04 で Objective-C 版の Swarm と言うライブラリをインストールするにはどうすればいいんですか

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

ていうか直接渡せばいいでしょ
0858デフォルトの名無しさん2012/09/12(水) 17:43:26.01
なんとなくわかりました
ありがとうございます
0859デフォルトの名無しさん2012/09/12(水) 23:17:50.21
初歩の初歩だぞ、それくらい自力でなんとか出来なきゃ先生きのこだ
0860デフォルトの名無しさん2012/09/13(木) 13:03:17.47
俺高卒のヒキニートだけど英語のドキュメントで困ってないぞ
0861デフォルトの名無しさん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"];
 }
}
0862デフォルトの名無しさん2012/09/13(木) 14:15:36.91
だいたいそうだけど、正確にはfuncを抜けるタイミングではない。
あと上はすごく無駄だと思う。
0863デフォルトの名無しさん2012/09/13(木) 18:32:13.74
つiBooks
意外とドキュメントが充実していたりする
0864デフォルトの名無しさん2012/09/13(木) 20:34:56.20
>>861
下のコードには、@autoreleasepoolがどこにも書いてないので、どのタイミングで解放されるかは分からない。
0865デフォルトの名無しさん2012/09/14(金) 09:51:27.50
alpha=0.0;とhidden=YESって動きにどれくらい差があるもんなんでしょうか?
0866デフォルトの名無しさん2012/09/14(金) 12:55:46.01
>>864
わからなくはないだろう
0867デフォルトの名無しさん2012/09/14(金) 13:19:50.80
funcがどういう環境の中で動いてるのか書いてないんだから、わからないだろ。
0868デフォルトの名無しさん2012/09/14(金) 14:28:32.13
for分の中で宣言したんだから、iがインクリメントされる度にいらなくなるよね。
0869デフォルトの名無しさん2012/09/14(金) 14:46:59.23
要らなくなる=解放される ではない。少なくともObjective-Cの世界では。
0870デフォルトの名無しさん2012/09/14(金) 15:19:07.98
簡易コンストラクタか。ということはデフォルトのautoreleasePoolにスタックされるのかな。
アプリ終了まで非使用領域に残り続けるってことで合ってる?
0871デフォルトの名無しさん2012/09/14(金) 17:39:26.68
>>867,870
「最も内側のautorelease poolがdrainされるタイミングで解放される」
「autorelease poolが全く存在しない場合はリークする」


ちなみにcallerとcalleeがARCでbuildされている場合には
forのスコープを抜ける毎に解放されるが、
これはコンパイラおよびランタイムによる最適化であって言語仕様ではないので、
必ずしもそうであるという保証はない。
0872デフォルトの名無しさん2012/09/14(金) 19:37:56.38
英語リファ読むの思ったより楽だけど所々解釈出来ないとこがあるべよ
それが自分のプログラミングレベルの問題なのか英語をちゃんと読めてないのかわからないのが困る
0873デフォルトの名無しさん2012/09/14(金) 20:02:35.95
きっと両方
0874デフォルトの名無しさん2012/09/14(金) 20:08:55.74
単純な英語も読めないという人は文章把握能力や推理能力の不足に
依る場合も多いから、実は日本語もうまく読み取れていない。
0875デフォルトの名無しさん2012/09/14(金) 20:59:17.39
試しにNSButtonはどおですかねん??全部理解可能??
0876デフォルトの名無しさん2012/09/14(金) 21:17:22.13
わからないとこをここで訊いてみればいいじゃん。
0877デフォルトの名無しさん2012/09/14(金) 21:29:25.56
NSButtonはalternateTitleとattributedTitle。。
と言っても後者はNSAttributdString調べてないからどっちにしろ理解出来んかもしれんけど
0878デフォルトの名無しさん2012/09/15(土) 22:12:02.24
問題出した途端、急にレスが途絶えたな
0879デフォルトの名無しさん2012/09/15(土) 23:03:25.41
問題とは?
0880デフォルトの名無しさん2012/09/15(土) 23:16:20.30
>>879
>>877
0881デフォルトの名無しさん2012/09/15(土) 23:23:21.75
「NSButtonはalternateTitleとattributedTitle??」
0882デフォルトの名無しさん2012/09/15(土) 23:29:14.65
>>881
872から読んでくれ。てかお前らちゃんと駐在してるのな。。
0883デフォルトの名無しさん2012/09/16(日) 00:33:25.98
NSButtonの挙動なんてInterface Builderでシミュレートするだけで解るだろ。
インスペクタでalternateTitleやらボタンタイプやら変えて動かしてみ。
ドキュメント以前の問題。
0884デフォルトの名無しさん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.
0885デフォルトの名無しさん2012/09/16(日) 01:22:27.85
ボタンがalternateステートの時表示するタイトルをセットする。
0886デフォルトの名無しさん2012/09/16(日) 09:49:26.59
label.text = @"%d",変数;
でエラーがでます。
対処法わかりますか?
0887デフォルトの名無しさん2012/09/16(日) 09:56:58.11
ワロタ
0888デフォルトの名無しさん2012/09/16(日) 13:12:42.10
>label.text = @"%d",変数;

label.text = 変数;

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

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

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

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

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

そう思って見ても、4行目
obj = [super myTestClassWithMessage:str]と、
スーパークラスのオブジェクトで作ったのに、
5行目の[obj setMessage2:str2]で、スーパクラスでない
自分のクラス側のメソッドにはrespondするのかが
まったくわからんのです・・・
0919デフォルトの名無しさん2012/10/03(水) 05:52:20.47
仕様です
0920デフォルトの名無しさん2012/10/03(水) 09:12:35.77
[self ...]と[super ...]は基本的にはメソッド実装の検索の起点が違うだけで、
メッセージが送られる先のオブジェクト(今の場合はSuperMyTestClassクラスオブジェクト)は同じだから。
「スーパークラスのオブジェクトで作った」のではなく、スーパークラスの「メソッド実装」を自分のクラスに対して呼び出した。
0921デフォルトの名無しさん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 でだけど、ちゃんとクラスが違うでしょ
0922デフォルトの名無しさん2012/10/03(水) 12:30:48.24
>>921
@implementatio MySubClass
+ (void)printSelfClass { [super printSelfClass] }
@end
の、
+ (void)printSelfClass { [super printSelfClass] }
が無くて直接 MyClass のを [MySubClass printSelfClass] としても同じ。たぶん
0923デフォルトの名無しさん2012/10/03(水) 12:48:43.30
>>917
こいうのがあるから、いまどきも id なんだと思うけど
MySubClass のインスタンスを MyClass の変数に格納するのはいたって普通だが、MyClass のインスタンスを MySubClass の変数に格納するのはなんだか気持ち悪いじゃんということで
まあ、どっちにしろ実質的な気持ち悪さはあんまり変わらないんだけど
0924デフォルトの名無しさん2012/10/03(水) 19:35:21.89
なんというか、本当はMyTestClassのサブクラスなのに、SuperMyTestClassという名前が付いてるあたりがキモいな。
0925デフォルトの名無しさん2012/10/03(水) 20:05:11.49
超同意。
0926デフォルトの名無しさん2012/10/03(水) 22:24:40.29
画像を表示し、フレームを超える画像サイズの場合は縮小ではなく、
スクロールバーをだす機能を作りたいと考えています。
IBにてNSScrollViewを配置し、IdentityタブでScrollView内のNSViewのクラスをNSImageViewに変更し、
Outletとして登録、setImageで画像を設定するのですが何も表示されません。
Imageメソッドで取得しても(null)になっているので設定ができていないようです。
NSScrollViewではなく直接NSImageViewを配置した場合は表示できているのですが。
どう設定すれば機能を実現できるでしょうか?
0927デフォルトの名無しさん2012/10/03(水) 23:23:29.49
>>926
NSImageViewを配置した後に、メニューから「Embed in」を選ぶ。
0928デフォルトの名無しさん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<---
0929デフォルトの名無しさん2012/10/04(木) 00:45:43.95
その切り取り線が無性に気になる
0930デフォルトの名無しさん2012/10/04(木) 00:51:44.53
>>928
これならエラー出ないんじゃね?

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

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

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

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

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

>>933 >>934

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

もう一つ質問させてください。
NSStepperを使いたいと考えているのですがステッパーにて値を変更したことを検知して
処理を走らせたいと思うのですが、どうすれば検知できるでしょうか?
0942デフォルトの名無しさん2012/10/05(金) 23:14:12.00
IBAction で繋げば反応するだろ。というかスレチ
0943デフォルトの名無しさん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に戻ってしまいます。
何処が間違ってるでしょうか?よろしくお願いします。
0944デフォルトの名無しさん2012/10/18(木) 01:02:55.67
>>943
ViewDidLoadでやりなさい

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

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

とかやらないとダメだと思うが
0945デフォルトの名無しさん2012/10/18(木) 01:06:15.56
>>944
あ、テーブル内か。ViewDidLoadは無視してくれ
cellForRowAtIndexPathかな
0946デフォルトの名無しさん2012/10/18(木) 01:37:37.63
>>944-945
おおお、cellForRowAtIndexPath内で>>944をやってみたら上手く行きました!
やっと先に進める…
ありがとうございました。
0947デフォルトの名無しさん2012/10/18(木) 19:12:11.86
イマドキはAuto Layoutでやるんじゃないの
0948デフォルトの名無しさん2012/10/19(金) 14:40:33.90
今度のiOSはTextFieldに日本語を入力するとエラーになるようになったね
0949デフォルトの名無しさん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が空っぽで帰ってきてしまいますよね ?←こういうの
エンコード出来ない文字だけを事前に除外して、それからエンコードする方法って何かありませんかね
0950デフォルトの名無しさん2012/10/20(土) 03:32:24.91
>>949
2chブラウザ作る気?
まぁ、簡単なのは、改行コードのバイト列で事前に区切ってしまえば、空っぽになる範囲を最大で1行分(1レス分)に抑えることができる
もしくは自力で、機種依存文字とか無視して強制変換するコードを書くしかあるまい
0951デフォルトの名無しさん2012/10/20(土) 12:29:03.26
>>949
iconv使え
あと、たぶんShiftJISじゃなくてCP932じゃね?
0952デフォルトの名無しさん2012/10/20(土) 12:35:37.67
NSString の文字コード変換も、iconvを使ってると聞いたことがあるが
0953デフォルトの名無しさん2012/10/20(土) 12:53:52.00
iconvのAPIを直接叩けってことだよ
0954デフォルトの名無しさん2012/10/20(土) 13:44:43.97
あぁMac OS Xならiconvでいけるか?
iOSだとiconv無理だったと思う
0955デフォルトの名無しさん2012/10/20(土) 14:32:00.94
もうおまえ黙ってろよ
0956デフォルトの名無しさん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実機で動きましたよ
0957デフォルトの名無しさん2012/10/22(月) 21:04:50.38
質問というか相談なんですけどナビゲーションでどんどんビュー階層を進んで行くにつれてデータ追加してく場合ってパブリックとプロパティどっちがコードがキレイですかね?
0958デフォルトの名無しさん2012/10/22(月) 22:58:42.33
は?
今時publicなんか使う?
今はpropertyでauto synthesize。
self使えない/使いたくないところは_前置で。
0959デフォルトの名無しさん2012/10/22(月) 23:29:23.52
辞書をプロパティリレーで回すか単品データを一つずつプロパティリレーで回すかどっかでパブリック使うか悩むんですねん、てかパブリックて使ったことないですねん
0960デフォルトの名無しさん2012/10/23(火) 00:48:56.86
ARCでretain、releaseなどを自動挿入したソースコードを見る方法ってあるんですか?
0961デフォルトの名無しさん2012/10/23(火) 02:06:01.15
無い
0962デフォルトの名無しさん2012/10/23(火) 10:25:07.28
>>961
ありがとう。
ARCを信じることにします。
0963デフォルトの名無しさん2012/10/23(火) 10:39:25.28
>>962
Xcodeのナビゲータでアセンブルコードは見れるよ
0964デフォルトの名無しさん2012/10/23(火) 18:37:01.34
>>957
いったい何を問題にしているのかよく分からん。
適当なコードを提示して説明してくれ。
0965デフォルトの名無しさん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.んだけど、スクロールビューの透明な部分が邪魔で下のメニュー画面が押せない…
0966デフォルトの名無しさん2012/10/23(火) 20:08:11.70
【Xcode】iPhoneアプリ開発初心者の集い【iOS】
http://anago.2ch.net/test/read.cgi/mac/1350384879/

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

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

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

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

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

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

そしてIBMはスルガ銀行の時みたいに失敗して損害賠償裁判に負けるのさwwww
0982デフォルトの名無しさん2012/10/30(火) 21:31:37.96
>>981
楽しそうですね
レス数が950を超えています。1000を超えると書き込みができなくなります。