Objective-C [ObjC part:5];at TECH
Objective-C [ObjC part:5]; - 暇つぶし2ch2:デフォルトの名無しさん
10/07/22 01:40:01
*** プログラム技術板 ***
【マック】Macintoshプログラミング質問箱
スレリンク(tech板)

Mac OS Xでの開発環境はどれがイイ?
スレリンク(tech板)

*** 新・mac板 ***
Cocoaはさっぱり!!! version.15
スレリンク(mac板)

Macでプログラミング{10}
スレリンク(mac板)

Xcode part8
スレリンク(mac板)

iPod touch/iPhone ネイティブアプリ製作 ver.14
スレリンク(mac板)

3:デフォルトの名無しさん
10/07/22 01:41:02
*** 本家 ***
Objective-C 2.0 プログラミング言語
URLリンク(developer.apple.com)

Introduction to The Objective-C 2.0 Programming Language
URLリンク(developer.apple.com)

そのほか英語
URLリンク(developer.apple.com)

*** 書籍 ***
荻原本
URLリンク(amazon.jp)

HMDTダイナミック本
URLリンク(amazon.jp)

4:デフォルトの名無しさん
10/07/22 01:41:46
ダイナミック Objective-C サイト
URLリンク(journal.mycom.co.jp)

Apple のランタイムのソースコード (10.5.6)
URLリンク(www.opensource.apple.com)

英語のサイト
Objective-C 入門

URLリンク(cocoadevcentral.com)
Objective-C Style 1, 2 (変数名のつけかた等)
URLリンク(cocoadevcentral.com)
URLリンク(cocoadevcentral.com)

Mike Ash さん(Audio Hijack の中の人)のブログ、 Obj-C のランタイムの話が良く出る
URLリンク(mikeash.com)

C++ と Objective-C の文法の比較
URLリンク(ktd.club.fr)

5:デフォルトの名無しさん
10/07/22 04:04:24
>>1


荻原本、BlocksやGCDを追記して改訂版出してくれないかな

6:デフォルトの名無しさん
10/07/23 01:19:42
あげ

7:デフォルトの名無しさん
10/07/23 17:06:37
なんとかBASIC!!!

8:デフォルトの名無しさん
10/07/24 15:09:57
memory管理めんどくせ

9:デフォルトの名無しさん
10/07/24 15:17:23
作法が理解出来ない奴はみなそう言う。

10:デフォルトの名無しさん
10/07/24 16:19:05
memory管理めんどくせって思ってたら、
GCあるからretain/releaseしなくていいよって聞いたのに、
iOSにはGCないんだってさ。

memory管理めんどくせ

11:デフォルトの名無しさん
10/07/25 07:10:53
GCは甘え

12:デフォルトの名無しさん
10/07/25 21:03:48
解説本読んでると、メソッド名と同じ名前の変数名が使ってあって頭がこんがらがります。
こういうのOKなんですかね。

13:デフォルトの名無しさん
10/07/25 21:21:52
>>12
JavaでもOKだね。

14:デフォルトの名無しさん
10/07/25 21:42:44
>>13
そうなんですか。
OKでも使わない方がいいような気がするんですが、慣れたら平気なんでしょうね。

15:デフォルトの名無しさん
10/07/26 19:34:25
retain/releaseでいいじゃんいいじゃん

16:デフォルトの名無しさん
10/07/28 13:02:34
新・mac板から勝手に転載w
----
[SDK]iPhoneアプリ開発初心者質問箱7[touch][iPad]
スレリンク(mac板)


624 名前: 名称未設定 Mail: sage 投稿日: 2010/07/28(水) 00:08:55 ID: B8n5McN10
電子書籍アプリ自分で作ろうかと思ったけど、プログラミング未経験にはキツい!

だれかソースコード売ってください笑
ガチで買いたいです。
詳細はappleandbananaあっとmail.goo.ne.jp

•文字サイズ変更(大中小くらいで可)
•閉じたページ記憶&そっから再開
•ページ間に画像も入れれる
•タップでページスクロールバーがでる
•右側タップで戻る、左側タップで進む
----

17:デフォルトの名無しさん
10/08/05 08:30:02
>>11
オートマ車を認められずに、マニュアル車に固執する臭いオッサンみたいだ

18:デフォルトの名無しさん
10/08/05 09:08:38
オートマ車はブレーキとアクセルの踏み間違い事故が多すぎ
明らかな構造的欠陥に目をつぶって売り続けるのは信じられない

19:デフォルトの名無しさん
10/08/07 03:52:34
iphoneアプリでhttpリクエストで取得したフィードのHTMLから、
特定のクラスのinnerHTML等を簡単に抜き出す方法を教えてくれ。
フィードの投稿一つずつをUITableViewのcellに置き換えたいです。
jqueryのようにできませんかね?webkitを少し調べればできるの?

教えてエロイ人!

20:デフォルトの名無しさん
10/08/07 03:54:32
スレ違い
失せろ

21:デフォルトの名無しさん
10/08/07 03:55:02
age

22:デフォルトの名無しさん
10/08/07 03:57:27
>>20
間違えたの!

23:デフォルトの名無しさん
10/08/07 04:00:33
板違い

24:デフォルトの名無しさん
10/08/07 04:09:09
>>22
おまえマジでうぜえよ
社会のゴミだな
まったく価値が無い

25:デフォルトの名無しさん
10/08/07 08:48:34
新規ファイルでUIVIEW SUBCLASSを作成したいんですが
Cocoa Touch Classの欄内に
UIVIEW SUBCLASSが存在しないので作成できません。
なにかインストールし忘れとかでしょうか?
どなたか教えてください。

26:デフォルトの名無しさん
10/08/07 08:58:15
自分で書け、以上。

27:デフォルトの名無しさん
10/08/08 18:56:49
そもそもある

28:デフォルトの名無しさん
10/08/09 09:06:00
>>27
どのように作成すればよいのでしょうか?
自分の場合cocoa touch classの欄内が↓のようになっている為
uiview subclassが選択出来ません。

URLリンク(www.iphonedevcentral.com)

29:デフォルトの名無しさん
10/08/09 09:18:22
たのしそうだな・・・何年かしたら、できるようになるんじゃない?

30:デフォルトの名無しさん
10/08/09 11:12:44
MT車の方が楽しい

31:デフォルトの名無しさん
10/08/09 13:10:09
>>28
う~ん、落ちが分かったような…
MacOSのバージョンとXcodeのバージョンは?
あとCPUの種類も聞いておこうかw

32:デフォルトの名無しさん
10/09/02 14:13:07
@interface Foo : NSObject {
  NSString filePath;
}

-(id)initWithFilePath:(NSString)filePath;

@end

とメンバ変数と同じ名前の引数を渡したいのですが、

@implementation Foo

-(id)initWithFilePath:(NSString)filePath {
  self = [super init];
  if(self != nil){
    filePath = filePath;
  }
}

@end

とするとエラーになります。自身が持つメンバ変数を指定する方法はありませんか?
Javaで言うと、this.filepath = filepath; のような方法を教えてください。

33:デフォルトの名無しさん
10/09/02 14:40:49
>> 32
基本的にはできないと思ったほうが幸せかも。
普通はメンバ変数をアンダースコア付きにするとか、仮引数を変更する。
NSString *_filePath;
- (id) initWithFilePath:(NSString *)path;

self->filePath = filePath; とか、self.filePath = filePath; は、できるけど警告出るし。

それよか、NSString に * がない方が気になるのだが…

34:デフォルトの名無しさん
10/09/02 14:48:59
アンダースコアプレフィックスはAppleに予約されてる
いつか痛い目みるかもしれない

GoogleのObjC規約ではサフィックスにアンダースコア付けることになってる
URLリンク(google-styleguide.googlecode.com)

35:デフォルトの名無しさん
10/09/02 15:24:03
>>33さん
ありがとうございます。
警告が出ると鬱陶しいので、アンダースコアを先頭に付けようと思ったのですが、
>>34さんが書かれているようにAppleが使いますね。
メンバ変数の末尾にアンダースコアを付ける記述を試してみようと思います。

お二人共、ありがとうございました。
(NSString *)になってないのは、単純にミスです。お恥ずかしい…。

36:デフォルトの名無しさん
10/09/02 15:26:46
それの適応範囲はクラス名、メソッド名など。
よく読めば分かると思うけど、インスタンス変数名には適応されてない。
KVC のダイレクトアクセスで "_hoge" が検索対象のトップだしね。

google の規約を持ち出すのはなぜ?
URLリンク(developer.apple.com)

37:デフォルトの名無しさん
10/09/02 15:32:53
追記:
サフィックスにアンダースコアをつけると、KVC の検索対象に入らないから勧めない。

38:デフォルトの名無しさん
10/09/02 15:51:19
>インスタンス変数名には適応されてない
されてる
だいたい実際に使われてるんだから普通に考えれば使いたいと思わない

>KVC のダイレクトアクセスで "_hoge" が検索対象のトップ
それこそまさに
Appleが使っているから→フレームワークのコア部分→すこしでも早くしたい
からであって、一般開発者が立ち入る領域ではない

>google の規約を持ち出すのはなぜ?
単に例として挙げた
他にObjCのまとまった規約の存在を知らないし

>KVC の検索対象に入らない
普通にプロパティ立てればいいだけ

39:デフォルトの名無しさん
10/09/02 17:57:08
>>38
> 他にObjCのまとまった規約の存在を知らないし
 Cocoa なら、Appleのコーディングガイドラインをきちんと読むべきだ。その上で、
それでもなお、「適応されている」と主張するなら根拠となる記述を挙げて欲しい。
Appleのインスタンス変数命名規約には"_"の禁止なんて、どこにも書いてない。
お宅様の「普通」とやらはしらんけど、さっき貼った正規のガイドラインすら読まずに
適当なこと書くのは、世間一般でいう「普通」ではないようだね。

 インスタンス変数はクラス毎の名前空間にあるので、クラス間で被っても問題なく
使えるのが当然。例外は継承元のいずれかに同名のインスタンス変数があった場合だが、
これも理由つきでエラーが出るので安全。KVCも対応。これで禁止する理由は何かある?
メソッド名すら「かぶらないことが確実に確認できるなら」という条件付きで、
"_"プレフィックスが正式に認められているのに?

>少しでも早くしたい
速くするのに KVC なんて、メソッドなんて使わねーす。冗談も大概にしてくだせぇw

40:デフォルトの名無しさん
10/09/02 18:16:38
まぁまぁ、そんなにカッカしないで、俺にファイルから1行ずつ読み込む方法を教えてくれよ。
NSFileHandleとNSDataを使ってあとはゴリゴリやるしか方法は無いのかね?

41:デフォルトの名無しさん
10/09/02 18:22:11
NSString -getLineStart: end: contentsEnd: forRange: ?

42:デフォルトの名無しさん
10/09/02 18:24:10
>>41
それこそ正に、NSData からゴリゴリやるの一例だろ。

43:デフォルトの名無しさん
10/09/02 18:54:17
>>39
A prefix has a prescribed format. It consists of two or three uppercase
letters and does not use underscores or “sub prefixes.”


>メソッド名すら「かぶらないことが確実に確認できるなら」という条件付きで、
>"_"プレフィックスが正式に認められている

Don’t use the underscore character as a prefix for your private methods.
Apple reserves this convention.


>速くするのに KVC なんて、メソッドなんて使わねーす

あなたがあなたのコードの中でどうするかなんて問題にしてないです
フレームワークへのアクセスを言ってるんです


なんかドキュメントに書いてることと真反対のこと言い出すとか、触っちゃいけないタイプの人に触っちゃったようだ
みなさんごめんなさい、もう終わりにします

44:デフォルトの名無しさん
10/09/02 18:56:54
一行づつ読み込むのにゴリゴリじゃない方法って、、、一行づつ読む時点でゴリゴリだろう


45:デフォルトの名無しさん
10/09/02 19:49:36
>>43
>39の意味が分からないようですね。ガイドラインを、正確に、読みましょうね。
あなたの挙げたものはインスタンス変数の規約ではありません。
インスタンス変数についての規約には、次のように書いてあります。

@public は避けろ。データの格納の仕方より、interface に気を使え。
@private と @protected をうまく使え。
名前は的確に。
アクセスできる変数にはアクセサつけろ。

以上。これらから「インスタンス変数名に"_"を使うな」とは読めませんね。

46:デフォルトの名無しさん
10/09/03 09:22:55
>>44
一気に取得する方法があるのかい+?

47:デフォルトの名無しさん
10/09/03 09:35:48
まるごと読み込んでから、componentsSeparatedBy...:

48:デフォルトの名無しさん
10/09/03 10:45:11
自己解決。
NSString stringWithContentsOfFile:encoding:error なんつー便利なメソッドがあるじゃないの。
これで取得して改行コードで区切っていけばオッケーって訳だな。
それがもしかしたら、>>47さんのメソッドなのかもしれない。
試してみるよ、ありがとう!

49:デフォルトの名無しさん
10/09/03 13:41:38
>>48
自己解決って、、、質問の直後 >>41 で真っ先に回答が出てるじゃないか。
改行コードで区切ったりすんなよ。


50:デフォルトの名無しさん
10/09/03 13:57:45
>>49
それこそ正に、NSData からゴリゴリやるの一例だろ。

51:デフォルトの名無しさん
10/09/03 16:14:15
巨大なファイルを扱うから NSFileHandle で部分的に読む込もうとしてるのかと思ったら、それ以前の問題だったらしい。

52:デフォルトの名無しさん
10/09/03 20:13:30
ファイルの中身がそのまま見えるイメージで良いならmmap()するのが一番簡単
メモリ中に置かれてるのと同じ処理で良いし、巨大なファイルでも仮想記憶システムが
面倒見てくれるので無駄なコピーも発生しない。

53:デフォルトの名無しさん
10/09/08 19:11:09
>>45
ガイドラインには、「インスタンス名の頭に_を使うな」とは書いてないかもしれません。
しかし、スーパークラスとサブクラスで同じ名前のインスタンス変数を宣言することはできません。(コンパイルエラーになります)
そして、Cocoaのクラスのインスタンス変数名は全て_から始まっています。
なので、実質的に「インスタンス変数名の頭に_は使えない」となります。
逆に言うと、インスタンス変数名の頭に_を使わなければ、Appleとの競合を確実に避けられるということです。

54:デフォルトの名無しさん
10/09/08 20:03:54
>>53
まだやるんですかぁ・・・書いてないんだから、使ってもいいでしょうに。
>スーパークラスとサブクラスで同じ名前のインスタンス変数を宣(ry
安全にコンパイルエラーになるなら、変数名変えればいいだけ。>39で言及済みです。

>そして、Cocoaのクラスのインスタンス変数名は全て_から始まっています。
誠に残念ですが、isa は "_isa" ではない。よって "_" が無くてもダブる可能性がある。

反論終わり。勝手にガイドラインを拡大して、それを広めないでくださいな。
あなたのスタイルを批判しているのではない。
不正確な情報を、さも正しいかのように言うのを批判しているのみ。

55:デフォルトの名無しさん
10/09/08 20:18:33
そもそも>>39が嘘ばっかりやん

56:デフォルトの名無しさん
10/09/08 21:01:18
具体的にどこでしょう?ぜひ改めさせていただきたいので、ご指摘願います。
タイポ ○適用 ×適応
メソッド名の "_" は誤解を招いたかもしれませんが、ガイドラインにある "BF_..." の例。
「名前空間」が同じく誤解を招くかもですが、継承を含めた ivar[] のことです。

57:デフォルトの名無しさん
10/09/08 22:34:40
AT車の便利さと比較してる奴は馬鹿か?
AT車MT車は一般人が使うものだろ。
一般人が使うものなら楽であればあるほどいい。
しかしおまえらはプログラマという専門家だろ?楽に走ってどうすんだ。
楽な言語で楽に書いて細かい原理は知りませ~ん、じゃあ専門家とは言えんぞ。


58:デフォルトの名無しさん
10/09/08 23:37:13
昔はObjective-Cは専門家しか使わなかったけど
iPhogeが出て来てここ数年でがらっと風向きが変わった

59:デフォルトの名無しさん
10/09/09 00:14:15
楽な言語で楽に書いて詳細も知ってます、
だろ普通は



60:デフォルトの名無しさん
10/09/09 12:41:33
Javaで書きたいiPhoneアプリ

61:デフォルトの名無しさん
10/09/09 13:33:23
Javaだけはないわ

62:デフォルトの名無しさん
10/09/09 18:38:59
ヌルポ

63:デフォルトの名無しさん
10/09/11 03:42:44
すいません何故こうなるか教えてください。

ヘッダで宣言したインスタンス変数に、実装で型を指定せずにallocしようとしたら、その変数は分からないと言われました。

反対に、ヘッダで宣言したNSArray*変数を実装でも型を使用しようとしたら名前ダブってると言われます。

同じように感じるその二つに、二通りの結果があるのは何故でしょう?

64:デフォルトの名無しさん
10/09/11 09:13:28
>>62
ガッ!!

65:デフォルトの名無しさん
10/09/11 09:49:23
>>63 ソース書いてみて

66:デフォルトの名無しさん
10/09/11 10:30:02
>>65
ありがとう。今外出しているので晩に書かせていただきます。

67:デフォルトの名無しさん
10/09/11 11:28:34
>60
そういや2008年頃に、SunがiPhone用のJava VMを作成するとかいうのが
ニュースにあったような気がするけど、どうなったのかな?

68:デフォルトの名無しさん
10/09/11 17:54:12
>>67
Jobsが禁止した。

69:デフォルトの名無しさん
10/09/11 18:20:33
新しい規約だと各々がJAVA VMを内包するという力技ならOK
かな?

70:デフォルトの名無しさん
10/09/11 18:59:57
>>69
え、できるようになったのは確定事項? もしそうなら嬉しい
Java VMじゃないけど、SchemeのSECDマシンが動けばいいのにと妄想してた

71:デフォルトの名無しさん
10/09/11 21:43:51
>>70
外から見えるVMは改定でもダメ。

72:デフォルトの名無しさん
10/09/11 22:18:43
>>71
iPhoneアプリケーションに、Obj-Cで書いたSECDエンジンと
SECDコード(=Schemeソースをコンパイルしたオブジェクト)を内蔵させる、
という考え方なんだけど、それでもダメ?
ユーザからは、普通のiPhoneアプリにしか見えないはずなんだ。
SECDエンジンなら(Java VMよりも)単純だから、
自分で作ってみようかと妄想してたんだけど....

73:デフォルトの名無しさん
10/09/11 22:51:02
昔々の事じゃ、Cocoa-JavaというJavaからCocoaフレームワーク呼ぶ物がMac用にあってのう。
Objective-Cになれた開発者にはえらい不評だったそうな。


74:デフォルトの名無しさん
10/09/11 23:01:44
自分は結局Cocoa-Javaは使わずじまいだったが、
Javaは(少なくとも当時のJavaは)静的な言語だったから、
Objective-Cデベロッパからすれば、
柔軟性の無い堅苦しいものに見えたのだろね

75:デフォルトの名無しさん
10/09/11 23:04:24
Obj-C習得者がいちいち Cocoa-Java に手を出すことあるかね?
自分はまったく触らなかったから、特に思うことはないな。

76:デフォルトの名無しさん
10/09/12 09:17:58
Javaを使う意味の一つに、マルチプラットフォームって言うのがあるけど、Macだけで動かすつもりならJavaを使う必要なんてないだろうね


77:デフォルトの名無しさん
10/09/12 10:03:20
Objective-Cのような欠陥言語は使いたくもない。

78:デフォルトの名無しさん
10/09/12 13:07:02
>>77
コード書くほうに欠陥があるのでは? 裸のCで書いても問題ないわけだし。

79:デフォルトの名無しさん
10/09/13 00:46:50
>>72
新しい規約なら問題ない筈。面白そう。

80:デフォルトの名無しさん
10/09/13 09:12:35
>>77
どういった部分に欠陥があるのかkwsk

81:デフォルトの名無しさん
10/09/13 14:58:20
ひじょーに個人的な思いを横レスすると、Dictionary のような多用する物が重くて
stl を併用しなきゃならない辺りがオタ心をくすぐって嬉しいよな。


82:デフォルトの名無しさん
10/09/23 12:54:25
TableViewに複数のセクションがあり、各セクションごとにセルを追加/削除できる
プログラムがあれば教えて頂きたいのですが、
よろしくお願いします。

83:デフォルトの名無しさん
10/09/23 13:46:26
NSTableView?UITableView?

84:デフォルトの名無しさん
10/09/23 14:39:09
>>83
UITableViewです。
お手数おかけしますがよろしくお願いします。

85:デフォルトの名無しさん
10/09/23 17:08:38
@encode ディレクティブでとれる const char * から、ビットフィールドを含む
構造体のサイズを計算したいのですが何かよい関数ご存知ありませんか?
NSGetSizeAndAlignment はビットフィールドを処理できないようで、SIGABRT が
でます。ビットフィールド無しだと計算してくれるのですが…
 また、10.3.* ~ 10.5.* の gcc_os に objc_sizeof_type() というのを見つけたのですが、
bit field のエンコード形式がどうも実際(10.5SDK)とは違っていました。
 これは修正して自分で組むしか無いでしょうか?

86:デフォルトの名無しさん
10/09/23 18:35:39
>>82>>84
自分で調べる気、やる気まったく無しw
書いておけば適当に解答返ってくるだろって雰囲気丸出し。

87:デフォルトの名無しさん
10/09/23 18:38:55
>>85
なんか難しいことをしようとしてる様に見えるけど、大元の目的が何なのかを書けば
誰か別の方法を教えてくれるかも。

struct st1 {char flag : 1;};
struct st2 {int flag : 1;};
@encodeの文字列は両方b1だけど、sizeofしたら1と4だよね。
だから@encodeの文字列からはできないんじゃ?

88:デフォルトの名無しさん
10/09/23 19:22:06
>>87
レスどうもです。具体的には自前のデータ領域付きのArrayを作りたいと思ってまして。
CFArray + 領域、みたいな感じで、構造体に応じてデータ領域を確保できればなーと。
@encode の情報だけで何とかならないかなと思っていたのです。ご指摘の問題を見ると
確かに難しそうですね。やりたかった事は sizeof(type) 渡せば解決するんです。

ですが、NSGetSizeAndAlignment がビットフラグで SIGABRT だすのを知ったので、
じゃあどうやって NSValue なんかは処理しているのかな?と調べていたのです。
で、objc_sizeof_type() にたどり着いた訳ですがどうも違う。
 手がかりがなくなったので、ご存知の方がいるかもしれないと書き込んだ次第です。

89:デフォルトの名無しさん
10/09/23 19:44:22
>>84
んじゃUITableView Class Reference見て
Table View Programming Guide for iOSよっく読んでから
Related sample codeの中から好みに合うの探してw

90:デフォルトの名無しさん
10/09/23 20:01:04
>>88
NSValueにビットフィールドありの構造体を渡したらnullが返らない?

91:88
10/09/23 20:28:59
>>90
げ!確かに null が返ってきますね。
何でも入るもんだと思い込んでいました、お恥ずかしい。
てことは、やはり@encode情報からはsizeはとれないと思った方が良さそうですね。
いろいろとご指摘、ありがとうございます。

92:デフォルトの名無しさん
10/09/27 02:54:14
教えてください。
ビューを編集する様な処理をして、次の行に進んだところでブレークポイントを入れて見ると、
まだビューがその編集に反映してなくて、そのクラスの処理が終った時点でやっと反映されるのですが、
それを編集直後に反映させるにはどうしたら良いでしょうか。

93:デフォルトの名無しさん
10/09/27 05:45:27
エスパーすると -setNeedsDisplay: or -display やれ

94:デフォルトの名無しさん
10/09/27 09:41:32
相互に定義しあうprotocolってうまい書き方ないでしょうか。
@protocol protocolA
- (void) setTarget:(id <protocolB>)obj;
@end

@protocol protocolB
- (void) setTarget:(id <protocolA>)obj;
@end

当然ですが、コンパイルが通りません。

classの場合、@class hoge、とか書いておくと双方向での参照を
難なく定義出来ると思いますが、protocolの場合はどうすればよい
でしょう。

95:デフォルトの名無しさん
10/09/27 09:47:43
@protocol protocolB;
@protocol protocolA
- (void) setTarget:(id <protocolB>)obj;
@end

@protocol protocolA;
@protocol protocolB
- (void) setTarget:(id <protocolA>)obj;
@end


96:94
10/09/27 09:56:35
ばっちり通りました。ありがとうございました。

@protocol ESProtocolServer;
@protocol ESProtocolClient;

@protocol ESProtocolServer <NSObject>
- (int) idleTime;
- (oneway void) shutdownServer;
- (oneway void) setClient:(id <ESProtocolClient>)client;
- (BOOL) receiveReq:(NSDictionary *)msg type:(int)type index:(int)index;
@end

@protocol ESProtocolClient <NSObject>
- (oneway void) setServer:(id <ESProtocolServer>)server;
- (BOOL) receiveReply:(NSDictionary *)msg type:(int)type index:(int)index;
@end



97:92
10/09/28 12:19:46
>>93
ありがとうございます。

しかし、mainViewControllerにUIViewのインスタンスを合成して、
[self setNeedsDisplay]
を表示させたいタイミングに入れましたが、
そうしていない時と同じように、スレッドが終了するまで描画されません。

何か根本的に勘違いしてますでしょうか私は、、。

98:デフォルトの名無しさん
10/09/28 12:34:03
UIKitの処理は指示してすぐに全部その場でやってるとは限らないよ
たぶんスレッドを長い間止めないための最適化だと思うけど
メソッド呼んでもRunLoopに処理を登録するだけで、実際に処理されるのは
イベントループが一回以上回った後なんてのはたくさんある

99:デフォルトの名無しさん
10/09/28 12:40:34
というかsetNeedsなら当然の結果だろ。

100:92
10/09/28 22:11:13
>>98
ありがとうございます。

UIViewは基本好きな時に再描画出来ない様ですね。
別スレッドに描画メソッドを入れて、
[self performSelectorOnMainThread:@selector(メインスレッド名) withObject:nil waitUntilDone:TRUE];
でメインループを呼びましたら、描画スレッドはそのままスレッドから抜けてくれて、その際に再描画してくれました。
そのメソッドが何ものかハッキリ分かりませんが、支障が出ない事を祈ります。


101:92
10/09/28 22:13:19
上のですが、普通にメインループを呼んだだけだと、描画スレッドが処理が戻ってくるまで終わってくれなくて再描画してくれませんでした。

102:デフォルトの名無しさん
10/09/29 01:00:37
というかsetNeedsなら当然の結果だろ。

103:デフォルトの名無しさん
10/09/29 21:47:57
Xcodeの静的アナライザでメモリリークが見つかって、当該オブジェクトをメソッドの最後で
releaseするようにしたらアプリが落ちるようになったんだけど、こんなときどうすればいいの?

104:デフォルトの名無しさん
10/09/29 21:54:17
常駐アプリでないなら、些細なリークを気にしない。

105:デフォルトの名無しさん
10/09/29 22:11:41
>>104
THX!

106:デフォルトの名無しさん
10/09/29 22:24:07
>>103
自分に開発は向いてないと悟り、そっとMacBookを閉じる。

107:デフォルトの名無しさん
10/09/29 22:36:08
>>103
URLリンク(developer.apple.com)
Cocoaメモリ管理プログラミングガイド
Objective-C 2.0 プログラミング言語
が参考になるかと
もし初心者なら入門書を買うほうがいいよ

108:デフォルトの名無しさん
10/09/29 22:38:26
>>106
そしてNintendo DSを開く…

…じゃなくて、なぜアナライザが指摘した理由をマニュアルで調べないと分かんないよ
条件分岐とか絡んでない?

109:デフォルトの名無しさん
10/09/29 23:04:36
静的アナライザって、リークではない部分を誤ってリークだと報告することはないの?

110:デフォルトの名無しさん
10/09/29 23:14:46
あると言えばある
ないと言えばない

111:デフォルトの名無しさん
10/09/30 00:10:47
条件分岐の中でのみアロケートなりリリースなりをしてないか?

112:デフォルトの名無しさん
10/09/30 00:56:41
リリースして落ちるんだったら、別のとこから参照されてるんだろ。

113:デフォルトの名無しさん
10/09/30 23:37:48
iPhoneSDK アプリケーション開発ガイドという参考書を読んで、
なんとなく全体的に理解できた程度の実力です。
objective-cのアプリ開発経験はありません。

現在、ログイン機能を搭載しているWebサイトを、
iPhoneアプリとして動作しようとしています。

こういう風なデザインにしたいという案があり、
imixというiPhoneアプリのUI的な感じで作ろうと思っています。

ログイン情報を保持して、
アプリを起動した時点でログイン状態になる、
っという仕組みが全くわかりません。
ログイン状態の保持はNSMutableDictionaryを使用して、
書き込み読み出しを行うのかなっていうのが、
なんとなく分かっていることです。
しかし、その情報を使用して、
自動的にログインというのが全く分かりません。

どなたかご教授お願いいたします。


また今作成しようとしているiPhoneアプリでは、
一般的にペニオクと呼ばれるシステムに近いアプリです。
クレジットカードを使用しての仮想マネーの購入、
仮想マネーを使ってのオークションへの参加、
こういった機能はiPhoneアプリとして認可されるのでしょうか?

こちらについてもご教授お願いいたします。

114:デフォルトの名無しさん
10/09/30 23:54:44
>>113
スレチ

115:デフォルトの名無しさん
10/10/01 02:13:33
Obj-Cもメジャーになったな。

116:デフォルトの名無しさん
10/10/01 03:45:59
>>113
いろいろな意味で無理。

117:デフォルトの名無しさん
10/10/01 08:38:53
>>115
いろいろな意味で無理。

118:デフォルトの名無しさん
10/10/01 09:25:54
色々な意味で真理(が好き)

119:デフォルトの名無しさん
10/10/01 10:46:05
ま~たヤクザがペニオクに目を付けたな

120:デフォルトの名無しさん
10/10/01 15:31:07
ペニスオークション?

121:デフォルトの名無しさん
10/10/07 08:17:28
アップデートきてた

Xcode 3.2.4 は Mac OS X 用のデベロッパツールのアップデートリリースです。このリリースは、gdb、Interface Builder、Instruments、llvm-gcc および Clang オプティマイザ、Shark、および Xcode でのバグを解決します。
Mac OS X 10.6.2 Snow Leopard 以降にインストールする必要があります。詳しい手順、既知の問題、およびセキュリティ上の注意事項については、付属のリリースノートを参照してください。

122:デフォルトの名無しさん
10/10/07 23:58:44
ホゲってなんですか?

123:デフォルトの名無しさん
10/10/08 12:09:24
>>122
URLリンク(kmaebashi.com)

124:デフォルトの名無しさん
10/10/09 01:47:21
>>123
冗談でしょうもっと深い意味があるはず

125:デフォルトの名無しさん
10/10/09 15:41:28
ああ、鮫島事件並みに深い意味があるんだよ

126:デフォルトの名無しさん
10/10/09 17:12:14
基本的な事ですが教えてください。
合成やデリゲートでインスタンスを操作出来るのなら、
ライブラリ設計の段階で何故継承が必要なクラスを作ったのでしょうか?

127:デフォルトの名無しさん
10/10/09 17:21:40
例えばNSViewの描画メソッドで一部に独自の描画を加える場合delegationではどうするの?
originalのdelegateを取得しておいて新しいdelegateを設定、
描画メソッドでoriginalのdelegateに描画させた後、独自の描画を加える?

サブクラス化の方が分かりやすくていいと思うけど?


128:デフォルトの名無しさん
10/10/09 17:33:34
>>127
ありがとうございます。
つまり継承の意義は、メソッドのオーバーライドが出来るか否かにかかっているのですね。

129:デフォルトの名無しさん
10/10/09 18:46:28
>>125
的確だな

130:デフォルトの名無しさん
10/10/11 13:03:04
Webページのダウンロードで行き詰ってしまっため、アドバイスを頂けないでしょうか。
指定したサイトを画像付きで一式ダウンロードして、オンラインで閲覧できるようにしたいと思っています。
#ByLine等と同じ感じです

ここを参考にダウンロード処理を書きました。
URLリンク(developer.apple.com)

取得結果をファイルに保存したのですが、htmlファイルしか保存出来ていません。
画像込みでダウンロードするにはどうしたらよいのでしょうか?

131:デフォルトの名無しさん
10/10/11 13:05:25
>オンラインで閲覧
すいません、"オフライン"の間違いです。。

132:デフォルトの名無しさん
10/10/11 13:19:23
>>130
ダウンロード処理はいいが、HTMLの解析の処理は?

133:デフォルトの名無しさん
10/10/11 13:22:47
あー、というか、HTMLとはどういう構造で、httpでどのような通信のやりとりをするか、
分かってないのでは?プログラミング以前の問題。

134:デフォルトの名無しさん
10/10/11 13:34:36
回答ありがとうございます。

>HTMLの解析の処理は?
解析とは「取得したHTMLからimgタグ等を探して画像を保存&パスもローカルに変更」
ということを指している、と思ってよいでしょうか。
ダウンロードのメソッドを叩いて、これと同じことが出来るのかな、と思っていました。

これを手で書くのは結構つらそうですね。。
IE等で「Webページの完全保存」を実行した場合と同じようなことができるライブラリはないでしょうか。
#WebページをキャッシュするiPhoneアプリは皆さん自作しているのかなぁ。。

135:デフォルトの名無しさん
10/10/11 14:12:52
スレチだっつの
ここは Objective-C"言語" のスレだ
iPhone開発スレあるから探してそっち行けよウゼェ

136:デフォルトの名無しさん
10/10/11 14:57:33
了解です。失礼しました

137:デフォルトの名無しさん
10/10/17 12:28:41
メソッドの第一引数のコロンの前はメソッド名なのに、第二引数以降はコロンの前がラベルになってる。

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

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


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

139:デフォルトの名無しさん
10/10/17 14:23:21
だな。

140:デフォルトの名無しさん
10/10/18 10:28:46
URLリンク(developer.apple.com)

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

141:デフォルトの名無しさん
10/10/18 12:39:04
メソッドをメッセージとか読んだりすることもある。
初めての時は、別物だと思っていた

142:デフォルトの名無しさん
10/10/18 13:23:08
>> 141
厳密には違うので、別物が正しい。
[object hoge]; はobjc_msgSend()でメッセージを送っているだけ。
メッセージを受けたobjectが対応するメソッドを見つけて実行する。
メソッドには個々の実装があるけど、メッセージは共通の実装。

143:デフォルトの名無しさん
10/10/18 14:00:40
>>140
ObjCの専門用語としてラベルって言ってるんじゃなくて
日常英語としてラベルって書いてるんだろうね

ラベルって単語だけ抜き出されるとC言語のgoto文のラベルを先に連想しちゃう

144:デフォルトの名無しさん
10/10/18 14:02:37
>>142
>メッセージは共通の実装。


メッセージとは実装である、と言ってるように見えるけどそれはまた違うような?

145:デフォルトの名無しさん
10/10/18 14:20:39
>>144
では、メッセージは id + SEL + ... とすればいいの?
それともメッセージは概念だから、対応するものを考えない方が良いのかな。

146:デフォルトの名無しさん
10/10/18 15:03:20
メッセージというと、レシーバに対して送られるもの、つまり
メッセージセレクタに加えて引数までひっくるめたものになるんじゃないかな?

もしC++やJavaと比較して、対応するものを考えてるのであれば
あまり考え込まない方がいいかもw

147:デフォルトの名無しさん
10/10/18 15:58:15
>140のリンク先読んだ

メッセージを送信すると
メッセージのメソッド名(=セレクタ)(とレシーバ)から
メソッド実装 が決定される

だそうですね
なのでメソッド名(SEL)がメッセージの属性であることは確実です
が、
「メッセージが実際に呼び出すメソッドは、レシーバによって決まります」
てことなのでレシーバはメッセージにはふくまれないです

引数は不明ですね

148:デフォルトの名無しさん
10/10/18 16:21:07
>>143
おらの本ではキーワードたべ

149:デフォルトの名無しさん
10/10/18 20:53:32
setWidth:10 height:20

なんだか気持ち悪いよ~

setPos width:10 height:20

だったらすっきりするんだが。
なんで前者みたいな仕様になったの?


150:デフォルトの名無しさん
10/10/18 20:57:06
setPos はまずったな。
setSize にしとくわ。主旨はそこじゃないのでカンニン

151:デフォルトの名無しさん
10/10/18 21:47:36
>>149
setSize(of)width(and)height
setWidth(and)height

152:デフォルトの名無しさん
10/10/18 21:50:31
setWidth:height:
こんなメソッド無いだろ。

153:デフォルトの名無しさん
10/10/18 22:03:29
setSize:(CGSize)sizeとかにしろや潔癖症。

154:デフォルトの名無しさん
10/10/18 23:12:14
>>152
いや、話の流れ的に、>>140のサイトに出てきた例を引き合いに出してるだけ。

155:デフォルトの名無しさん
10/10/24 20:42:22
delegateが絡むと参照カウンタの動きが見えづらくなるのがホントに嫌になる

156:デフォルトの名無しさん
10/10/24 21:01:06
えっ

157:デフォルトの名無しさん
10/10/28 21:33:20
デバッグコンソールにすら何も出力せずに黙って落ちるのってどうにかならないの?

158:デフォルトの名無しさん
10/10/28 21:41:31
所詮中身はCなんだからそんなもんだ

159:デフォルトの名無しさん
10/10/29 18:56:53
>>157
そのパターンは大抵、スタックぶち壊して、リターンするときあり得ない所へすっ飛んでるだけ。

160:デフォルトの名無しさん
10/10/29 21:26:47
>>157
出力するようにプロジェクトの設定変えろよ。

161:デフォルトの名無しさん
10/10/29 22:02:40
>>160
え!そんな設定があるんですか?!

162:デフォルトの名無しさん
10/10/29 22:55:19
環境変数で
NSZombieEnabled=YES
NSDebugEnabled=YES
NSDeallocateZombies=YES
NSHangOnUncaughtException=YES
NSAutoreleaseFreedObjectCheckEnabled=YES
とかを追加すると、コンソールに出てくる内容が変わる。
あとはビルドの設定でDebugモードにしたりとか。

163:デフォルトの名無しさん
10/10/30 10:22:28
デフォでは、ビルド設定Debugモードじゃないの?

164:103
10/11/07 20:32:28
releaseメッセージの送り先のインスタンスのdeallocメソッドの中で、外部オブジェクトへの参照変数をnilにしてなかったのが落ちる原因でした。
こんなもん気づくかw

165:デフォルトの名無しさん
10/11/07 21:15:31
それが原因じゃない方に10^10ジンバブエドル賭ける

166:デフォルトの名無しさん
10/11/09 12:39:29
>>165

やけに安いなぁw

167:デフォルトの名無しさん
10/11/10 17:12:53
NSMutableArrayって永続化できる?
NSArrayにへんかんしなきゃ駄目?

168:デフォルトの名無しさん
10/11/10 17:35:08
>>167
中身が全部永続化できるなら出来るよ
でも、NSArrayで返って来るからmutableCopyしなきゃダメだったと思う

169:デフォルトの名無しさん
10/11/10 18:51:31
>>168
おおお、返りのことまでエスパー回答ありが㌧!!!!

170:デフォルトの名無しさん
10/11/15 21:44:28
NSEvent が引数の関数を書いたのですが、これはイベントが起きると自動で呼ばれるのでしょうか?
それともaddEventListenerみたいなことをしないといけないのでしょうか?

171:デフォルトの名無しさん
10/11/15 22:05:20
まず関数とメソッドの違い、レスポンダチェーン、NSResponder について学んで下さい。

172:デフォルトの名無しさん
10/11/16 07:05:34
>>171
ありがとうございます。おかげでイベントの取得に成功しました。
一つ質問があるのですが、
ウィンドウにフォーカスがない状態でマウスのイベントを取得することはできますか?

173:デフォルトの名無しさん
10/11/17 11:16:38
#CのConsole.Clear();みたいなコンソールクリアするメソッドある?
標準出力をAIRに渡してるんだが、出力するたびにログが蓄積されて困ってる(´・ω・`)

174:173
10/11/17 12:47:00
自己解決。
printf("Hello World\n");の後にfflush(stdout);しないとバッファに溜まっちゃうんだな・・・。
コンソールクリアする必要はなくなったが、
system("clear");はデバッガコンソールでTERM environment variable not set.とエラーでるが、
ターミナルでは実行出来る感じ。


175:デフォルトの名無しさん
10/11/17 23:09:24
>>172
試してないけど [NSApp currentEvent] はどうか。

176:デフォルトの名無しさん
10/11/24 21:33:33
Windowsで使えるIDE(コード補完があれば十分)って何かない?
※できればCocoaのライブラリも補完できれば理想。

177:デフォルトの名無しさん
10/11/25 15:32:45
ソニー、次世代デバイスの開発環境にAppleのiOSと同じObjective-C採用
URLリンク(365yen.jp)

だってお^^;

178:デフォルトの名無しさん
10/11/25 16:50:45
動的結合不可なカスタムObjective-Cとか持ってきそうだなw

179:デフォルトの名無しさん
10/11/25 17:50:56
最近のソニーって後追いばっかりな印象があるな
ObjCを選んだのは…話題性狙いか?

180:デフォルトの名無しさん
10/11/25 17:52:02
卑屈になるなよw
objcの良さが一般にも浸透してきたんだろ。

181:デフォルトの名無しさん
10/11/25 17:53:08
>>178
UIKitとかあるんかねぇ?

182:デフォルトの名無しさん
10/11/25 19:17:04
sonyKit

183:デフォルトの名無しさん
10/11/25 19:42:49
APIが3年で破綻するのかw

184:デフォルトの名無しさん
10/11/26 18:40:35
SONY版Objective-Cでは、ObjectがSonyTimerを継承します。

185:デフォルトの名無しさん
10/11/26 21:42:01
初心者におすすめのObjective-Cの解説本ある?
できればcocoaについても解説がのってるととても嬉しい

186:デフォルトの名無しさん
10/11/26 23:03:05
>>185
>初心者におすすめのObjective-Cの解説本

このスレの3あたり嫁

187:デフォルトの名無しさん
10/11/26 23:03:34
ほんとにObjective-Cの言語だけの解説なら10ページくらいで終わっちゃいそう
ランタイムAPIまで含めても30ページもありゃ終わるんじゃないか

188:デフォルトの名無しさん
10/11/27 05:49:23
>>187
是非書いてみて晒してくれ

189:デフォルトの名無しさん
10/11/27 09:06:04
C/C++の基本的な知識についての説明は他本に譲りますとか

190:デフォルトの名無しさん
10/11/27 14:32:42
C分かるならマイコミとかの記事で十分習得できるけどな。

191:デフォルトの名無しさん
10/11/27 15:43:13
>>187
このスレ残り800近くあるからぜひここで晒してみてくれ

192:デフォルトの名無しさん
10/11/27 17:30:40
ここに貼るのはやめれ
2ch に著作権譲るのはバカバカしい
どっかのロダに貼ってリンクすべし

193:デフォルトの名無しさん
10/11/27 17:44:15
>>181
AppKitはあるね。と、いうかOpenStepにSnapのExtensionを追加した形
既にドキュメントもSDKも(最新は1.2)一応配布されてる。

194:デフォルトの名無しさん
10/11/29 21:26:30
>>187
Apple提供のpdf
Objective-C 2.0 プログラミング言語
が最低限だろうな。

195:デフォルトの名無しさん
10/11/29 21:30:48
Objective-C、Cocoa、Xcode、foundationフレームワーク、これらの用語の関係を教えてください。
初級者本ですら色んな用語が次から次に出てきて理解できません。

XcodeはMacでiPhone開発する時に使う、ツール群のことを指していると考えていいのかな?
しかしそうするとCocoaって何なんですかね。。Cocoa環境とか言われてますが。
そのCocoaとやらの中にFoundationというのがあるらしいのですが、ここら辺までくるともう何がなにやら。

196:デフォルトの名無しさん
10/11/29 21:53:20
>>195
まずは、初心者本を読んで、用語を理解してください

197:デフォルトの名無しさん
10/11/29 23:05:51
>>195
別に覚えなくて良いよ

198:デフォルトの名無しさん
10/11/30 01:00:34
>>195
ま~ぱのコトテンでも読んでな!

199:デフォルトの名無しさん
10/12/02 01:07:22
>>194
それどこ情報~?どこ情報よ~?

200:デフォルトの名無しさん
10/12/02 02:42:30
>>199
URLリンク(developer.apple.com)

201:デフォルトの名無しさん
10/12/02 04:41:14
>>199
こっちの方が新しい
URLリンク(developer.apple.com)

202:デフォルトの名無しさん
10/12/02 16:26:52
アプリ起動時にスクリーンセーバーを無効にして、
終了時に戻すことやりたいんだけど、
どうすればいい?

203:デフォルトの名無しさん
10/12/02 19:16:00
ggrks

URLリンク(hintsforums.macworld.com)

204:デフォルトの名無しさん
10/12/02 22:12:30
で、187は>>201をどう10ページにまとめあげるか楽しみに待っているんだが。

205:デフォルトの名無しさん
10/12/02 23:41:16
4x4のサムネール表示なら収まる
とネタを潰しておこうw

206:デフォルトの名無しさん
10/12/03 00:00:19
NSDataのなかの特定の範囲のバイト列を取り出して、32ビットのint型に
変換したいのですが、どのような方法がありますでしょうか?

subdataWithRange:NSMakeRange(3,4) のようにしてバイト列を取り出して

int32_t datasize;
[data getBytes:&datasize];

こすうれば一応できるのですが、JavaにあるByteBufferのgetIntのような感じで
取得したいと思っています。 そういう方法ってありますか?

207:187
10/12/03 00:21:26
冗談半分のレスにそんな期待されてもなあ
そもそも書くなんて言ってないし

10pは大げさすぎたけどどっちにしても言語の解説だけなら
薄っぺらい本にしかならないしCocoaの解説も含んでないと
成り立たんでしょーっていう >>185 への回りくどいツッコミ
だったんだが誰も気づいていくれなかった
長文スマソ

208:デフォルトの名無しさん
10/12/03 00:26:17
俺は気付いてたよ

209:デフォルトの名無しさん
10/12/03 00:38:14
ヲレもヲレも

210:デフォルトの名無しさん
10/12/03 01:03:26
>> 206
Java全く知らないんだけどgetBytesを見つけといてgetBytes:range: を使わな
いのはなにか画期的な良さがそのgetIntにはあるの?
int32_t intData;
[data getBytes:&intData NSMakeRange(offset, sizeof(int32_t))];
戻り値が直接返ってくるような関数がご希望ならカテゴリでNSDataに追加すれ
ばいいだけだと思うのですが、この手のデータの扱いだとエンディアンが必ず
問題になるのでこのまま表に見えるようにして使うほうが無難そうだし。

211:デフォルトの名無しさん
10/12/03 01:15:43
>> 206
int32_t intData = *((int32_t *)([data bytes] + offset));
Objective-Cっぽくないな。


212:デフォルトの名無しさん
10/12/03 05:51:01
なんでいちいちNSData新規に作る必要があるの?

>>211 に一票追加。


213:デフォルトの名無しさん
10/12/03 11:31:04
>>211
OOPっぽくはないが、Objective-Cっぼい気はする

214:デフォルトの名無しさん
10/12/04 01:55:44
完全未経験からITスクールに1ヶ月半ほど通ってiPhone開発の会社に入社しました。
ITスクールではHTMLとJavaScriptとPHPを勉強しました。
研修も無しに来週から1人で出向することになりました。
土日でObjective-CとiPhone SDKとやらを勉強しておけ、ということらしいです。
出向先は社員数人のベンチャーで全員デザイナーということなので
開発者は自分1人です。
どう考えても詰んでるんですが、この業界はこういうのが普通なのでしょうか。。
2日で出来る限り覚えるとしたらどの本で勉強すればいいでしょうか?

215:デフォルトの名無しさん
10/12/04 02:04:41
>>214
金をケチってObjective-C未経験者を雇うとか、底辺デザ事務所らしい発想だな。
一般的なIT業界はさておき、iPhone界隈では普通ではない。

とりあえず、アップルの日本語に翻訳されたドキュメントを読め。
言語仕様、チュートリアル、UIのガイドライン、MVC、KVCあたりのことは必読。
C言語すら知らなかったら2日じゃムリ。

デザイナー相手ってことなら、Interface Builderの使い方だけ覚えて、
見た目でごまかして、時間稼ぎをしつつ勉強するのがいいと思う。

216:デフォルトの名無しさん
10/12/04 02:08:31
どう考えたって真っ当な会社じゃない。
が、今時未経験者を取るような会社はそんなレベルが多いんだろうね…

とりあえず日本語参考資料。
URLリンク(developer.apple.com)

出向先が全員デザイナーって…iOSのデベロッパ契約も結んでないに300ペリカ


217:デフォルトの名無しさん
10/12/04 02:13:55
うわ、すげぃ
手持ちの技能から考えるなら
Obj-CじゃないけどDashcodeいじって
なんかアピール出来るもの作って生き残りをはかるとか

218:214
10/12/04 02:47:04
皆様ありがとうございます。
やはり普通ではないのですね。
C言語も分からないので、一からObjective-Cを勉強ってのは難しそうですね…。
とりあえずアップルの日本語資料を読むことにします。
macを支給してもらえたのが唯一の救いなのかな。土日は寝ずに勉強して誤魔化せる程度にはしておこう。

219:デフォルトの名無しさん
10/12/04 09:23:17
すみません、質問です。
プロパティの宣言で、retainとreadonlyを一緒に宣言するのって
どういう意味があるんでしょうか?
CoreDataのさンプルでこんな宣言がされています。

@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;

retainって、値をセットするときの指定だと思っていたんですが..


220:デフォルトの名無しさん
10/12/04 09:30:03
- (id)retain;
ってご存じ?

221:デフォルトの名無しさん
10/12/04 09:31:32
いや、..存じません。

222:デフォルトの名無しさん
10/12/04 09:49:23
自己解決しました。

223:デフォルトの名無しさん
10/12/04 18:57:08
>>219
すいません。219と違う人だけど、わからないので
説明お願いします。実質retainは機能しないと思うのですが。

224:デフォルトの名無しさん
10/12/04 19:19:41
Google in English で、「retain readonly」でググるとでてくるよ。

225:デフォルトの名無しさん
10/12/04 19:59:18
public では readonly でも、private では readwrite で利用するから?

226:デフォルトの名無しさん
10/12/04 20:42:02
>>224
URLリンク(stackoverflow.com)

出て来たわw
見方が分からんが、#10ってやつだと実装はreadwriteになってる。
readonlyは、いつもgetterを書いてたからこういった形式は
初めて見たわ。


227:デフォルトの名無しさん
10/12/04 20:52:28
クラスエクステンションとかで拡張するときのために、
あらかじめ、指定しておくみたいな

228:デフォルトの名無しさん
10/12/05 01:06:35
>>225-226
外に向けてreadonlyにするときは実装側でプロパティが使えなくて
いつも面倒だなあと思ってた。でもこういう方法があったんだね。
これならほぼ全てにプロパティ使えてコードが綺麗になるわ。
とてもためになったよ、ありがとう。

229:デフォルトの名無しさん
10/12/05 21:51:17
うーむ…なんというか、なんか二度手間に見えてしまうなぁ…
個人的には synthesize を無理矢理使っているような感じを受けてしまう。

230:デフォルトの名無しさん
10/12/05 22:12:14
煽りでも何でもないんだけど
Objective-Cが一般的に普及することはあり得ないのかな?
この先もマック開発とかiPhone開発とか限定でしょうか?

231:デフォルトの名無しさん
10/12/05 22:45:29
まず「一般的に普及」を定義してくれ。

232:デフォルトの名無しさん
10/12/05 22:51:16
>>230
ソニーが採用したって噂を聞いたけど、まあ、一般的に普及することは無いだろう。


233:デフォルトの名無しさん
10/12/05 23:25:02
充分普及してると思うが

234:デフォルトの名無しさん
10/12/05 23:35:16
ええそうですね、十分普及してますね。
でも、一般的に普及することは無いでしょうね。

235:デフォルトの名無しさん
10/12/05 23:57:51
つーか普及すればAppleにとっても嬉しいはずなのに、どうしてこんなに閉鎖的なんだろうな。
iPhone SDKだって他のOSにも開放してれば今頃iPhoneはモバイル界のWindowsになっていたはずなんだ。

236:デフォルトの名無しさん
10/12/06 00:12:44
Mac の一台も買えないような開発者に何が出来ると

237:デフォルトの名無しさん
10/12/06 00:39:20
>iPhone SDKだって他のOSにも開放してれば

そんなこと出来る会社ならintelMacがもっと伸びて世界中のPCはMacになってるはず

238:デフォルトの名無しさん
10/12/06 01:23:14
ハードとソフトを自分たちで設計し作っているから、
個々の性能を引き出し、微妙な調整を施し、デザイン
を洗練し、独特のブランドを確立できているんだろが。


239:デフォルトの名無しさん
10/12/06 01:30:18
Macは壊れやすい印象しかないな

240:デフォルトの名無しさん
10/12/06 01:35:32
Macの起動速度は、少なく見積もっても、Windowsの1/2以下。
Windows使いは人生のうち100時間ぐらいをその起動待ちで
ぼーっと費やしている。とってもかわいそう。

241:デフォルトの名無しさん
10/12/06 01:43:18
Macはハッカー御用達ツール。
Googleを初め、世のハッカー企業社員のプレゼンは
その幹部を含め、ほとんどがMacを使っている。
独自の文化と真のUnixと、プロプライエタリの堅牢性と、
オープンソースの柔軟性を絶妙のバランスで見事に融合
させた結晶。それがMac。
Macを知らない人は、人生の1/10くらい損している。
ましてやプログラマを名乗ってはいけない。土方を名乗る
のはまぁ許す。


242:デフォルトの名無しさん
10/12/06 01:53:24
いやいや、Googleは業務用にはUbuntu使ってる社員が多いし、プレゼンはたいてい
WindowsでPowePointだよ。

プロプライエタリの堅牢性なんて言えば聞こえはいいが、実際はオープンソースへのただ乗り。
Darwinの公開だっていやいやだし、WebKitはKHTMLからのフォークだから仕方なく。
Objective-Cコンパイラに至っては、FSFからGPL違反の指摘を受けて、やっと公開したよね。
(まあ当時は、AppleではなくNeXTだったが)

まあ、おれも漢字Talk7の頃からMac使っててNeXTCUBEも持ってたので、好きこのんで
使ってはいるが、企業としては一貫して嫌いだ。

243:デフォルトの名無しさん
10/12/06 01:59:46
昔は囲い込みの方針を曲げずにズルズルと失敗し続けてた印象だけど
最近はiPhoneアプリをXcode+ObjCだけに一度限定して
その後すぐに緩和するとか割と狡猾だよねー

244:デフォルトの名無しさん
10/12/06 02:00:57
>>235
わかんないよ
Windows用Xcodeも準備中かもしれないよ?

まあ手を広げすぎても自分たちの実現したいユーザエクスペリエンスが維持できるかと自問して
出来そうにないからやらないだけなんだろう。まずMSが信用ならんし・・・

245:デフォルトの名無しさん
10/12/06 02:01:15
え?

246:デフォルトの名無しさん
10/12/06 02:05:12
>>242
PowePointは糞。つか名前も聞いたことない。
Keynoteは神。

247:デフォルトの名無しさん
10/12/06 02:10:05
>>242
お前が嫌ってるのはAppleじゃなくてCanonの間違いじゃないのか?

248:デフォルトの名無しさん
10/12/06 02:10:39
>>244
Windows用Xcode?
なぜわざわざ?
なぜわざわざ開発環境を悪化させる必要があるの?
なぜわざわざ情弱大衆に媚びるの?
なぜわざわざ使えないのが分かりきってる土方に提供するの?
イラネwww

249:デフォルトの名無しさん
10/12/06 02:17:06
コマンドがBSDとGNU系で混ざってたりシステムコールが特異なところがあるし
MacPortsがあるから助かっているものの、
インタネット系開発はLinux系のがなにかと楽かなー。

250:デフォルトの名無しさん
10/12/06 02:54:51
一般的にというのはC++くらいあちこちで使われるという意味です

251:デフォルトの名無しさん
10/12/06 03:15:48
きめぇ…これがマカーというやつなのか

252:デフォルトの名無しさん
10/12/06 08:00:36
>>230
ありえねーよ馬鹿。

253:デフォルトの名無しさん
10/12/06 12:30:55
新しく流行するデバイスのアプリ開発がアセンブリ縛りだったとして、
これからはアセンブリが流行りますかってくらいの愚問だな。

254:デフォルトの名無しさん
10/12/06 16:00:05
mutableCopyで返されるオブジェクトは、autoreleaseされていないぞ、気をつけろ。

255:デフォルトの名無しさん
10/12/06 17:35:50
BLOCKSが簡単すぎてワロタ
もうthreadはいらねーな

256:デフォルトの名無しさん
10/12/06 17:39:15
mutableCopyに限らずcopyって単語が含まれるメソッドで返るオブジェクトの
所有権は使う側にある(allocしたのと同じ)
メモリ管理ポリシー読もう

257:デフォルトの名無しさん
10/12/08 17:58:30
Blocksは使用する直前に宣言する派
メッセージの中に含めるのはなかなか馴染めない・・・

258:デフォルトの名無しさん
10/12/09 00:43:55
Cはエッチのことと聞きましたが、
Objectiveとはどんなプレイですか?

259:デフォルトの名無しさん
10/12/09 01:07:13
それぞれの性感帯をカプセル化します

260:デフォルトの名無しさん
10/12/09 10:04:02
RootViewControllerって、プログラムがでかくなると、
適合する、プロトコルの宣言がいっぱいになるよね。


261:デフォルトの名無しさん
10/12/09 10:37:28
そんなに何でもかんでもRootViewに載せようとすることはないな
多くて4つぐらい

262:デフォルトの名無しさん
10/12/09 13:10:40
ぬぁに、俺が今作っている奴、RootViewControllerのプロトコル
の宣言が、既に10越えているんだが…
やりかたがまずいんだろうか…


263:デフォルトの名無しさん
10/12/09 21:09:04
何から何まで同じクラスにデリゲートさせてないか?
データの持ち方が混沌としてるなら一度整理して
役割を分担させてみてはいかがかと。

264:デフォルトの名無しさん
10/12/10 00:26:54
>>258
客観的なセックスだよ。

265:デフォルトの名無しさん
10/12/10 00:42:02
オブジェクト性行

266:デフォルトの名無しさん
10/12/10 00:43:14
>>263
だってよぉ、画像編集アプリなんだけど、ナビゲーションコントローラにしてるから、
まず、UINavigationControllerDelegate そして、ScrollViewの中にタップ可能な
ImageViewを配置しているから、UIScrollViewDelegateとタップ検知を受け取る、
TapDetectingViewDelegate(サンプルからパクった奴) そして、画像選択用の、
UIImagePickerControllerDelegate そして、位置情報を使うから、
CLLocationManagerDelegate それから、警告などでアラートの表示もするから、
UIAlertViewDelegate 処理確認用のアクションシートも表示するから、
UIActionSheetDelegate、それから、メイン画面から呼び出せる画像処理用のボタン
をいくつか配置していて、そこから、他のビューコントローラを呼んだりもするわけだけど、
結局処理する画像は、メインに配置してあるから、各コントローラからの通知を受け取る
ための、~ControllerDelegate とか、いつのまにか、いっぱいになっちまったわけさ。
処理対象(画像)がメイン画面にあるから、いずれにしても、UIの結果を受け取らないと
いけないわけで、しょうがなくね?何かいいやり方あれば教えてちょ。

267:デフォルトの名無しさん
10/12/10 09:47:45
カスタムViewControllerとかTarget-ActionとかNotificationとかDelegateとか
なんとでもなりそうだけど

268:デフォルトの名無しさん
10/12/10 12:56:37
むりくり分割すれば、できなくはないんだけど、
その分割したモジュールとのやりとりが必要に
なって、面倒くささが先にたっちゃうんだよな。

269:デフォルトの名無しさん
10/12/10 16:29:32
Objective-Cの初心者です。
URLをSafariで開く、というのをメソッドで書くとしたら、
どのようになりますか?
次のように書いたところ、
NSString * string = [@"URLリンク(www.google.co.jp)"];
の行で、Expacted '-' before '' Token(小さくて読めない)というエラーが出てます。
''のあいだの文字は「}」ですか?

#import <Cocoa/Cocoa.h>
IBOutlet id inputField;
IBOutlet id outputField;
int main(int argc, char *argv[])
{
NSString * string = [@"URLリンク(www.google.co.jp)"];
- (void) startURL:(string) URL;

return NSApplicationMain(argc, (const char **) argv);
}

- (void) startURL:(string) URL
{
NSTask * task = [NSTask new];
[task setLaunchPath: @"/bin/sh"];
[task setArguments:[NSArray arrayWithObjects: @"-c open -a Safari ", URL, nil]];
[task launch];
}

270:デフォルトの名無しさん
10/12/10 16:34:24
URL文字列を括っている[ ] は、いらないんじゃね?

271:デフォルトの名無しさん
10/12/10 17:11:17
NSString * string = @"URLリンク(www.google.co.jp)";
としたところ、startURL undeclared
とか、エラーが増えました。


272:デフォルトの名無しさん
10/12/10 17:24:37
ここでは教えられないほどの間違いがあるので、本やセミナーでやってください

少なくとも
URLリンク(developer.apple.com)
これが理解できなければ無理。

273:デフォルトの名無しさん
10/12/10 18:02:01
宣言と実装がごっちゃになってるな。
どういうコピペをしたらこんなソースが出来上がるんだ

274:デフォルトの名無しさん
10/12/10 18:40:55
アルファベット覚えたて人がTOEIC受験しに行くぐらい無茶
最低限の文法理解と語彙が必要

275:デフォルトの名無しさん
10/12/10 18:53:29
これはちょっと、ぶったまげるくらい可笑しいな。

276:デフォルトの名無しさん
10/12/10 20:37:18
デバッガが苦笑するレベル

277:デフォルトの名無しさん
10/12/10 20:38:20
いつもそういわれるんです。
まずはこれを動くようにしてから。

本は5冊(斜め読み)しましたが、
ぜんぜんわからんのです。

おかしく楽しんだんですから、動かしてくださいよ。
お願いします。


278:デフォルトの名無しさん
10/12/10 21:52:55
どんだけ斜め読みしてんだよ
5冊を斜め読みするんじゃなくて、
1冊をじっくり読んでくれ

279:デフォルトの名無しさん
10/12/10 23:39:09
でも初心者のもつ疑問に答えるような本は、ないんです。
具体的には、一連の手順(メソッド?)を呼び出すときのメソッドの書き方(書式)、
それはMainのなかに書くのか外に書くのかとか。


280:デフォルトの名無しさん
10/12/10 23:53:32
> Mainのなかに書く
んなことやってるサンプルコードがあったの? 無いのにどうしてそんなことしようと思ったの?
どこからそんな発想湧いてきたの? ねぇなんで?

281:デフォルトの名無しさん
10/12/11 00:03:06
>>279
まずはやっぱCじゃね?
そこが分かってたら、そのソースみたいな間違いは、そもそもやらないと思う。

>>280は書き方は悪いけど、基本中の基本があんたに欠けてるのは俺も感じるよ。

自分は楽しいココアでxcodeの操作の概要と、ココアフレームワークの使い方は
大体分かるようになった。

そこまでくれば、あとはもう慣れだ。アップルにサンプルコードも沢山あるし。


282:デフォルトの名無しさん
10/12/11 01:21:36
C#でそうだから。
C#暦2年です。

#import <Cocoa/Cocoa.h>
IBOutlet id inputField;
IBOutlet id outputField;
int main(int argc, char *argv[])
{
return NSApplicationMain(argc, (const char **) argv);
}

NSString * string = [@"URLリンク(www.google.co.jp)"];
- (void) startURL:(string) URL;

- (void) startURL:(string) URL
{
NSTask * task = [NSTask new];
[task setLaunchPath: @"/bin/sh"];
[task setArguments:[NSArray arrayWithObjects: @"-c open -a Safari ", URL, nil]];
[task launch];
}

ってこと?

283:デフォルトの名無しさん
10/12/11 06:15:27
>>270の言うことすら既に守られてないじゃん。
他人の言うことに耳を傾けない人なんだね。

284:デフォルトの名無しさん
10/12/11 09:47:48
>>282
メドッドの理由がないんだから、ただの関数で
書いておけよー

285:デフォルトの名無しさん
10/12/11 10:37:01
5冊も斜め読みでこれって凄い才能だな

286:デフォルトの名無しさん
10/12/11 10:59:32
C#ってすごい言語なんだな
OOPLだと思ってたけど違うみたいだし

287:デフォルトの名無しさん
10/12/11 12:17:20
>>279
公式ドキュメントが一番易しく的確に理解に必要最小限のことを解説してる。
アプリケーションチュートリアルの熟読をおすすめする。
市販の本は酷いとこれのほぼコピペで深く説明すべきところをはしょった劣化版だったりする。
ほんの数ページで手取り足取り動くとこまで連れてってくれるだろう。
これ読んでわからなければお前の脳じゃ無理だから諦めろ。

288:デフォルトの名無しさん
10/12/11 13:27:11
>>282
C#やったんなら、classに相当する記述がそのソースに見当たらないことに違和感を覚えない?

まあ、この場合は、>>284



289:デフォルトの名無しさん
10/12/11 14:12:55
>>285
この人の事だから本当に斜めに読んでそう。

290:sage
10/12/11 15:12:41
いや、きっとC#でもまともには...

C#が悪いわけではないと思うw

291:デフォルトの名無しさん
10/12/11 15:28:13
C#はVBと同じような書き方すらできるからなー
元々はVB坊なんじゃね?

292:デフォルトの名無しさん
10/12/11 16:00:57
本のページの左上から右下へ真っ直ぐに斜め読みしてんだろうな。

293:デフォルトの名無しさん
10/12/11 22:49:33
文字列比較でisEqualToString:メソッドとstrcmp()関数のどっちが早いか
下のようにテストしたのですが、isEqualToString:メソッドの方が10倍ぐらい早い結果になりました。
自分的にはstrcmp()の方が早いと予想してたので驚きました。これは普通でしょうか。

NSString *s1 = @"abc";
NSString *s2 = @"ABC";

for (int i = 0; i < 1000; i++) {
 // isEqualToStringメソッドを使った比較
 // BOOL flag = [s1 isEqualToString:s2];
 // strcmp()関数を使った比較
 // BOOL flag = strcmp([s1 UTF8String], [s2 UTF8String]);
}

294:デフォルトの名無しさん
10/12/11 23:05:15
常識で考えて -UTF8String がオーバーヘッドになってるだけ

295:デフォルトの名無しさん
10/12/11 23:37:06
まぁ、最近は常識のない奴が増えたからな

296:デフォルトの名無しさん
10/12/12 00:27:18
Objective-Cのメソッドと関数の違いを知らないので、
ただの関数でどう書くのかよくわからないので、
ただの関数での書き方を教えてください。

メソッドの理由があるかないかを判断するのには、
条件が少ないと思いますが。

Classに相当する記述がないことには違和感がありますが、
そんなことを言い始めたら、ぜんぶに違和感を感じています。
なぜNSとすべてにつける無駄をするのか(ジョブズの趣味)とか。
\を含まないのに@を""の前につける意味は、とか。
*はなんだとか。

-はなんだとか。
nilってなんだよ、へんな略し方するなとか。
ま、それでいまこんな感じです。

297:デフォルトの名無しさん
10/12/12 00:30:51
#import <Cocoa/Cocoa.h>
IBOutlet id inputField;
IBOutlet id outputField;
int main(int argc, char *argv[])
{
return NSApplicationMain(argc, (const char **) argv);
}

NSString * string = @"URLリンク(www.google.co.jp)";
- (void) startURL:(string) URL;

- (void) startURL:(string) URL
{
NSTask * task = [NSTask new];
[task setLaunchPath: @"/bin/sh"];
[task setArguments:[NSArray arrayWithObjects: @"-c open -a Safari ", URL, nil]];
[task launch];
}


298:sage
10/12/12 00:52:10
#include <stdio.h>
#include <stdlib.h>
#include<ctype.h>

#define iskanji(c)\
(0x81 <= (c & 0xff)&&(c & 0xff) <= 0x9f || 0xe0 <= (c & 0xff) && (c & 0xff) <= 0xfc)

main(int ac, char *av)
{
FILE *fp;
++av;
if(av==0){
exit(1);
}

fp=fopen(av,"r");
char c;
while((c=fgetc(fp))!=EOF){
if(iskanji(c)){
fputc(c,stdout);
fputc(fgetc(fp),stdout);
}
else
{
fputc(c,stdout);
}

}
}
segmentation faultになったよ なぜ

299:デフォルトの名無しさん
10/12/12 01:07:05
>>298
>main
int main(int argc, char * argv[], char * env[]);

300:デフォルトの名無しさん
10/12/12 07:53:50
>>296
全部、サイトや本に書いてあるよ

301:デフォルトの名無しさん
10/12/12 11:14:52
地獄のソースコードだな。
霊媒師とかにお祓いしてもらった方が良いレベル。

302:デフォルトの名無しさん
10/12/12 14:15:52
天才チンパンジー「アイちゃん」が Obj-C訓練してるのかと思った。

303:デフォルトの名無しさん
10/12/12 14:31:27
objectivecってどれぐらいでマスターできますか?
C言語は簡単でした。
オブジェクト指向言語は今回が初めてです。
今高①ですが模試の評価でも東大余裕なので頭も悪くないです。

304:デフォルトの名無しさん
10/12/12 14:57:11
>>303
>今高①ですが模試の評価でも東大余裕なので頭も悪くないです。

頭が悪くない人はこんなスレ見つけてる間にささっと始めてる

305:デフォルトの名無しさん
10/12/12 17:48:46
>>304
ちゃんと質問に答えてくださいよ


306:デフォルトの名無しさん
10/12/12 18:14:55
>>303
まあ、まずはこれでも読んどけ。古い本だが、オブジェクト指向の勘をつかむのには悪くない。
URLリンク(www.amazon.co.jp)

その後はこれな。
URLリンク(www.amazon.co.jp)

じゃあな。

307:デフォルトの名無しさん
10/12/12 18:18:33
オブジェクト指向初めてで、Cは分かってて、Objective-Cやりたいんだったら、
オブジェクト指向の学習に特化したSmalltalk本がいいと思う。
結構出てるみたいだし。

308:デフォルトの名無しさん
10/12/12 19:02:10
>>305
おまえなら1ヶ月だな

309:デフォルトの名無しさん
10/12/12 19:49:11
>>307にもあるように、Smalltalk 本に書かれていることがすんなり理解できる柔軟性があれば
Objective-C の Smalltalk 的側面なんかサブセットなので、恐るるに足らずと思っていていいです。
Smalltalk やその考え方自体、小難しく受け取られがちですが、分かってしまえば何と言うことはないので。

中古本が安く手に入る「例題による!!オブジェクト指向分析設計テクニック」URLリンク(amzn.to)
とかお薦めですが、あいにく処理系が古くてコードを試すことができないので、同じ著者の「Smalltalkで
学ぶオブジェクト指向プログラミングの本質」URLリンク(amzn.to) とかざっと読んでみるのはいかがと。

310:デフォルトの名無しさん
10/12/12 19:53:19
オーケーオーケー。
つまりたったこれだけのコードを修正もできず、
問題点を具体的に説明もできない程度にしか力がないんだ、キミタチは。
ぜんぶサイトに書いてあるよって、どこのサイトだよ。
URLリンク(developer.apple.com)
ならよんだけどわかんないぜ。
数ページでいいっていうそのサイトを具体的に頼む。

311:デフォルトの名無しさん
10/12/12 20:55:10
だから言ったじゃん。こんな奴は精神科行くかお祓いしてもらった方が早いんだって。

312:デフォルトの名無しさん
10/12/12 21:20:18
また斜め読みかよ

313:デフォルトの名無しさん
10/12/12 23:04:06
>>310
だいぶ疲れているようだな
まあ珈琲でも飲んでモチツケ

314:デフォルトの名無しさん
10/12/12 23:46:29
>>298
>なぜNSとすべてにつける無駄をするのか
Objective-Cにはネームスペースが無いから一定のまとまりに対するプレフィックスは必要だろ。
ちなみに、NSは今のマックの前身となったNextStepで使われていたときの名残。

>\を含まないのに@を""の前につける意味
@はNSStringのインスタンス生成を簡略化するためのシンタックスシュガー
@をつけないのはC言語の文字列

>*はなんだ
ポインタの宣言や値参照の演算子。乗算の演算子。

>nilってなんだよ、へんな略し方するなとか
nilは略語ではなくて、無を意味する歴とした英単語。
nullとほぼ同義だけど、Objective-Cではインスタンスが割り当てられていないことを示すため
に使われる。


315:デフォルトの名無しさん
10/12/13 04:07:36
>>314
その親切さは、本当に彼にとって親切なのだろうか?

316:デフォルトの名無しさん
10/12/13 08:11:46
逆にそこまで気を使ってやる必要もないだろう。
どうせ、>>296は「名前空間程度も実装できない」とか「yes, noがキモい」とか言うだけさ。

317:デフォルトの名無しさん
10/12/13 10:57:48
>>310
>ならよんだけどわかんないぜ。

あんたコンピュータ業界にゃ向いてないから諦めなって
自分探しの旅にでも出たらどうだ?
できれば薄着で、北の方へ

318:デフォルトの名無しさん
10/12/13 11:29:55
>>310
煽って答えを出して貰おうとしているんだろうけど、それで答えを得てもあなたの知識にはならないよ
あと、書物は読むだけじゃなく理解しないと意味がない

319:デフォルトの名無しさん
10/12/13 17:09:36
【C#, C♯, C#】 MonoMac 【MonoDevelop】
スレリンク(mac板)

320:デフォルトの名無しさん
10/12/15 02:26:36
多重配列の指定セクションのロウを数える用途で以下の定義を書きました。

宣言
- (NSUInteger)countRowDoubleArray:(NSMutableArray*)doubleArray ofSection:(NSUInteger)section;

実装
- (NSUInteger)countRowDoubleArray:doubleArray ofSection:section {

NSMutableArray* row = [doubleArray objectAtIndex:section];

return [row count];

}

しかし、宣言と定義で二重に宣言されているというエラーが。また、関数objectAtIndexの第一引数は、
キャストせずにポインタを整数型に変換しているとエラーが出ます。

しかし他に同じ名のメソッドなど宣言も実装もしておらず(試しに名前を変えても同じエラー)、
objectAtIndexの引数は明らかにNSUInteger型として宣言しています。なぜエラーが出るのでしょうか?

321:デフォルトの名無しさん
10/12/15 02:32:02
ヘッダに書いてるとか。

322:デフォルトの名無しさん
10/12/15 03:34:50
implementationの方のdoubleArrayとsectionの型を省略してるからid型になってる

つかエラーは勝手に解釈せずにそのままコピーしろ

323:デフォルトの名無しさん
10/12/15 10:16:57
>>321
>>322
有難うございます。
implementationで引数に型を宣言した事が今までなかったので驚きました。
何故いる時と要らない時があるのか、、。
エラーの件次に質問させて頂く時はそのままコピーしますすいません。
(確かにid型になってました、、。)

324:デフォルトの名無しさん
10/12/15 13:04:55
>implementationで引数に型を宣言した事が今までなかったので驚きました。
こっちが驚くわ

325:デフォルトの名無しさん
10/12/15 16:00:46
新人類だな。

326:デフォルトの名無しさん
10/12/16 09:49:44
>>58
iPhogeという呼び方があるのか~
今度から使わせてもらおう

327:デフォルトの名無しさん
10/12/16 14:36:35
isEqualToString を使って文字列の比較をしたいのですがどうやっても上手くいきません。
比較方法は配列に保存してある文字列をobjectAtIndex で呼び出してそれを比較するようにしています。

NSString* seikai
NSString* answer

seikai = [mondai objectAtIndex:1]
answer = [mondai objectAtIndex:2]

if ([seikai isEqualToString:answer])

のような形で比較しています。

328:デフォルトの名無しさん
10/12/16 15:13:25
>>327
中の文字列、書き出してくれないと。
コード自体は問題ない。
NSLog(@"%@,%@",seikai,answer);
でもいれてみたら。

329:デフォルトの名無しさん
10/12/16 16:36:45
セミコロンも使ってないし変数名も間違ってるけど、コンパイル通ってるのかなあ。

seikai = [mondai objectAtIndex:0];
answer = [mondai objectAtIndex:1];
で上手く行きました! とか無いよね

330:327
10/12/16 17:59:37
すいません。詳しく書くと

-(void)StringArray{
NSString *path = [[NSBundle mainBundle] pathForResource:@"mondai" ofType:@"csv"];
NSString *string = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
pMondai = [string componentsSeparatedByString:@"\n"]; //読み込んだ文字列を行ごとに分解して配列に保存
}
ここでcsvファイルを呼び出して

-(void)setPrcString{
srand(time(NULL));
i=rand()%Qnum;

NSString *stringTmp = [pMondai objectAtIndex:i]; //ランダムに行を選択
pBunkai = [stringTmp componentsSeparatedByString:@","]; //行ごとに分解したものを、さらに「,」ごとに分解して配列に保存
pQuestion = [pBunkai objectAtIndex:0];
pAnswer1 = [pBunkai objectAtIndex:1];
pAnswer2 = [pBunkai objectAtIndex:2];
pAnswer3 = [pBunkai objectAtIndex:3];
pAnswer4 = [pBunkai objectAtIndex:4];
seikai = [pBunkai objectAtIndex:5];
}
ここで分解したものを格納

-(void)answerCheck:(NSString*)answer{
if([seikai isEqualToString:answer])
result = 1;
else
result = 2;
}
ここで文字の比較

331:デフォルトの名無しさん
10/12/16 18:12:49
>>328やってみろよ。

332:デフォルトの名無しさん
10/12/16 18:40:03
>>330
seikaiはpBunkaiが保持している
pBunkaiは誰も保持してない
よって-answerCheck:で吹き飛ぶ

333:デフォルトの名無しさん
10/12/16 18:53:33
pMondaiも保持されてない気が...
つか、インスタンスの生成と破棄に無頓着なコードだな。メンテし辛そう...ある意味新種のスパゲッテイだな。

334:デフォルトの名無しさん
10/12/17 15:52:54
キー値監視についてです。オブジェクト(objA)のプロパティを監視してるオブザーバーは何か調べる方法で

NSLog(@"%@", [objA observationInfo]);

のようにobservationInfoメソッドを使うと

<NSKeyValueObservationInfo 0x13eba0> (
<NSKeyValueObservance 0x14d7d0: Observer: 0x14f7e0, Key path: finished, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x11ab00>
)

という感じで出力されますが、このオブザーバーにアクセスするためのポインタはどうやって取得するんでしょう???

335:デフォルトの名無しさん
10/12/17 18:28:38
NSKeyValueObservationInfo をハクってみたけど、どうもできそうにないな。
そういう用途は想定外なんだろ。
ivars = (
  "_retainCountMinusOne",
  "_observances",
  "_cachedHash",
  "_cachedIsShareable",
  "_observables"
);
methods = (
  dealloc,
  retain,
  release,
  description,
  retainCount,
  hash,
  "isEqual:",
  "_initWithObservances:count:"
);
properties = (
);

336:デフォルトの名無しさん
10/12/17 19:12:26
>>335
ありがとうございます!そういう使い方ではないのですね。
うーん。。このobservationInfoメソッド本当に謎すぎです。。

337:デフォルトの名無しさん
10/12/20 17:09:40
もう全部C++で書くは
あばよ

338:デフォルトの名無しさん
10/12/20 20:51:05
たっしゃでのぉ

339:デフォルトの名無しさん
10/12/24 13:38:40
インスタンス変数の値を、他のインスタンスから見るにはどうしたらよいでしょうか?

つまりCならグローバル変数を使う環境設定の様な実装はどうやっているのですか?

340:デフォルトの名無しさん
10/12/24 13:50:45
今風ならproperty
今まで流ならgetterメソッド

荒技は
@interface AClass : NSObject
{
@public
id hoge;
}
@end
------------------
AClass *obj = [AClass new];
id aHoge = obj->hoge; // 構造体へのポインタと同じ。代入も可。ただし運用を誤ると爆発する


341:デフォルトの名無しさん
10/12/24 14:06:56
@publicだったらgetterいらないんじゃねと思ったら
@publicと @property付きのインスタンス変数のアクセスの違いを理解していなかった
勉強しなおしてくる

342:デフォルトの名無しさん
10/12/24 14:18:16
勉強しなおして>>340の言ってる事を理解した
@publicだと -> で参照できるんですね。すいません、勉強になりました。


343:デフォルトの名無しさん
10/12/24 14:35:34
>>339
シングルトン objective-c
で検索。

344:デフォルトの名無しさん
10/12/24 15:13:47
独身ブタ

345:デフォルトの名無しさん
10/12/24 16:58:00
同じクラスの別のインスタンスならアクセス制限関係無しで
obj->hoge;
でアクセスできるお
-isEqual:とかは大抵 -> でやるお

346:デフォルトの名無しさん
10/12/24 17:27:03
ありがとう御座います。
なるほど@publicで参照させて、対象インスタンスは念の為にシングルトンで実装ですか。
シングルトンはどこで使うかわからなかったのですが、
こう言う時に使うのですね。


347:デフォルトの名無しさん
10/12/24 18:30:42
微妙に話がかみ合ってないような気がする

>346
なぜ荊の道を選ぶ

348:デフォルトの名無しさん
10/12/24 19:28:07
ワロタ

349:デフォルトの名無しさん
10/12/24 19:53:06
シングルベルを聞きながら
シングル族が
シングルトンのお勉強ですか

350:デフォルトの名無しさん
10/12/24 20:20:37
あれシングルトン必要ないのかな、、。

351:デフォルトの名無しさん
10/12/24 20:34:34
@protected メリークリスマス


( ´ρ`)



352:デフォルトの名無しさん
10/12/25 00:25:58
> インスタンス変数の値を、他のインスタンスから見るにはどうしたらよいでしょうか?

↑こっちじゃなくて、
↓こっちが本題だったんじゃないのか?

> つまりCならグローバル変数を使う環境設定の様な実装はどうやっているのですか?

353:デフォルトの名無しさん
10/12/25 16:28:08
>>352
、、、。

354:デフォルトの名無しさん
10/12/25 16:31:31
>>353
Zzz...

355:デフォルトの名無しさん
10/12/26 02:14:35
シングルトーン シングルトーン [[鈴 sharedInstance] 鳴る];

356:デフォルトの名無しさん
10/12/26 13:58:32
クリスマスって言葉を見ると殺意が沸くので止めてくれないかな

357:デフォルトの名無しさん
10/12/26 20:43:51
クリスマス

358:デフォルトの名無しさん
10/12/26 23:50:35
クリスマス

359:デフォルトの名無しさん
10/12/27 01:25:42
クリトリス

360:デフォルトの名無しさん
10/12/27 02:18:49
おまえにはがっかりだ

361:デフォルトの名無しさん
10/12/27 05:44:45
早く沸かせよ

362:デフォルトの名無しさん
10/12/27 15:24:09
なんか質問しづらい雰囲気ですがすんません・・・
プライベートなプリミティブ型にアクセサつけるのって間違ってますよね?


363:デフォルトの名無しさん
10/12/27 15:27:25
プライベートなカテゴリで定義すれば良いんじゃないか。

364:デフォルトの名無しさん
10/12/27 15:37:13
あーすいません外から見えるか見えないかの問題ではなくて、参照毎にアクセサのオーバーヘッドが発生するのはプライベートだと無駄じゃない?と思ったもので。

365:デフォルトの名無しさん
10/12/27 16:17:39
生で触ることの危険性とアクセサ経由の柔軟性を秤にかけて自分で決めなさい

366:デフォルトの名無しさん
10/12/27 16:55:34
なるほど、ありがとうございました。

367:デフォルトの名無しさん
10/12/27 17:19:59
いえいえ、どういたしまして。

368:デフォルトの名無しさん
10/12/29 01:00:24
生はリスクが高いから、アクセサつけなきゃね。

369:デフォルトの名無しさん
10/12/29 01:05:32
薄ければ薄いほど良い

370:デフォルトの名無しさん
10/12/29 12:53:55
>>346
読み込み専用だよな?
初期化時に設定ファイルか何か
食わせたら変更しないんじゃないか?

もし、読み書きの必要が有るならシングルトンは止めろ。
シングルトンが許されるのは読み込み専用か書き込み専用だけだ。
でないと、関数の呼び出し先と呼び出し元で
干渉が起こることがある(広域変数最大の問題点)

そもそも広域変数にする必要が有るかもよく考えろ。
値オブジェクトがツリー構造にもなってなく
ただ引き渡すのが面倒なだけだろ。

371:デフォルトの名無しさん
10/12/30 00:16:32
setterがatomicであれば問題ないと思っていたのだけど間違い?

372:デフォルトの名無しさん
10/12/30 03:10:10
>>370
おつきあいありがとうございます。

詳しく言うと、iphoneのブログラミングのnavigationのテンプレートを実行すると
appDelegateからrootViewControllerに飛び、その時テーブルの内容を読み込み
表示すると思うのですが、今回は起動直後のみ、前回終了した時に
didSelectRowAtIndexPathで遷移したviewController
(今回は編集されたテキストビューをアドされたビューコントローラー)
が保存されたファイルを読み込んで、そこにテーブルのリストを表示する前に
viewDidLoadでpushViewControllerで遷移したいのです。

その為にはviewDidLoad上で起動直後かそうでないかを知らなければならないのですが、
appDelegate上でAfterLaunchingというクラスのインスタンス変数である、
ブール型のisAfterLaunchingにYESを入れ、それを読み込む様にすれば、
処理を分岐出来ると思いました。で、遷移が終わればその変数をNOにするというものです。
そして編集が終わり、ファイルから読み込んだ多重配列にそのビューコントローラーを
挿入し、rootViewControllerに戻ると、isAfterLaunchingがNOなので、通常通り
その多重配列を元にテーブルのリストが表示されるという物です。

確かにグローバル変数やRootViewControllerで処理を分岐するのはプログラムが
ややこしくなるのであまりやりたくないのですが、


373:372
10/12/30 03:12:38
すいません途中で送ってしまいました。

確かにグローバル変数やRootViewControllerで処理を分岐するのはプログラムが
ややこしくなるのであまりやりたくないのですが、appDelegeteでwindowに
navigationをアドすると、まずrootViewControllerに飛んでしまうので、
他に方法が見つかりませんでした。

という事でした。


374:デフォルトの名無しさん
11/01/05 17:07:39
NSArray *history = [self.navigationController viewControllers];
NSMutableArray *newHistory = [history mutableCopy];
[newHistory removeLastObject];
[self.navigationController setViewControllers:newHistory animated:YES];

んえこうすると self.navigationController の viewControllers が null なんですけど
まったく理由がわかりません。ボスケテ。

375:デフォルトの名無しさん
11/01/06 15:58:28
一行目で返ってくるのがすでに nil だったりして。

376:デフォルトの名無しさん
11/01/06 16:15:24
array = viewControllerというのが既におかしい。

377:デフォルトの名無しさん
11/01/06 16:47:34
>>376
それはあってる self.navigationController.viewControllers だから

>375
思い切ってself.navigationControllerがすでにnilとか

378:デフォルトの名無しさん
11/01/06 17:20:32
>>375
>>376
>>377

ありがとうございます。
一行目でかえってくるのは普通にはいってるんですよ。
んで、mutableCopy したあとに最後の履歴を抜いてる。
newHistory の中身はちゃんとある。
ただ、セットすると null なんですよね。
setViewControllers:history とするともちろん null にはならんのですが。
履歴の加工ができないってことなんでしょうか。

379:デフォルトの名無しさん
11/01/06 23:19:05
ちなみに、viewControllersがnullであることを、どのようなコードで確認しましたか?
あと、self.navigationController.viewControllers = newHistory; とやっても同じ結果になりますか?

380:デフォルトの名無しさん
11/01/07 15:31:12
>>379
null であることを確認したのは
NSLog(@"%@", [self.navigationController viewControllers]);
こんなコードで確認しました。
self.navigationController.viewControllers = newHistory;
もやってみたんですが、同じ結果です。

381:デフォルトの名無しさん
11/01/08 01:22:43
>>380
その確認ではself.navigationControllerがnullの場合も
考えられる。そしてself.navigationControllerがnullなら
すべてのつじつまが合う。

382:デフォルトの名無しさん
11/01/10 18:07:48
iPhoneアプリ作ってるんですが
テーブルビューの行選択を行った後、アクションシートを開きたいんですが、どうすれば開けますか?
一応ボタン押下後に開くことは出来たんですが、行選択後に開く事ができません
どなたか教えて下さい

383:デフォルトの名無しさん
11/01/10 20:46:47
スレチ

384:デフォルトの名無しさん
11/01/14 19:41:24
iPhoneでHTTPのGETメソッドでHTMLファイルを取得するプログラムを

① NSURLConnectionのconnectionWithRequestメソッドを使う方法
// 非同期にダウンロードを実行
NSURLConnection * con = [NSURLConnection connectionWithRequest:request delegate:self]

②NSStreamオブジェクトのscheduleInRunLoop:forMode:メソッドを使う方法
// RunLoopに登録する
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
// ストリームをオープン
[inputStream open];
[outputStream open];

の2つを作成しました。
両党ともメインスレッドのランループ上で実行されると思うのですが、
①は問題なく動作するのに②の方は他のイベント処理の邪魔(DL中に画面にタッチすると固まったようになる)をしています。
②は何が問題なのでしょう???

385:デフォルトの名無しさん
11/01/15 08:39:00
何って、[NSRunLoop currentRunLoop] がイベントを処理するランループと同じなんでしょ?

386:デフォルトの名無しさん
11/01/28 22:36:52
後はラムダ式を実装すればObj-Cに敵はない

387:デフォルトの名無しさん
11/01/29 01:17:34
C+syntax sugarとruntime systemってのがいいのに、そんなんいらんよ。

388:デフォルトの名無しさん
11/01/29 01:50:09
>>386
blocks があるじゃん

389:デフォルトの名無しさん
11/01/29 05:39:46
inputStreamへの読み出し操作が、パケット受信待ちみたいな理由で
ブロックされてるのではないかと思われ

390:デフォルトの名無しさん
11/02/01 05:06:57
教えてください。
文字列を作り、それをファイル入出力しましたが、同じはずの文字列と比べると否と出ます。
何が原因なのでしょうか?

NSString* hoge = @"HOGE";

[NSKeyedArchiver archiveRootObject:hoge toFile:@"FILE"];

hoge = [NSKeyedUnarchiver unarchiveObjectWithFile:@"FILE"];

NSLog(@"文字列HOGEをファイル入出力したもの > %@",hoge);

NSLog(@"それと文字列HOGEを比べた結果 > %d",(hoge == @"HOGE"));

hoge = @"HOGE";

NSLog(@"文字列HOGEを作り直したものと文字列HOGEを比べた結果 > %d",(hoge == @"HOGE"));

391:390
11/02/01 05:08:47
すいません書き忘れました。上のソースの結果はいかのとおりです。

文字列HOGEをファイル入出力したもの > HOGE
それと文字列HOGEを比べた結果 > 0
文字列HOGEを作り直したものと文字列HOGEを比べた結果 > 1

392:デフォルトの名無しさん
11/02/01 05:19:28
ポインタ比べてどうする。
内容比較なら
- (BOOL)isEqualToString; 使え。URLリンク(www.oomori.com)
あるいは URLリンク(www.oomori.com)

393:390
11/02/01 12:19:21
>>392
ああっ、そう言えば前も引っかかった、、、。
ありがとうございました。

394:デフォルトの名無しさん
11/02/02 02:22:40
すいません、教えてください。
画面の何処かをタッチして、指を離さずにズリズリ移動して、
UIButtonの上に来たらイベントを発生させたいのですが、うまくいきません。

どうやったら、できるんでしょうか。

395:デフォルトの名無しさん
11/02/02 12:08:20
スレチ

396:デフォルトの名無しさん
11/02/02 12:40:49
サーバサイドでObjective-C使うことってある?


397:デフォルトの名無しさん
11/02/02 13:55:06
そういえば昔 WebObjects があったな


398:デフォルトの名無しさん
11/02/02 14:10:08
libcgiをObjCでラッピングするとかって話は見たことある

399:デフォルトの名無しさん
11/02/02 14:10:42
WebObjectsってフレームワークで、言語はJavaじゃなかったっけ?

400:デフォルトの名無しさん
11/02/02 14:23:08
NSConnection使えばobjcオブジェクトを直接やり取りできるよ

401:デフォルトの名無しさん
11/02/02 14:32:27
文字列、外部変数にしてstatic
付けてretainまでしても、
イベントループ終わったら解放されてしまうんですが、
残す何か良い方法はないでしょうか。

402:デフォルトの名無しさん
11/02/02 14:46:38
コード上げてみ。どうせお前が release してるんだろ

403:デフォルトの名無しさん
11/02/03 08:41:41
>>396
昔、うちのサーバ(特殊用途)がOPENSTEPだったことがあった。

404:デフォルトの名無しさん
11/02/03 09:45:50
iOS4プログラミングブックって本が人気あるみたいだけど、
これは初心者が手を出しても良い本?

405:デフォルトの名無しさん
11/02/03 10:59:19
>>399
Javaベースになったのは4からだよ

WebObjects3には大変お世話になりました
あれがなければ2000年問題乗り切れなかったよ

406:デフォルトの名無しさん
11/02/03 16:07:39
>>405
そうなんだ。
じゃそれまではObjCだったのかな。その頃からObjCを使ってる人達が今、本を書いたりしてるのかな。

407:デフォルトの名無しさん
11/02/03 16:07:50
>>399
Objective-C で書かれたものが発祥
今のは Java でリプレースされたもの

408:デフォルトの名無しさん
11/02/03 20:23:49
>>404
書いた人がわかってる人向けって言ってる。

409:デフォルトの名無しさん
11/02/04 09:25:24
>>408
ありがとう。じゃあまだ俺には早すぎるな。

410:デフォルトの名無しさん
11/02/05 22:19:56
グローバル変数ってフラッシュにそのまま保存するのどうやってするんでしょうか。
やっぱりインスタン変数にアドレス入れないとダメですか?

411:デフォルトの名無しさん
11/02/05 22:43:56
>>410
こんな質問するやつの作るプログラムなんて危なっかしくて使えないな

412:デフォルトの名無しさん
11/02/06 10:12:07
世の中そんなプログラムで溢れてる


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