Objective-C [ObjC part:5];
1 :
デフォルトの名無しさん :
2010/07/22(木) 01:38:19
>>1 乙
荻原本、BlocksやGCDを追記して改訂版出してくれないかな
6 :
デフォルトの名無しさん :2010/07/23(金) 01:19:42
あげ
なんとかBASIC!!!
memory管理めんどくせ
作法が理解出来ない奴はみなそう言う。
memory管理めんどくせって思ってたら、 GCあるからretain/releaseしなくていいよって聞いたのに、 iOSにはGCないんだってさ。 memory管理めんどくせ
11 :
デフォルトの名無しさん :2010/07/25(日) 07:10:53
GCは甘え
解説本読んでると、メソッド名と同じ名前の変数名が使ってあって頭がこんがらがります。 こういうのOKなんですかね。
>>13 そうなんですか。
OKでも使わない方がいいような気がするんですが、慣れたら平気なんでしょうね。
retain/releaseでいいじゃんいいじゃん
新・mac板から勝手に転載w
----
[SDK]iPhoneアプリ開発初心者質問箱7[touch][iPad]
http://pc11.2ch.net/test/read.cgi/mac/1278433229/ 624 名前: 名称未設定 Mail: sage 投稿日: 2010/07/28(水) 00:08:55 ID: B8n5McN10
電子書籍アプリ自分で作ろうかと思ったけど、プログラミング未経験にはキツい!
だれかソースコード売ってください笑
ガチで買いたいです。
詳細はappleandbananaあっとmail.goo.ne.jp
•文字サイズ変更(大中小くらいで可)
•閉じたページ記憶&そっから再開
•ページ間に画像も入れれる
•タップでページスクロールバーがでる
•右側タップで戻る、左側タップで進む
----
>>11 オートマ車を認められずに、マニュアル車に固執する臭いオッサンみたいだ
オートマ車はブレーキとアクセルの踏み間違い事故が多すぎ 明らかな構造的欠陥に目をつぶって売り続けるのは信じられない
iphoneアプリでhttpリクエストで取得したフィードのHTMLから、 特定のクラスのinnerHTML等を簡単に抜き出す方法を教えてくれ。 フィードの投稿一つずつをUITableViewのcellに置き換えたいです。 jqueryのようにできませんかね?webkitを少し調べればできるの? 教えてエロイ人!
20 :
デフォルトの名無しさん :2010/08/07(土) 03:54:32
スレ違い 失せろ
21 :
デフォルトの名無しさん :2010/08/07(土) 03:55:02
age
板違い
>>22 おまえマジでうぜえよ
社会のゴミだな
まったく価値が無い
25 :
デフォルトの名無しさん :2010/08/07(土) 08:48:34
新規ファイルでUIVIEW SUBCLASSを作成したいんですが Cocoa Touch Classの欄内に UIVIEW SUBCLASSが存在しないので作成できません。 なにかインストールし忘れとかでしょうか? どなたか教えてください。
自分で書け、以上。
そもそもある
28 :
デフォルトの名無しさん :2010/08/09(月) 09:06:00
29 :
デフォルトの名無しさん :2010/08/09(月) 09:18:22
たのしそうだな・・・何年かしたら、できるようになるんじゃない?
30 :
デフォルトの名無しさん :2010/08/09(月) 11:12:44
MT車の方が楽しい
>>28 う〜ん、落ちが分かったような…
MacOSのバージョンとXcodeのバージョンは?
あとCPUの種類も聞いておこうかw
@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 :
デフォルトの名無しさん :2010/09/02(木) 14:40:49
>> 32 基本的にはできないと思ったほうが幸せかも。 普通はメンバ変数をアンダースコア付きにするとか、仮引数を変更する。 NSString *_filePath; - (id) initWithFilePath:(NSString *)path; self->filePath = filePath; とか、self.filePath = filePath; は、できるけど警告出るし。 それよか、NSString に * がない方が気になるのだが…
34 :
デフォルトの名無しさん :2010/09/02(木) 14:48:59
>>33 さん
ありがとうございます。
警告が出ると鬱陶しいので、アンダースコアを先頭に付けようと思ったのですが、
>>34 さんが書かれているようにAppleが使いますね。
メンバ変数の末尾にアンダースコアを付ける記述を試してみようと思います。
お二人共、ありがとうございました。
(NSString *)になってないのは、単純にミスです。お恥ずかしい…。
36 :
デフォルトの名無しさん :2010/09/02(木) 15:26:46
37 :
デフォルトの名無しさん :2010/09/02(木) 15:32:53
追記: サフィックスにアンダースコアをつけると、KVC の検索対象に入らないから勧めない。
38 :
デフォルトの名無しさん :2010/09/02(木) 15:51:19
>インスタンス変数名には適応されてない されてる だいたい実際に使われてるんだから普通に考えれば使いたいと思わない >KVC のダイレクトアクセスで "_hoge" が検索対象のトップ それこそまさに Appleが使っているから→フレームワークのコア部分→すこしでも早くしたい からであって、一般開発者が立ち入る領域ではない >google の規約を持ち出すのはなぜ? 単に例として挙げた 他にObjCのまとまった規約の存在を知らないし >KVC の検索対象に入らない 普通にプロパティ立てればいいだけ
39 :
デフォルトの名無しさん :2010/09/02(木) 17:57:08
>>38 > 他にObjCのまとまった規約の存在を知らないし
Cocoa なら、Appleのコーディングガイドラインをきちんと読むべきだ。その上で、
それでもなお、「適応されている」と主張するなら根拠となる記述を挙げて欲しい。
Appleのインスタンス変数命名規約には"_"の禁止なんて、どこにも書いてない。
お宅様の「普通」とやらはしらんけど、さっき貼った正規のガイドラインすら読まずに
適当なこと書くのは、世間一般でいう「普通」ではないようだね。
インスタンス変数はクラス毎の名前空間にあるので、クラス間で被っても問題なく
使えるのが当然。例外は継承元のいずれかに同名のインスタンス変数があった場合だが、
これも理由つきでエラーが出るので安全。KVCも対応。これで禁止する理由は何かある?
メソッド名すら「かぶらないことが確実に確認できるなら」という条件付きで、
"_"プレフィックスが正式に認められているのに?
>少しでも早くしたい
速くするのに KVC なんて、メソッドなんて使わねーす。冗談も大概にしてくだせぇw
まぁまぁ、そんなにカッカしないで、俺にファイルから1行ずつ読み込む方法を教えてくれよ。 NSFileHandleとNSDataを使ってあとはゴリゴリやるしか方法は無いのかね?
41 :
デフォルトの名無しさん :2010/09/02(木) 18:22:11
NSString -getLineStart: end: contentsEnd: forRange: ?
>>41 それこそ正に、NSData からゴリゴリやるの一例だろ。
43 :
デフォルトの名無しさん :2010/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 なんて、メソッドなんて使わねーす
あなたがあなたのコードの中でどうするかなんて問題にしてないです
フレームワークへのアクセスを言ってるんです
なんかドキュメントに書いてることと真反対のこと言い出すとか、触っちゃいけないタイプの人に触っちゃったようだ
みなさんごめんなさい、もう終わりにします
一行づつ読み込むのにゴリゴリじゃない方法って、、、一行づつ読む時点でゴリゴリだろう
45 :
デフォルトの名無しさん :2010/09/02(木) 19:49:36
>>43 >39の意味が分からないようですね。ガイドラインを、正確に、読みましょうね。
あなたの挙げたものはインスタンス変数の規約ではありません。
インスタンス変数についての規約には、次のように書いてあります。
@public は避けろ。データの格納の仕方より、interface に気を使え。
@private と @protected をうまく使え。
名前は的確に。
アクセスできる変数にはアクセサつけろ。
以上。これらから「インスタンス変数名に"_"を使うな」とは読めませんね。
47 :
デフォルトの名無しさん :2010/09/03(金) 09:35:48
まるごと読み込んでから、componentsSeparatedBy...:
自己解決。
NSString stringWithContentsOfFile:encoding:error なんつー便利なメソッドがあるじゃないの。
これで取得して改行コードで区切っていけばオッケーって訳だな。
それがもしかしたら、
>>47 さんのメソッドなのかもしれない。
試してみるよ、ありがとう!
>>48 自己解決って、、、質問の直後
>>41 で真っ先に回答が出てるじゃないか。
改行コードで区切ったりすんなよ。
>>49 それこそ正に、NSData からゴリゴリやるの一例だろ。
巨大なファイルを扱うから NSFileHandle で部分的に読む込もうとしてるのかと思ったら、それ以前の問題だったらしい。
ファイルの中身がそのまま見えるイメージで良いならmmap()するのが一番簡単 メモリ中に置かれてるのと同じ処理で良いし、巨大なファイルでも仮想記憶システムが 面倒見てくれるので無駄なコピーも発生しない。
>>45 ガイドラインには、「インスタンス名の頭に_を使うな」とは書いてないかもしれません。
しかし、スーパークラスとサブクラスで同じ名前のインスタンス変数を宣言することはできません。(コンパイルエラーになります)
そして、Cocoaのクラスのインスタンス変数名は全て_から始まっています。
なので、実質的に「インスタンス変数名の頭に_は使えない」となります。
逆に言うと、インスタンス変数名の頭に_を使わなければ、Appleとの競合を確実に避けられるということです。
54 :
デフォルトの名無しさん :2010/09/08(水) 20:03:54
>>53 まだやるんですかぁ・・・書いてないんだから、使ってもいいでしょうに。
>スーパークラスとサブクラスで同じ名前のインスタンス変数を宣(ry
安全にコンパイルエラーになるなら、変数名変えればいいだけ。>39で言及済みです。
>そして、Cocoaのクラスのインスタンス変数名は全て_から始まっています。
誠に残念ですが、isa は "_isa" ではない。よって "_" が無くてもダブる可能性がある。
反論終わり。勝手にガイドラインを拡大して、それを広めないでくださいな。
あなたのスタイルを批判しているのではない。
不正確な情報を、さも正しいかのように言うのを批判しているのみ。
55 :
デフォルトの名無しさん :2010/09/08(水) 20:18:33
具体的にどこでしょう?ぜひ改めさせていただきたいので、ご指摘願います。 タイポ ○適用 ×適応 メソッド名の "_" は誤解を招いたかもしれませんが、ガイドラインにある "BF_..." の例。 「名前空間」が同じく誤解を招くかもですが、継承を含めた ivar[] のことです。
AT車の便利さと比較してる奴は馬鹿か? AT車MT車は一般人が使うものだろ。 一般人が使うものなら楽であればあるほどいい。 しかしおまえらはプログラマという専門家だろ?楽に走ってどうすんだ。 楽な言語で楽に書いて細かい原理は知りませ〜ん、じゃあ専門家とは言えんぞ。
昔はObjective-Cは専門家しか使わなかったけど iPhogeが出て来てここ数年でがらっと風向きが変わった
楽な言語で楽に書いて詳細も知ってます、 だろ普通は
Javaで書きたいiPhoneアプリ
Javaだけはないわ
ヌルポ
すいません何故こうなるか教えてください。 ヘッダで宣言したインスタンス変数に、実装で型を指定せずにallocしようとしたら、その変数は分からないと言われました。 反対に、ヘッダで宣言したNSArray*変数を実装でも型を使用しようとしたら名前ダブってると言われます。 同じように感じるその二つに、二通りの結果があるのは何故でしょう?
64 :
デフォルトの名無しさん :2010/09/11(土) 09:13:28
>>65 ありがとう。今外出しているので晩に書かせていただきます。
67 :
デフォルトの名無しさん :2010/09/11(土) 11:28:34
>60 そういや2008年頃に、SunがiPhone用のJava VMを作成するとかいうのが ニュースにあったような気がするけど、どうなったのかな?
新しい規約だと各々がJAVA VMを内包するという力技ならOK かな?
>>69 え、できるようになったのは確定事項? もしそうなら嬉しい
Java VMじゃないけど、SchemeのSECDマシンが動けばいいのにと妄想してた
>>71 iPhoneアプリケーションに、Obj-Cで書いたSECDエンジンと
SECDコード(=Schemeソースをコンパイルしたオブジェクト)を内蔵させる、
という考え方なんだけど、それでもダメ?
ユーザからは、普通のiPhoneアプリにしか見えないはずなんだ。
SECDエンジンなら(Java VMよりも)単純だから、
自分で作ってみようかと妄想してたんだけど....
昔々の事じゃ、Cocoa-JavaというJavaからCocoaフレームワーク呼ぶ物がMac用にあってのう。 Objective-Cになれた開発者にはえらい不評だったそうな。
自分は結局Cocoa-Javaは使わずじまいだったが、 Javaは(少なくとも当時のJavaは)静的な言語だったから、 Objective-Cデベロッパからすれば、 柔軟性の無い堅苦しいものに見えたのだろね
Obj-C習得者がいちいち Cocoa-Java に手を出すことあるかね? 自分はまったく触らなかったから、特に思うことはないな。
Javaを使う意味の一つに、マルチプラットフォームって言うのがあるけど、Macだけで動かすつもりならJavaを使う必要なんてないだろうね
Objective-Cのような欠陥言語は使いたくもない。
>>77 コード書くほうに欠陥があるのでは? 裸のCで書いても問題ないわけだし。
ひじょーに個人的な思いを横レスすると、Dictionary のような多用する物が重くて stl を併用しなきゃならない辺りがオタ心をくすぐって嬉しいよな。
82 :
デフォルトの名無しさん :2010/09/23(木) 12:54:25
TableViewに複数のセクションがあり、各セクションごとにセルを追加/削除できる プログラムがあれば教えて頂きたいのですが、 よろしくお願いします。
NSTableView?UITableView?
84 :
デフォルトの名無しさん :2010/09/23(木) 14:39:09
>>83 UITableViewです。
お手数おかけしますがよろしくお願いします。
@encode ディレクティブでとれる const char * から、ビットフィールドを含む 構造体のサイズを計算したいのですが何かよい関数ご存知ありませんか? NSGetSizeAndAlignment はビットフィールドを処理できないようで、SIGABRT が でます。ビットフィールド無しだと計算してくれるのですが… また、10.3.* ~ 10.5.* の gcc_os に objc_sizeof_type() というのを見つけたのですが、 bit field のエンコード形式がどうも実際(10.5SDK)とは違っていました。 これは修正して自分で組むしか無いでしょうか?
>>82 >>84 自分で調べる気、やる気まったく無しw
書いておけば適当に解答返ってくるだろって雰囲気丸出し。
>>85 なんか難しいことをしようとしてる様に見えるけど、大元の目的が何なのかを書けば
誰か別の方法を教えてくれるかも。
struct st1 {char flag : 1;};
struct st2 {int flag : 1;};
@encodeの文字列は両方b1だけど、sizeofしたら1と4だよね。
だから@encodeの文字列からはできないんじゃ?
>>87 レスどうもです。具体的には自前のデータ領域付きのArrayを作りたいと思ってまして。
CFArray + 領域、みたいな感じで、構造体に応じてデータ領域を確保できればなーと。
@encode の情報だけで何とかならないかなと思っていたのです。ご指摘の問題を見ると
確かに難しそうですね。やりたかった事は sizeof(type) 渡せば解決するんです。
ですが、NSGetSizeAndAlignment がビットフラグで SIGABRT だすのを知ったので、
じゃあどうやって NSValue なんかは処理しているのかな?と調べていたのです。
で、objc_sizeof_type() にたどり着いた訳ですがどうも違う。
手がかりがなくなったので、ご存知の方がいるかもしれないと書き込んだ次第です。
>>84 んじゃUITableView Class Reference見て
Table View Programming Guide for iOSよっく読んでから
Related sample codeの中から好みに合うの探してw
>>88 NSValueにビットフィールドありの構造体を渡したらnullが返らない?
91 :
88 :2010/09/23(木) 20:28:59
>>90 げ!確かに null が返ってきますね。
何でも入るもんだと思い込んでいました、お恥ずかしい。
てことは、やはり@encode情報からはsizeはとれないと思った方が良さそうですね。
いろいろとご指摘、ありがとうございます。
教えてください。 ビューを編集する様な処理をして、次の行に進んだところでブレークポイントを入れて見ると、 まだビューがその編集に反映してなくて、そのクラスの処理が終った時点でやっと反映されるのですが、 それを編集直後に反映させるにはどうしたら良いでしょうか。
エスパーすると -setNeedsDisplay: or -display やれ
94 :
デフォルトの名無しさん :2010/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の場合はどうすればよい でしょう。
@protocol protocolB; @protocol protocolA - (void) setTarget:(id <protocolB>)obj; @end @protocol protocolA; @protocol protocolB - (void) setTarget:(id <protocolA>)obj; @end
96 :
94 :2010/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 :2010/09/28(火) 12:19:46
>>93 ありがとうございます。
しかし、mainViewControllerにUIViewのインスタンスを合成して、
[self setNeedsDisplay]
を表示させたいタイミングに入れましたが、
そうしていない時と同じように、スレッドが終了するまで描画されません。
何か根本的に勘違いしてますでしょうか私は、、。
UIKitの処理は指示してすぐに全部その場でやってるとは限らないよ たぶんスレッドを長い間止めないための最適化だと思うけど メソッド呼んでもRunLoopに処理を登録するだけで、実際に処理されるのは イベントループが一回以上回った後なんてのはたくさんある
というかsetNeedsなら当然の結果だろ。
100 :
92 :2010/09/28(火) 22:11:13
>>98 ありがとうございます。
UIViewは基本好きな時に再描画出来ない様ですね。
別スレッドに描画メソッドを入れて、
[self performSelectorOnMainThread:@selector(メインスレッド名) withObject:nil waitUntilDone:TRUE];
でメインループを呼びましたら、描画スレッドはそのままスレッドから抜けてくれて、その際に再描画してくれました。
そのメソッドが何ものかハッキリ分かりませんが、支障が出ない事を祈ります。
101 :
92 :2010/09/28(火) 22:13:19
上のですが、普通にメインループを呼んだだけだと、描画スレッドが処理が戻ってくるまで終わってくれなくて再描画してくれませんでした。
というかsetNeedsなら当然の結果だろ。
Xcodeの静的アナライザでメモリリークが見つかって、当該オブジェクトをメソッドの最後で releaseするようにしたらアプリが落ちるようになったんだけど、こんなときどうすればいいの?
常駐アプリでないなら、些細なリークを気にしない。
>>103 自分に開発は向いてないと悟り、そっとMacBookを閉じる。
>>106 そしてNintendo DSを開く…
…じゃなくて、なぜアナライザが指摘した理由をマニュアルで調べないと分かんないよ
条件分岐とか絡んでない?
静的アナライザって、リークではない部分を誤ってリークだと報告することはないの?
あると言えばある ないと言えばない
条件分岐の中でのみアロケートなりリリースなりをしてないか?
リリースして落ちるんだったら、別のとこから参照されてるんだろ。
113 :
デフォルトの名無しさん :2010/09/30(木) 23:37:48
iPhoneSDK アプリケーション開発ガイドという参考書を読んで、 なんとなく全体的に理解できた程度の実力です。 objective-cのアプリ開発経験はありません。 現在、ログイン機能を搭載しているWebサイトを、 iPhoneアプリとして動作しようとしています。 こういう風なデザインにしたいという案があり、 imixというiPhoneアプリのUI的な感じで作ろうと思っています。 ログイン情報を保持して、 アプリを起動した時点でログイン状態になる、 っという仕組みが全くわかりません。 ログイン状態の保持はNSMutableDictionaryを使用して、 書き込み読み出しを行うのかなっていうのが、 なんとなく分かっていることです。 しかし、その情報を使用して、 自動的にログインというのが全く分かりません。 どなたかご教授お願いいたします。 また今作成しようとしているiPhoneアプリでは、 一般的にペニオクと呼ばれるシステムに近いアプリです。 クレジットカードを使用しての仮想マネーの購入、 仮想マネーを使ってのオークションへの参加、 こういった機能はiPhoneアプリとして認可されるのでしょうか? こちらについてもご教授お願いいたします。
Obj-Cもメジャーになったな。
色々な意味で真理(が好き)
ま〜たヤクザがペニオクに目を付けたな
ペニスオークション?
アップデートきてた Xcode 3.2.4 は Mac OS X 用のデベロッパツールのアップデートリリースです。このリリースは、gdb、Interface Builder、Instruments、llvm-gcc および Clang オプティマイザ、Shark、および Xcode でのバグを解決します。 Mac OS X 10.6.2 Snow Leopard 以降にインストールする必要があります。詳しい手順、既知の問題、およびセキュリティ上の注意事項については、付属のリリースノートを参照してください。
ホゲってなんですか?
ああ、鮫島事件並みに深い意味があるんだよ
基本的な事ですが教えてください。 合成やデリゲートでインスタンスを操作出来るのなら、 ライブラリ設計の段階で何故継承が必要なクラスを作ったのでしょうか?
例えばNSViewの描画メソッドで一部に独自の描画を加える場合delegationではどうするの? originalのdelegateを取得しておいて新しいdelegateを設定、 描画メソッドでoriginalのdelegateに描画させた後、独自の描画を加える? サブクラス化の方が分かりやすくていいと思うけど?
>>127 ありがとうございます。
つまり継承の意義は、メソッドのオーバーライドが出来るか否かにかかっているのですね。
130 :
デフォルトの名無しさん :2010/10/11(月) 13:03:04
131 :
デフォルトの名無しさん :2010/10/11(月) 13:05:25
>オンラインで閲覧 すいません、"オフライン"の間違いです。。
>>130 ダウンロード処理はいいが、HTMLの解析の処理は?
あー、というか、HTMLとはどういう構造で、httpでどのような通信のやりとりをするか、 分かってないのでは?プログラミング以前の問題。
134 :
デフォルトの名無しさん :2010/10/11(月) 13:34:36
回答ありがとうございます。 >HTMLの解析の処理は? 解析とは「取得したHTMLからimgタグ等を探して画像を保存&パスもローカルに変更」 ということを指している、と思ってよいでしょうか。 ダウンロードのメソッドを叩いて、これと同じことが出来るのかな、と思っていました。 これを手で書くのは結構つらそうですね。。 IE等で「Webページの完全保存」を実行した場合と同じようなことができるライブラリはないでしょうか。 #WebページをキャッシュするiPhoneアプリは皆さん自作しているのかなぁ。。
スレチだっつの ここは Objective-C"言語" のスレだ iPhone開発スレあるから探してそっち行けよウゼェ
136 :
デフォルトの名無しさん :2010/10/11(月) 14:57:33
了解です。失礼しました
メソッドの第一引数のコロンの前はメソッド名なのに、第二引数以降はコロンの前がラベルになってる。 アンバランスな気がするんだけど、言語デザイン的に理由があるのかね。 コロンを縦に並べたときの見栄えのためだけに、第一引数の前のラベルはなかったことにしたの?
全部メソッド名なんだが。 ラベルなんてものはない。
だな。
メソッドをメッセージとか読んだりすることもある。 初めての時は、別物だと思っていた
>> 141 厳密には違うので、別物が正しい。 [object hoge]; はobjc_msgSend()でメッセージを送っているだけ。 メッセージを受けたobjectが対応するメソッドを見つけて実行する。 メソッドには個々の実装があるけど、メッセージは共通の実装。
>>140 ObjCの専門用語としてラベルって言ってるんじゃなくて
日常英語としてラベルって書いてるんだろうね
ラベルって単語だけ抜き出されるとC言語のgoto文のラベルを先に連想しちゃう
>>142 >メッセージは共通の実装。
?
メッセージとは実装である、と言ってるように見えるけどそれはまた違うような?
>>144 では、メッセージは id + SEL + ... とすればいいの?
それともメッセージは概念だから、対応するものを考えない方が良いのかな。
メッセージというと、レシーバに対して送られるもの、つまり メッセージセレクタに加えて引数までひっくるめたものになるんじゃないかな? もしC++やJavaと比較して、対応するものを考えてるのであれば あまり考え込まない方がいいかもw
>140のリンク先読んだ メッセージを送信すると メッセージのメソッド名(=セレクタ)(とレシーバ)から メソッド実装 が決定される だそうですね なのでメソッド名(SEL)がメッセージの属性であることは確実です が、 「メッセージが実際に呼び出すメソッドは、レシーバによって決まります」 てことなのでレシーバはメッセージにはふくまれないです 引数は不明ですね
setWidth:10 height:20 なんだか気持ち悪いよ〜 setPos width:10 height:20 だったらすっきりするんだが。 なんで前者みたいな仕様になったの?
setPos はまずったな。 setSize にしとくわ。主旨はそこじゃないのでカンニン
>>149 setSize(of)width(and)height
setWidth(and)height
setWidth:height: こんなメソッド無いだろ。
setSize:(CGSize)sizeとかにしろや潔癖症。
delegateが絡むと参照カウンタの動きが見えづらくなるのがホントに嫌になる
えっ
デバッグコンソールにすら何も出力せずに黙って落ちるのってどうにかならないの?
所詮中身はCなんだからそんなもんだ
>>157 そのパターンは大抵、スタックぶち壊して、リターンするときあり得ない所へすっ飛んでるだけ。
>>157 出力するようにプロジェクトの設定変えろよ。
環境変数で NSZombieEnabled=YES NSDebugEnabled=YES NSDeallocateZombies=YES NSHangOnUncaughtException=YES NSAutoreleaseFreedObjectCheckEnabled=YES とかを追加すると、コンソールに出てくる内容が変わる。 あとはビルドの設定でDebugモードにしたりとか。
デフォでは、ビルド設定Debugモードじゃないの?
164 :
103 :2010/11/07(日) 20:32:28
releaseメッセージの送り先のインスタンスのdeallocメソッドの中で、外部オブジェクトへの参照変数をnilにしてなかったのが落ちる原因でした。 こんなもん気づくかw
それが原因じゃない方に10^10ジンバブエドル賭ける
NSMutableArrayって永続化できる? NSArrayにへんかんしなきゃ駄目?
>>167 中身が全部永続化できるなら出来るよ
でも、NSArrayで返って来るからmutableCopyしなきゃダメだったと思う
>>168 おおお、返りのことまでエスパー回答ありがd!!!!
NSEvent が引数の関数を書いたのですが、これはイベントが起きると自動で呼ばれるのでしょうか? それともaddEventListenerみたいなことをしないといけないのでしょうか?
まず関数とメソッドの違い、レスポンダチェーン、NSResponder について学んで下さい。
>>171 ありがとうございます。おかげでイベントの取得に成功しました。
一つ質問があるのですが、
ウィンドウにフォーカスがない状態でマウスのイベントを取得することはできますか?
#CのConsole.Clear();みたいなコンソールクリアするメソッドある? 標準出力をAIRに渡してるんだが、出力するたびにログが蓄積されて困ってる(´・ω・`)
174 :
173 :2010/11/17(水) 12:47:00
自己解決。 printf("Hello World\n");の後にfflush(stdout);しないとバッファに溜まっちゃうんだな・・・。 コンソールクリアする必要はなくなったが、 system("clear");はデバッガコンソールでTERM environment variable not set.とエラーでるが、 ターミナルでは実行出来る感じ。
>>172 試してないけど [NSApp currentEvent] はどうか。
Windowsで使えるIDE(コード補完があれば十分)って何かない? ※できればCocoaのライブラリも補完できれば理想。
動的結合不可なカスタムObjective-Cとか持ってきそうだなw
最近のソニーって後追いばっかりな印象があるな ObjCを選んだのは…話題性狙いか?
卑屈になるなよw objcの良さが一般にも浸透してきたんだろ。
sonyKit
APIが3年で破綻するのかw
SONY版Objective-Cでは、ObjectがSonyTimerを継承します。
185 :
デフォルトの名無しさん :2010/11/26(金) 21:42:01
初心者におすすめのObjective-Cの解説本ある? できればcocoaについても解説がのってるととても嬉しい
>>185 >初心者におすすめのObjective-Cの解説本
このスレの3あたり嫁
ほんとにObjective-Cの言語だけの解説なら10ページくらいで終わっちゃいそう ランタイムAPIまで含めても30ページもありゃ終わるんじゃないか
C/C++の基本的な知識についての説明は他本に譲りますとか
C分かるならマイコミとかの記事で十分習得できるけどな。
>>187 このスレ残り800近くあるからぜひここで晒してみてくれ
ここに貼るのはやめれ 2ch に著作権譲るのはバカバカしい どっかのロダに貼ってリンクすべし
>>181 AppKitはあるね。と、いうかOpenStepにSnapのExtensionを追加した形
既にドキュメントもSDKも(最新は1.2)一応配布されてる。
>>187 Apple提供のpdf
Objective-C 2.0 プログラミング言語
が最低限だろうな。
Objective-C、Cocoa、Xcode、foundationフレームワーク、これらの用語の関係を教えてください。 初級者本ですら色んな用語が次から次に出てきて理解できません。 XcodeはMacでiPhone開発する時に使う、ツール群のことを指していると考えていいのかな? しかしそうするとCocoaって何なんですかね。。Cocoa環境とか言われてますが。 そのCocoaとやらの中にFoundationというのがあるらしいのですが、ここら辺までくるともう何がなにやら。
>>195 まずは、初心者本を読んで、用語を理解してください
アプリ起動時にスクリーンセーバーを無効にして、 終了時に戻すことやりたいんだけど、 どうすればいい?
で、187は
>>201 をどう10ページにまとめあげるか楽しみに待っているんだが。
4x4のサムネール表示なら収まる とネタを潰しておこうw
206 :
デフォルトの名無しさん :2010/12/03(金) 00:00:19
NSDataのなかの特定の範囲のバイト列を取り出して、32ビットのint型に 変換したいのですが、どのような方法がありますでしょうか? subdataWithRange:NSMakeRange(3,4) のようにしてバイト列を取り出して int32_t datasize; [data getBytes:&datasize]; こすうれば一応できるのですが、JavaにあるByteBufferのgetIntのような感じで 取得したいと思っています。 そういう方法ってありますか?
207 :
187 :2010/12/03(金) 00:21:26
冗談半分のレスにそんな期待されてもなあ
そもそも書くなんて言ってないし
10pは大げさすぎたけどどっちにしても言語の解説だけなら
薄っぺらい本にしかならないしCocoaの解説も含んでないと
成り立たんでしょーっていう
>>185 への回りくどいツッコミ
だったんだが誰も気づいていくれなかった
長文スマソ
俺は気付いてたよ
ヲレもヲレも
>> 206 Java全く知らないんだけどgetBytesを見つけといてgetBytes:range: を使わな いのはなにか画期的な良さがそのgetIntにはあるの? int32_t intData; [data getBytes:&intData NSMakeRange(offset, sizeof(int32_t))]; 戻り値が直接返ってくるような関数がご希望ならカテゴリでNSDataに追加すれ ばいいだけだと思うのですが、この手のデータの扱いだとエンディアンが必ず 問題になるのでこのまま表に見えるようにして使うほうが無難そうだし。
>> 206 int32_t intData = *((int32_t *)([data bytes] + offset)); Objective-Cっぽくないな。
なんでいちいちNSData新規に作る必要があるの?
>>211 に一票追加。
>>211 OOPっぽくはないが、Objective-Cっぼい気はする
完全未経験からITスクールに1ヶ月半ほど通ってiPhone開発の会社に入社しました。 ITスクールではHTMLとJavaScriptとPHPを勉強しました。 研修も無しに来週から1人で出向することになりました。 土日でObjective-CとiPhone SDKとやらを勉強しておけ、ということらしいです。 出向先は社員数人のベンチャーで全員デザイナーということなので 開発者は自分1人です。 どう考えても詰んでるんですが、この業界はこういうのが普通なのでしょうか。。 2日で出来る限り覚えるとしたらどの本で勉強すればいいでしょうか?
>>214 金をケチってObjective-C未経験者を雇うとか、底辺デザ事務所らしい発想だな。
一般的なIT業界はさておき、iPhone界隈では普通ではない。
とりあえず、アップルの日本語に翻訳されたドキュメントを読め。
言語仕様、チュートリアル、UIのガイドライン、MVC、KVCあたりのことは必読。
C言語すら知らなかったら2日じゃムリ。
デザイナー相手ってことなら、Interface Builderの使い方だけ覚えて、
見た目でごまかして、時間稼ぎをしつつ勉強するのがいいと思う。
うわ、すげぃ 手持ちの技能から考えるなら Obj-CじゃないけどDashcodeいじって なんかアピール出来るもの作って生き残りをはかるとか
218 :
214 :2010/12/04(土) 02:47:04
皆様ありがとうございます。 やはり普通ではないのですね。 C言語も分からないので、一からObjective-Cを勉強ってのは難しそうですね…。 とりあえずアップルの日本語資料を読むことにします。 macを支給してもらえたのが唯一の救いなのかな。土日は寝ずに勉強して誤魔化せる程度にはしておこう。
すみません、質問です。 プロパティの宣言で、retainとreadonlyを一緒に宣言するのって どういう意味があるんでしょうか? CoreDataのさンプルでこんな宣言がされています。 @property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel; retainって、値をセットするときの指定だと思っていたんですが..
- (id)retain; ってご存じ?
いや、..存じません。
自己解決しました。
>>219 すいません。219と違う人だけど、わからないので
説明お願いします。実質retainは機能しないと思うのですが。
Google in English で、「retain readonly」でググるとでてくるよ。
public では readonly でも、private では readwrite で利用するから?
クラスエクステンションとかで拡張するときのために、 あらかじめ、指定しておくみたいな
>>225-226 外に向けてreadonlyにするときは実装側でプロパティが使えなくて
いつも面倒だなあと思ってた。でもこういう方法があったんだね。
これならほぼ全てにプロパティ使えてコードが綺麗になるわ。
とてもためになったよ、ありがとう。
うーむ…なんというか、なんか二度手間に見えてしまうなぁ… 個人的には synthesize を無理矢理使っているような感じを受けてしまう。
煽りでも何でもないんだけど Objective-Cが一般的に普及することはあり得ないのかな? この先もマック開発とかiPhone開発とか限定でしょうか?
まず「一般的に普及」を定義してくれ。
>>230 ソニーが採用したって噂を聞いたけど、まあ、一般的に普及することは無いだろう。
充分普及してると思うが
ええそうですね、十分普及してますね。 でも、一般的に普及することは無いでしょうね。
つーか普及すればAppleにとっても嬉しいはずなのに、どうしてこんなに閉鎖的なんだろうな。 iPhone SDKだって他のOSにも開放してれば今頃iPhoneはモバイル界のWindowsになっていたはずなんだ。
Mac の一台も買えないような開発者に何が出来ると
>iPhone SDKだって他のOSにも開放してれば そんなこと出来る会社ならintelMacがもっと伸びて世界中のPCはMacになってるはず
238 :
デフォルトの名無しさん :2010/12/06(月) 01:23:14
ハードとソフトを自分たちで設計し作っているから、 個々の性能を引き出し、微妙な調整を施し、デザイン を洗練し、独特のブランドを確立できているんだろが。
Macは壊れやすい印象しかないな
Macの起動速度は、少なく見積もっても、Windowsの1/2以下。 Windows使いは人生のうち100時間ぐらいをその起動待ちで ぼーっと費やしている。とってもかわいそう。
Macはハッカー御用達ツール。 Googleを初め、世のハッカー企業社員のプレゼンは その幹部を含め、ほとんどがMacを使っている。 独自の文化と真のUnixと、プロプライエタリの堅牢性と、 オープンソースの柔軟性を絶妙のバランスで見事に融合 させた結晶。それがMac。 Macを知らない人は、人生の1/10くらい損している。 ましてやプログラマを名乗ってはいけない。土方を名乗る のはまぁ許す。
いやいや、Googleは業務用にはUbuntu使ってる社員が多いし、プレゼンはたいてい WindowsでPowePointだよ。 プロプライエタリの堅牢性なんて言えば聞こえはいいが、実際はオープンソースへのただ乗り。 Darwinの公開だっていやいやだし、WebKitはKHTMLからのフォークだから仕方なく。 Objective-Cコンパイラに至っては、FSFからGPL違反の指摘を受けて、やっと公開したよね。 (まあ当時は、AppleではなくNeXTだったが) まあ、おれも漢字Talk7の頃からMac使っててNeXTCUBEも持ってたので、好きこのんで 使ってはいるが、企業としては一貫して嫌いだ。
昔は囲い込みの方針を曲げずにズルズルと失敗し続けてた印象だけど 最近はiPhoneアプリをXcode+ObjCだけに一度限定して その後すぐに緩和するとか割と狡猾だよねー
244 :
デフォルトの名無しさん :2010/12/06(月) 02:00:57
>>235 わかんないよ
Windows用Xcodeも準備中かもしれないよ?
まあ手を広げすぎても自分たちの実現したいユーザエクスペリエンスが維持できるかと自問して
出来そうにないからやらないだけなんだろう。まずMSが信用ならんし・・・
え?
>>242 PowePointは糞。つか名前も聞いたことない。
Keynoteは神。
>>242 お前が嫌ってるのはAppleじゃなくてCanonの間違いじゃないのか?
>>244 Windows用Xcode?
なぜわざわざ?
なぜわざわざ開発環境を悪化させる必要があるの?
なぜわざわざ情弱大衆に媚びるの?
なぜわざわざ使えないのが分かりきってる土方に提供するの?
イラネwww
コマンドがBSDとGNU系で混ざってたりシステムコールが特異なところがあるし MacPortsがあるから助かっているものの、 インタネット系開発はLinux系のがなにかと楽かなー。
一般的にというのはC++くらいあちこちで使われるという意味です
きめぇ…これがマカーというやつなのか
新しく流行するデバイスのアプリ開発がアセンブリ縛りだったとして、 これからはアセンブリが流行りますかってくらいの愚問だな。
mutableCopyで返されるオブジェクトは、autoreleaseされていないぞ、気をつけろ。
BLOCKSが簡単すぎてワロタ もうthreadはいらねーな
mutableCopyに限らずcopyって単語が含まれるメソッドで返るオブジェクトの 所有権は使う側にある(allocしたのと同じ) メモリ管理ポリシー読もう
257 :
デフォルトの名無しさん :2010/12/08(水) 17:58:30
Blocksは使用する直前に宣言する派 メッセージの中に含めるのはなかなか馴染めない・・・
Cはエッチのことと聞きましたが、 Objectiveとはどんなプレイですか?
それぞれの性感帯をカプセル化します
RootViewControllerって、プログラムがでかくなると、 適合する、プロトコルの宣言がいっぱいになるよね。
261 :
デフォルトの名無しさん :2010/12/09(木) 10:37:28
そんなに何でもかんでもRootViewに載せようとすることはないな 多くて4つぐらい
ぬぁに、俺が今作っている奴、RootViewControllerのプロトコル の宣言が、既に10越えているんだが… やりかたがまずいんだろうか…
何から何まで同じクラスにデリゲートさせてないか? データの持ち方が混沌としてるなら一度整理して 役割を分担させてみてはいかがかと。
オブジェクト性行
>>263 だってよぉ、画像編集アプリなんだけど、ナビゲーションコントローラにしてるから、
まず、UINavigationControllerDelegate そして、ScrollViewの中にタップ可能な
ImageViewを配置しているから、UIScrollViewDelegateとタップ検知を受け取る、
TapDetectingViewDelegate(サンプルからパクった奴) そして、画像選択用の、
UIImagePickerControllerDelegate そして、位置情報を使うから、
CLLocationManagerDelegate それから、警告などでアラートの表示もするから、
UIAlertViewDelegate 処理確認用のアクションシートも表示するから、
UIActionSheetDelegate、それから、メイン画面から呼び出せる画像処理用のボタン
をいくつか配置していて、そこから、他のビューコントローラを呼んだりもするわけだけど、
結局処理する画像は、メインに配置してあるから、各コントローラからの通知を受け取る
ための、〜ControllerDelegate とか、いつのまにか、いっぱいになっちまったわけさ。
処理対象(画像)がメイン画面にあるから、いずれにしても、UIの結果を受け取らないと
いけないわけで、しょうがなくね?何かいいやり方あれば教えてちょ。
カスタムViewControllerとかTarget-ActionとかNotificationとかDelegateとか なんとでもなりそうだけど
むりくり分割すれば、できなくはないんだけど、 その分割したモジュールとのやりとりが必要に なって、面倒くささが先にたっちゃうんだよな。
Objective-Cの初心者です。
URLをSafariで開く、というのをメソッドで書くとしたら、
どのようになりますか?
次のように書いたところ、
NSString * string = [@"
http://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 = [@"
http://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];
}
URL文字列を括っている[ ] は、いらないんじゃね?
宣言と実装がごっちゃになってるな。 どういうコピペをしたらこんなソースが出来上がるんだ
アルファベット覚えたて人がTOEIC受験しに行くぐらい無茶 最低限の文法理解と語彙が必要
これはちょっと、ぶったまげるくらい可笑しいな。
デバッガが苦笑するレベル
いつもそういわれるんです。 まずはこれを動くようにしてから。 本は5冊(斜め読み)しましたが、 ぜんぜんわからんのです。 おかしく楽しんだんですから、動かしてくださいよ。 お願いします。
どんだけ斜め読みしてんだよ 5冊を斜め読みするんじゃなくて、 1冊をじっくり読んでくれ
でも初心者のもつ疑問に答えるような本は、ないんです。 具体的には、一連の手順(メソッド?)を呼び出すときのメソッドの書き方(書式)、 それはMainのなかに書くのか外に書くのかとか。
> Mainのなかに書く んなことやってるサンプルコードがあったの? 無いのにどうしてそんなことしようと思ったの? どこからそんな発想湧いてきたの? ねぇなんで?
>>279 まずはやっぱCじゃね?
そこが分かってたら、そのソースみたいな間違いは、そもそもやらないと思う。
>>280 は書き方は悪いけど、基本中の基本があんたに欠けてるのは俺も感じるよ。
自分は楽しいココアでxcodeの操作の概要と、ココアフレームワークの使い方は
大体分かるようになった。
そこまでくれば、あとはもう慣れだ。アップルにサンプルコードも沢山あるし。
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 = [@"
http://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];
}
ってこと?
>>270 の言うことすら既に守られてないじゃん。
他人の言うことに耳を傾けない人なんだね。
>>282 メドッドの理由がないんだから、ただの関数で
書いておけよー
5冊も斜め読みでこれって凄い才能だな
C#ってすごい言語なんだな OOPLだと思ってたけど違うみたいだし
>>279 公式ドキュメントが一番易しく的確に理解に必要最小限のことを解説してる。
アプリケーションチュートリアルの熟読をおすすめする。
市販の本は酷いとこれのほぼコピペで深く説明すべきところをはしょった劣化版だったりする。
ほんの数ページで手取り足取り動くとこまで連れてってくれるだろう。
これ読んでわからなければお前の脳じゃ無理だから諦めろ。
>>282 C#やったんなら、classに相当する記述がそのソースに見当たらないことに違和感を覚えない?
まあ、この場合は、
>>284
>>285 この人の事だから本当に斜めに読んでそう。
290 :
sage :2010/12/11(土) 15:12:41
いや、きっとC#でもまともには... C#が悪いわけではないと思うw
C#はVBと同じような書き方すらできるからなー 元々はVB坊なんじゃね?
本のページの左上から右下へ真っ直ぐに斜め読みしてんだろうな。
文字列比較で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]); }
常識で考えて -UTF8String がオーバーヘッドになってるだけ
295 :
デフォルトの名無しさん :2010/12/11(土) 23:37:06
まぁ、最近は常識のない奴が増えたからな
Objective-Cのメソッドと関数の違いを知らないので、 ただの関数でどう書くのかよくわからないので、 ただの関数での書き方を教えてください。 メソッドの理由があるかないかを判断するのには、 条件が少ないと思いますが。 Classに相当する記述がないことには違和感がありますが、 そんなことを言い始めたら、ぜんぶに違和感を感じています。 なぜNSとすべてにつける無駄をするのか(ジョブズの趣味)とか。 \を含まないのに@を""の前につける意味は、とか。 *はなんだとか。 -はなんだとか。 nilってなんだよ、へんな略し方するなとか。 ま、それでいまこんな感じです。
#import <Cocoa/Cocoa.h>
IBOutlet id inputField;
IBOutlet id outputField;
int main(int argc, char *argv[])
{
return NSApplicationMain(argc, (const char **) argv);
}
NSString * string = @"
http://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 :2010/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になったよ なぜ
>>298 >main
int main(int argc, char * argv[], char * env[]);
地獄のソースコードだな。 霊媒師とかにお祓いしてもらった方が良いレベル。
天才チンパンジー「アイちゃん」が Obj-C訓練してるのかと思った。
objectivecってどれぐらいでマスターできますか? C言語は簡単でした。 オブジェクト指向言語は今回が初めてです。 今高@ですが模試の評価でも東大余裕なので頭も悪くないです。
>>303 >今高@ですが模試の評価でも東大余裕なので頭も悪くないです。
頭が悪くない人はこんなスレ見つけてる間にささっと始めてる
オブジェクト指向初めてで、Cは分かってて、Objective-Cやりたいんだったら、 オブジェクト指向の学習に特化したSmalltalk本がいいと思う。 結構出てるみたいだし。
>>307 にもあるように、Smalltalk 本に書かれていることがすんなり理解できる柔軟性があれば
Objective-C の Smalltalk 的側面なんかサブセットなので、恐るるに足らずと思っていていいです。
Smalltalk やその考え方自体、小難しく受け取られがちですが、分かってしまえば何と言うことはないので。
中古本が安く手に入る「例題による!!オブジェクト指向分析設計テクニック」
http://amzn.to/eoZia2 とかお薦めですが、あいにく処理系が古くてコードを試すことができないので、同じ著者の「Smalltalkで
学ぶオブジェクト指向プログラミングの本質」
http://amzn.to/9aDb2f とかざっと読んでみるのはいかがと。
だから言ったじゃん。こんな奴は精神科行くかお祓いしてもらった方が早いんだって。
また斜め読みかよ
313 :
デフォルトの名無しさん :2010/12/12(日) 23:04:06
>>310 だいぶ疲れているようだな
まあ珈琲でも飲んでモチツケ
>>298 >なぜNSとすべてにつける無駄をするのか
Objective-Cにはネームスペースが無いから一定のまとまりに対するプレフィックスは必要だろ。
ちなみに、NSは今のマックの前身となったNextStepで使われていたときの名残。
>\を含まないのに@を""の前につける意味
@はNSStringのインスタンス生成を簡略化するためのシンタックスシュガー
@をつけないのはC言語の文字列
>*はなんだ
ポインタの宣言や値参照の演算子。乗算の演算子。
>nilってなんだよ、へんな略し方するなとか
nilは略語ではなくて、無を意味する歴とした英単語。
nullとほぼ同義だけど、Objective-Cではインスタンスが割り当てられていないことを示すため
に使われる。
>>314 その親切さは、本当に彼にとって親切なのだろうか?
逆にそこまで気を使ってやる必要もないだろう。
どうせ、
>>296 は「名前空間程度も実装できない」とか「yes, noがキモい」とか言うだけさ。
>>310 >ならよんだけどわかんないぜ。
あんたコンピュータ業界にゃ向いてないから諦めなって
自分探しの旅にでも出たらどうだ?
できれば薄着で、北の方へ
>>310 煽って答えを出して貰おうとしているんだろうけど、それで答えを得てもあなたの知識にはならないよ
あと、書物は読むだけじゃなく理解しないと意味がない
319 :
デフォルトの名無しさん :2010/12/13(月) 17:09:36
多重配列の指定セクションのロウを数える用途で以下の定義を書きました。 宣言 - (NSUInteger)countRowDoubleArray:(NSMutableArray*)doubleArray ofSection:(NSUInteger)section; 実装 - (NSUInteger)countRowDoubleArray:doubleArray ofSection:section { NSMutableArray* row = [doubleArray objectAtIndex:section]; return [row count]; } しかし、宣言と定義で二重に宣言されているというエラーが。また、関数objectAtIndexの第一引数は、 キャストせずにポインタを整数型に変換しているとエラーが出ます。 しかし他に同じ名のメソッドなど宣言も実装もしておらず(試しに名前を変えても同じエラー)、 objectAtIndexの引数は明らかにNSUInteger型として宣言しています。なぜエラーが出るのでしょうか?
ヘッダに書いてるとか。
implementationの方のdoubleArrayとsectionの型を省略してるからid型になってる つかエラーは勝手に解釈せずにそのままコピーしろ
>>321 >>322 有難うございます。
implementationで引数に型を宣言した事が今までなかったので驚きました。
何故いる時と要らない時があるのか、、。
エラーの件次に質問させて頂く時はそのままコピーしますすいません。
(確かにid型になってました、、。)
>implementationで引数に型を宣言した事が今までなかったので驚きました。 こっちが驚くわ
新人類だな。
326 :
デフォルトの名無しさん :2010/12/16(木) 09:49:44
>>58 iPhogeという呼び方があるのか〜
今度から使わせてもらおう
isEqualToString を使って文字列の比較をしたいのですがどうやっても上手くいきません。 比較方法は配列に保存してある文字列をobjectAtIndex で呼び出してそれを比較するようにしています。 NSString* seikai NSString* answer seikai = [mondai objectAtIndex:1] answer = [mondai objectAtIndex:2] if ([seikai isEqualToString:answer]) のような形で比較しています。
>>327 中の文字列、書き出してくれないと。
コード自体は問題ない。
NSLog(@"%@,%@",seikai,answer);
でもいれてみたら。
セミコロンも使ってないし変数名も間違ってるけど、コンパイル通ってるのかなあ。 seikai = [mondai objectAtIndex:0]; answer = [mondai objectAtIndex:1]; で上手く行きました! とか無いよね
330 :
327 :2010/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; } ここで文字の比較
>>330 seikaiはpBunkaiが保持している
pBunkaiは誰も保持してない
よって-answerCheck:で吹き飛ぶ
pMondaiも保持されてない気が... つか、インスタンスの生成と破棄に無頓着なコードだな。メンテし辛そう...ある意味新種のスパゲッテイだな。
キー値監視についてです。オブジェクト(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> ) という感じで出力されますが、このオブザーバーにアクセスするためのポインタはどうやって取得するんでしょう???
NSKeyValueObservationInfo をハクってみたけど、どうもできそうにないな。 そういう用途は想定外なんだろ。 ivars = ( "_retainCountMinusOne", "_observances", "_cachedHash", "_cachedIsShareable", "_observables" ); methods = ( dealloc, retain, release, description, retainCount, hash, "isEqual:", "_initWithObservances:count:" ); properties = ( );
>>335 ありがとうございます!そういう使い方ではないのですね。
うーん。。このobservationInfoメソッド本当に謎すぎです。。
もう全部C++で書くは あばよ
たっしゃでのぉ
インスタンス変数の値を、他のインスタンスから見るにはどうしたらよいでしょうか? つまりCならグローバル変数を使う環境設定の様な実装はどうやっているのですか?
今風ならproperty 今まで流ならgetterメソッド 荒技は @interface AClass : NSObject { @public id hoge; } @end ------------------ AClass *obj = [AClass new]; id aHoge = obj->hoge; // 構造体へのポインタと同じ。代入も可。ただし運用を誤ると爆発する
341 :
デフォルトの名無しさん :2010/12/24(金) 14:06:56
@publicだったらgetterいらないんじゃねと思ったら @publicと @property付きのインスタンス変数のアクセスの違いを理解していなかった 勉強しなおしてくる
342 :
デフォルトの名無しさん :2010/12/24(金) 14:18:16
勉強しなおして
>>340 の言ってる事を理解した
@publicだと -> で参照できるんですね。すいません、勉強になりました。
>>339 シングルトン objective-c
で検索。
独身ブタ
同じクラスの別のインスタンスならアクセス制限関係無しで obj->hoge; でアクセスできるお -isEqual:とかは大抵 -> でやるお
ありがとう御座います。 なるほど@publicで参照させて、対象インスタンスは念の為にシングルトンで実装ですか。 シングルトンはどこで使うかわからなかったのですが、 こう言う時に使うのですね。
微妙に話がかみ合ってないような気がする >346 なぜ荊の道を選ぶ
ワロタ
シングルベルを聞きながら シングル族が シングルトンのお勉強ですか
あれシングルトン必要ないのかな、、。
@protected メリークリスマス ( ´ρ`)
> インスタンス変数の値を、他のインスタンスから見るにはどうしたらよいでしょうか? ↑こっちじゃなくて、 ↓こっちが本題だったんじゃないのか? > つまりCならグローバル変数を使う環境設定の様な実装はどうやっているのですか?
シングルトーン シングルトーン [[鈴 sharedInstance] 鳴る];
クリスマスって言葉を見ると殺意が沸くので止めてくれないかな
クリスマス
クリスマス
クリトリス
おまえにはがっかりだ
早く沸かせよ
362 :
デフォルトの名無しさん :2010/12/27(月) 15:24:09
なんか質問しづらい雰囲気ですがすんません・・・ プライベートなプリミティブ型にアクセサつけるのって間違ってますよね?
プライベートなカテゴリで定義すれば良いんじゃないか。
364 :
デフォルトの名無しさん :2010/12/27(月) 15:37:13
あーすいません外から見えるか見えないかの問題ではなくて、参照毎にアクセサのオーバーヘッドが発生するのはプライベートだと無駄じゃない?と思ったもので。
生で触ることの危険性とアクセサ経由の柔軟性を秤にかけて自分で決めなさい
なるほど、ありがとうございました。
いえいえ、どういたしまして。
生はリスクが高いから、アクセサつけなきゃね。
薄ければ薄いほど良い
>>346 読み込み専用だよな?
初期化時に設定ファイルか何か
食わせたら変更しないんじゃないか?
もし、読み書きの必要が有るならシングルトンは止めろ。
シングルトンが許されるのは読み込み専用か書き込み専用だけだ。
でないと、関数の呼び出し先と呼び出し元で
干渉が起こることがある(広域変数最大の問題点)
そもそも広域変数にする必要が有るかもよく考えろ。
値オブジェクトがツリー構造にもなってなく
ただ引き渡すのが面倒なだけだろ。
setterがatomicであれば問題ないと思っていたのだけど間違い?
>>370 おつきあいありがとうございます。
詳しく言うと、iphoneのブログラミングのnavigationのテンプレートを実行すると
appDelegateからrootViewControllerに飛び、その時テーブルの内容を読み込み
表示すると思うのですが、今回は起動直後のみ、前回終了した時に
didSelectRowAtIndexPathで遷移したviewController
(今回は編集されたテキストビューをアドされたビューコントローラー)
が保存されたファイルを読み込んで、そこにテーブルのリストを表示する前に
viewDidLoadでpushViewControllerで遷移したいのです。
その為にはviewDidLoad上で起動直後かそうでないかを知らなければならないのですが、
appDelegate上でAfterLaunchingというクラスのインスタンス変数である、
ブール型のisAfterLaunchingにYESを入れ、それを読み込む様にすれば、
処理を分岐出来ると思いました。で、遷移が終わればその変数をNOにするというものです。
そして編集が終わり、ファイルから読み込んだ多重配列にそのビューコントローラーを
挿入し、rootViewControllerに戻ると、isAfterLaunchingがNOなので、通常通り
その多重配列を元にテーブルのリストが表示されるという物です。
確かにグローバル変数やRootViewControllerで処理を分岐するのはプログラムが
ややこしくなるのであまりやりたくないのですが、
373 :
372 :2010/12/30(木) 03:12:38
すいません途中で送ってしまいました。 確かにグローバル変数やRootViewControllerで処理を分岐するのはプログラムが ややこしくなるのであまりやりたくないのですが、appDelegeteでwindowに navigationをアドすると、まずrootViewControllerに飛んでしまうので、 他に方法が見つかりませんでした。 という事でした。
374 :
デフォルトの名無しさん :2011/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 なんですけど まったく理由がわかりません。ボスケテ。
一行目で返ってくるのがすでに nil だったりして。
array = viewControllerというのが既におかしい。
>>376 それはあってる self.navigationController.viewControllers だから
>375
思い切ってself.navigationControllerがすでにnilとか
378 :
デフォルトの名無しさん :2011/01/06(木) 17:20:32
>>375 >>376 >>377 ありがとうございます。
一行目でかえってくるのは普通にはいってるんですよ。
んで、mutableCopy したあとに最後の履歴を抜いてる。
newHistory の中身はちゃんとある。
ただ、セットすると null なんですよね。
setViewControllers:history とするともちろん null にはならんのですが。
履歴の加工ができないってことなんでしょうか。
ちなみに、viewControllersがnullであることを、どのようなコードで確認しましたか? あと、self.navigationController.viewControllers = newHistory; とやっても同じ結果になりますか?
380 :
デフォルトの名無しさん :2011/01/07(金) 15:31:12
>>379 null であることを確認したのは
NSLog(@"%@", [self.navigationController viewControllers]);
こんなコードで確認しました。
self.navigationController.viewControllers = newHistory;
もやってみたんですが、同じ結果です。
>>380 その確認ではself.navigationControllerがnullの場合も
考えられる。そしてself.navigationControllerがnullなら
すべてのつじつまが合う。
iPhoneアプリ作ってるんですが テーブルビューの行選択を行った後、アクションシートを開きたいんですが、どうすれば開けますか? 一応ボタン押下後に開くことは出来たんですが、行選択後に開く事ができません どなたか教えて下さい
スレチ
iPhoneでHTTPのGETメソッドでHTMLファイルを取得するプログラムを @ NSURLConnectionのconnectionWithRequestメソッドを使う方法 // 非同期にダウンロードを実行 NSURLConnection * con = [NSURLConnection connectionWithRequest:request delegate:self] ANSStreamオブジェクトのscheduleInRunLoop:forMode:メソッドを使う方法 // RunLoopに登録する [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; // ストリームをオープン [inputStream open]; [outputStream open]; の2つを作成しました。 両党ともメインスレッドのランループ上で実行されると思うのですが、 @は問題なく動作するのにAの方は他のイベント処理の邪魔(DL中に画面にタッチすると固まったようになる)をしています。 Aは何が問題なのでしょう???
何って、[NSRunLoop currentRunLoop] がイベントを処理するランループと同じなんでしょ?
後はラムダ式を実装すればObj-Cに敵はない
C+syntax sugarとruntime systemってのがいいのに、そんなんいらんよ。
inputStreamへの読み出し操作が、パケット受信待ちみたいな理由で ブロックされてるのではないかと思われ
教えてください。 文字列を作り、それをファイル入出力しましたが、同じはずの文字列と比べると否と出ます。 何が原因なのでしょうか? 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 :2011/02/01(火) 05:08:47
すいません書き忘れました。上のソースの結果はいかのとおりです。 文字列HOGEをファイル入出力したもの > HOGE それと文字列HOGEを比べた結果 > 0 文字列HOGEを作り直したものと文字列HOGEを比べた結果 > 1
393 :
390 :2011/02/01(火) 12:19:21
>>392 ああっ、そう言えば前も引っかかった、、、。
ありがとうございました。
394 :
デフォルトの名無しさん :2011/02/02(水) 02:22:40
すいません、教えてください。 画面の何処かをタッチして、指を離さずにズリズリ移動して、 UIButtonの上に来たらイベントを発生させたいのですが、うまくいきません。 どうやったら、できるんでしょうか。
スレチ
サーバサイドでObjective-C使うことってある?
そういえば昔 WebObjects があったな
libcgiをObjCでラッピングするとかって話は見たことある
WebObjectsってフレームワークで、言語はJavaじゃなかったっけ?
NSConnection使えばobjcオブジェクトを直接やり取りできるよ
文字列、外部変数にしてstatic 付けてretainまでしても、 イベントループ終わったら解放されてしまうんですが、 残す何か良い方法はないでしょうか。
コード上げてみ。どうせお前が release してるんだろ
>>396 昔、うちのサーバ(特殊用途)がOPENSTEPだったことがあった。
iOS4プログラミングブックって本が人気あるみたいだけど、 これは初心者が手を出しても良い本?
>>399 Javaベースになったのは4からだよ
WebObjects3には大変お世話になりました
あれがなければ2000年問題乗り切れなかったよ
>>405 そうなんだ。
じゃそれまではObjCだったのかな。その頃からObjCを使ってる人達が今、本を書いたりしてるのかな。
>>399 Objective-C で書かれたものが発祥
今のは Java でリプレースされたもの
>>404 書いた人がわかってる人向けって言ってる。
>>408 ありがとう。じゃあまだ俺には早すぎるな。
グローバル変数ってフラッシュにそのまま保存するのどうやってするんでしょうか。 やっぱりインスタン変数にアドレス入れないとダメですか?
>>410 こんな質問するやつの作るプログラムなんて危なっかしくて使えないな
世の中そんなプログラムで溢れてる
main.mで、 test* t = [[[testC alloc] init] autorelease]; NSLog(@"%@",t); test.mでは、 - (void)init { if (self = [super init]) { hoge = @"hoge"; } というプログラムを書くと、なぜかNSLogの出力に、なぜかtestであるはずのtはNSCFString、 値はhogeとでます。 なぜでしょうか?
>>413 testは、実はtestCだからじゃ?
-init の返り値が void のわけねえだろ
いろいろひどすぎて絶句した
417 :
413 :2011/02/07(月) 02:10:23
すいません、、testはtestCで、-initの返り値はidです。 書き込む時になぜか間違えました。。。 もちろんそれらを正しく書いてもtestCはNSCFStringになってしまうのです。
@interface も不明なのに何を言えと
>>417 質問の段階でそのレベルの間違いをされると、
指摘してほしい「間違い」とコピペの「間違い」を回答側で区別つけるのは不可能だし。
ソースコードのコピペは修正しないこと。目でコピペしないこと。
原因の見当もつけられていない段階で、「この部分だけで十分」と判断しないこと。
420 :
413 :2011/02/07(月) 10:01:11
ご迷惑をおかけして申し訳ありません。 試行錯誤した所、initでreturn self;を書くのを忘れていたせいの様です。 何故NSCFStringだったのかはまだ分かりません。 因みに@interfaceでは、インスタンス変数として、 NSString* hoge; としていただけでした。 何故なのでしょう。 ありがとうございました。
…何やらいろいろな意味ですごいなw
予想通りだったわ
ヤフーか初心者スレできけばいいのにね。 2chの専門系スレは最低限の知識あること前提やん? タダでなんかするなら理解力と基礎知識は必要よ。 それ怠るんなら、きちんとカネだして講習とか勉強会行くべきだろ それか上司か先輩にしかられて覚えろ
おまいらやさしいな
余暇グラマーだとしても、技術屋としちゃどうかと思うが
>>424 マカーはスルースキルが極端に低いだけ。
スルースキルを使うのはアホにしつこく煽られた時だろ
NSIndexSet コピーを、range の二分木(R木?)使ってCで作ってて、一通りの実装を終えた。(CFRangeSet と名付けた) そこで今は高速化に取り組んでるのだが、 -containsIndex: や -containsIndexesInRange:, -containsIndexes: が NSIndexSet(IMP使用)より最悪で2, 3倍遅い。 (ランダム挿入なら圧倒的に速い、順序挿入でも3, 4倍程度の遅さ。メモリは4倍必要) 木構造のバランスは取れてるのに、何故 range の配列を抱えただけのNSIndexSetより遅いのか疑問だったのだが、 NSIndexSet は検索の際、例えば -containsIndex:(NSUInteger)value において、value の値と集合の最大・最小値、偏差を元に 目的の range の位置を当て推量し、配列の検索の開始地点を変えてるんだな。 通りで、ある程度分布の整った indexSet だと、厳密に走査する CFRangeSet は遅れるわけだ。 実際に indexSet に偏りを与えてテストすると、CFRangeSet のタイムは殆ど一定、むしろ一部速くなるが、 NSIndexSet だと急激にタイムが悪化した。
徒労乙
ヤッター
むしろ"Javaの方が生産性が高い"根拠が示されてないのが気になった
まぁ結論ありきの自己満足ブログだからな
>>431 OSX 10.6 + GCC4.2 + x86_64でやってみたら
C++ (inline) 10.3秒
C++ (virtual) 12.5秒
Objective-C (IMP) 13.5秒
Objective-C 22.7秒
位だったよ。dynamic dispatchでこの差なら凄く速いと思う。
Objective-Cのdispatcherはキャッシュ使ってるから、複数のメッセージ混ぜると
もっと遅いだろうね。
自分はほとんどC++使ってるけど、Objective-Cのメソッド呼び出し速度が問題に
なる様な書き方は逆に相当難しいでしょ。
437 :
デフォルトの名無しさん :2011/02/19(土) 23:14:42.46
CoreGraphicsを使って10000個位の矩形(塗りつぶした●や■) をiPhone上で高速にスクロールさせながら描画させる方法って何かないですかね? フリックやドラッグの時に大きさ変えるので、 オフスクリーンに描くこともできず毎回書き直してます^^;; が、これだとシミュレータでは問題なく動いても、iPhoneだとスクロールが重たくって 各矩形をCGContextDrawPathでパス作って描いてみたり、 CGContextAddRectで直接描いてみたり、 はたまたCGContextAddRectsにてまとめて描画させてみたりしたけど あまり描画には変化なし・・・ 小手先のテクニックでもいいんで知ってる人いたら教えてください^^; スレ違いだったら別スレ教えてください^^;
>>434 だから秘密にしてねえだろ
何で君はそんなブログ記事に影響されてコピペまでしちゃってるの?
>>439 どもです〜
スレ移ります^^
やっぱり難しいですかね
1000位に減らしても遅いんですよね^^;
うーん
何かいい方法はないものか・・・
OpenGL使え。
俺も OpenGL ES 使えって書こうとしたけど、2D でもそんなに影響があるのかな。 ~AddRects 使ってダメなら OpenGL ES でもあんまり変わらなそうな・・・
>>434 ひでぇブログだな。合理的な反論がある場合、普通、論拠として見なさないんだが。
>>441 そうしたいのは山々なんですが・・・
>>442 そうなのですか
やっぱり厳しいですかねぇ・・・
ちょっとしたTipsでもいいので何か手はないかと
OpenGL 面白いと思うんだがな・・・
ヘタレなんでもうちょっと高レベルなAPIだと…
言葉は意味明瞭に最後までハッキリと書け。あるいは消えろ。
ごめんなさい
あるいは気にすんなよ。
(A > 0)みたいな式を作るためにNSPredicateがあると思うんですが NSPredicate *predicate = [NSPredicate predicateWithValue:YES] のようにpredicateWithValue:で作られたオブジェクトって何のために使われるんでしょう?? 常にYESになるオブジェクトって。。??
452 :
428 :2011/02/24(木) 22:06:40.16
boost::icl::interval_set<int> よりは1.5~3倍は速かった。ヤッター
>>434 言語の特性だけで、実際の開発効率に関しては
数値根拠が無さ過ぎる。
JavaとObjective-Cは、対極にあって効率論はあまり意味が無い。
静的なプログラムを書くならJavaの効率がいいだろうが、
Objective-Cの動的特性は、スクラップ&ビルドを何度も繰り返す
プログラムに向いている。
つまり、UIの設計に。
Javaで独自UIが簡単に作れるならいまごろJavaアプリが
氾濫してるよ。
どうせ、Eclipse <<<<超えられない壁<<<Xcode、ゆえにJavaの方が…って理論でしょ。
不等号逆っておい
日付の文字列からNSDateオブジェクトの作成で困っています。 // 変換する日付文字列 NSString *timeString = @"2011-03-12 05:30:11.999888"; // NSDateFormatterのインスタンスを作成 NSDateFormatter *inputDateFormatter = [[NSDateFormatter alloc] init]; // 日付文字列の書式を設定する [inputDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.S"]; // 日付文字列 → NSDateへ変換 NSLog(@"%@", [inputDateFormatter dateFromString:timeString]); この結果はnullになります。原因は日付文字列にあるようで @"2011-03-12 05:30:11.999888" だとnulになり、l @"2011-03-12 05:30:11.998888" だと正常にNSDateへ変換されます。 これはなぜでしょう???
ゼロコンマ以下は .9995 未満までしか受け付けないのかな。
>>458 なるほどー。そういう仕様っぽいですね。
それかバグか。。
CFDateFormatter のソース見れば分かるかもしれんが、込み入ってて読めん。
込み入ってなくても読めん
いやオープンソースだろ
でソースどこにあんの?
そのあたりは ICU 使ってるから、そっちのソース見たほうがいいよ。 ざっと見た感じでは ・小数点以下の部分はミリ秒の精度で内部処理、つまり小数点以下3桁までが有効 ・小数点以下が4桁以上の値を与えられた場合、3桁にきりつめる ・この時に小数点以下4桁目を四捨五入するので .9995 以上だと範囲を超えてしまう →エラー という流れっぽい
466 :
Perl忍者 ◆M5ZWRnXOj6 :2011/03/14(月) 19:23:03.84
エネルギーあまった子供たちが付けそうな名前だな 映画も話題作しか見ないような
黒真珠つーと、ちんぽに埋め込むもの
黒真珠なら Black Pearl だろう 大体Perl はスレ違い
パールレッド!パールブルー!
そこは金銀パールプレゼントだろ
472 :
デフォルトの名無しさん :2011/03/16(水) 19:20:40.71
質問ですが、親クラスのenumを子クラスで再定義(上書き)、みたいなことってできないんでしょうか。 一つ加えたいんですが。
クラスのenum? お前はなにを言ってるんだ。 あとこれC or C++ 言語のスーパーセットだから。
Objective C ってサーバーサイドプログラムって書けないの?
プログラムは書けるだろ 動くかどうかはサーバーによるだろうけど
gccにあるから当然使える。
デフォのWindows ServerにはObj-Cランタイム入ってないと思うよ
>Windows Server プギャー
俺エスパーじゃないから>474だけでサーバのOSを特定できないんだよ
480 :
デフォルトの名無しさん :2011/03/26(土) 18:15:21.07
こんにちは。 最近Objective-Cを勉強し始めた者です。 いろいろなサンプルソースを眺めていると、ときどき インスタンス名とプロパティ名を変更している書き方を見かけます。 こんな風に。 UIWindow* _window; @property (…) IBOutlet UIWindow window; @synthesize window = _window; 上の例の場合、 名前を途中で変える書き方って、どんな利点があるんでしょう? 全部「window」で統一しててもいいように思えるのですが。 皆さんはどうされていますか?
>480 それはGoogleのObjective-Cスタイルガイドに準じてるんだと思うよ
>>480 メソッド経由でアクセスしてるのか直接ポインタを触ってるのかが一目瞭然になる
カテゴリの名前には、コメントていどの意味しかないってまじで? 何の意味があんの?まぁ、大本のクラスとは区別つくけどさ。
clangのLLVM効果ってどうよ? メッセージのディスパッチもGCCなんかよりましになってる?
>>483 言ってる事がよくわからないけど、内部でカテゴリごとにまとめられる
>>484 ディスパッチ部分はランタイムの中だからアプリを何でコンパイルしようがランタイムが一緒なら一緒
nilチェックしないようにする位しかこっちは手が出せないよ
>>485 それ以外に効果があるのか?
>>480 俺は、windowで書いて必要になったら(自前でgetter,setter書く)
_windowに書き換えることにした。
>>487 > それ以外に効果があるのか?
そもそも
this.hoge
と
hoge
が違うのは一目瞭然だろ。
489 :
デフォルトの名無しさん :2011/03/27(日) 14:08:03.60
>>474 サーバー自体を書いてしまったらどうだろう。
>>488 コードを全然書いてないのがバレバレだな。
>>490-491 どっちにしろ
そもそも
self.hoge
と
hoge
が違うのは一目瞭然だろ。
その点については同意する
お前さんたちアタマいいな
ドット記法が使えるのはObjective-C2.0からですからー
プロパティの話だから2.0であってるだろ
>>480 そもそもプロパティを使うならインスタンス変数の宣言はいらないのでは?
そうでもない
そうでもない
32bit runtimeと64bit runtimeの違いだったけ? インスタンス変数の要不要。
>>502 Mac ではね。iOS だと最初から使えるとおもう。 新しい runtime だから。
いまはどうなってるか知らないけど、実機なら使えるけどシミュレータでは 使えないって状態だったせいで、iOSではインスタンス変数必須にするのが クセになってしまったよ
Debug->Releaseの構成で変わったけど
>>504 あー、シミュレータだと OS X のランタイム使うからかな? でも Xcode 4 入れた環境で試したらシミュレータでもちゃんとコンパイルできたよ。
xcode4使い方わかんねー
GET/POST値って取れんの?
CGIなら標準入出力と環境変数さえ扱えればいいだけだし。 WebObjectsも浮かばれんね。
libcgiをObjective-Cでラッピングすればいいとかなんとか
>>513 本持ってるなら、サンプルコードの使用についての記載は無いのかい?
例えばオライリーのJavaScript第5版には
「...本書や本書のサンプルコードを引用して質問などに答える場合、許可を求める必要はありません。ただし...」
となってるから、引用の量とかによるんじゃ。
本書及びソフトウェアの一部または全部を出版元から文書による許諾を得ずに複製する事は禁じられています。 って書いてあったたわ
516 :
デフォルトの名無しさん :2011/04/29(金) 00:56:03.63
>>508 まず自分で何が分からないのか
人に説明出来るくらい分からないと
そう考えると不思議と分かる
インスタンス変数は、 window_にしてとくと、 @synthesizeでxcodeが勝手に補完してくれて、 字余り
518 :
デフォルトの名無しさん :2011/04/30(土) 18:26:36.63
コード書くんだったらxcodeよりもappCodeだろ
そのココロは?
520 :
デフォルトの名無しさん :2011/04/30(土) 21:43:36.32
>>519 ずっとIDE作ってた会社だけあってエディタとしての機能はappCodeが確実に上
vimとかemacsを無理に使い続ける人たちって滑稽だと思う
無理に使い続ける人はそうかもね。何で無理に使い続けるの?
無理に使い続けてるなら滑稽だけど ぶっちゃけ快適だから使い続けている
Code Warrior最凶
EmacsとかVim使ってて生産性高いなら良いけど そうじゃない人多いよな 正直迷惑だからやめてほしい
どういう風に迷惑かけられたのか詳しく
emacsやvimを使ってる人は優れたプログラマが多い emacsやvimの生産性が高いのか、生産性の高いプログラマがそれらを好むのか おそらくは両方だろう
Emacs とか Vim の文字を見ただけで干渉してきたがる人がごくたまにいるよね 正直迷惑だからやめてほしい
>>527 とにかくとろいんだよ
Emacsを相当使いこなしてる人を知ってるけど
その人とのスピードは雲泥の差だし
IDE使ってる俺とも比べるべくも無い
そういう奴を何人も見てる
532 :
デフォルトの名無しさん :2011/04/30(土) 22:43:37.09
>>531 それが迷惑だと思わないなら終わってると思うよ
IDE のプラグインのインストールではまって時間を無駄にしている人と同じ感じかな。 あれはイライラするね。
534 :
デフォルトの名無しさん :2011/04/30(土) 22:45:44.36
まぁ、コード補完まわりとかemacsとかvimは中途半端で微妙だよね
Emacs や Vim の話をするだけでイチャツイてくる人はもう少し空気を読んで欲しいな。 俺等が Emacs や Vim を使った所で、世界が崩壊する訳じゃないんだから。
たまに、Emacs に文句を付ける事が生き甲斐なんだー、って人いるよね 正直迷惑だからやめてほしい
537 :
デフォルトの名無しさん :2011/04/30(土) 22:58:00.33
キャメルケース補完の出来ない環境は総じて糞
たまに、Vim に文句を付ける事に執念を燃やしているんだッ、って人いるよね 正直迷惑だからやめてほしい
>>520 appCodeちょっと気になる
日本語のコメントとか大丈夫?
勝手に使ってる分には構わんがこっち寄ってくんなってのemacs厨
他人が便利に使ってる物をとやかく言う人たちって滑稽だと思う
543 :
デフォルトの名無しさん :2011/05/01(日) 09:27:01.01
>>539 >>542 英語のスペルチェック入るから、日本語のコメントには下にちょっと波線が入る
スペルチェック切るか、option+returnで辞書にコメント登録しちゃえば波線は消える
@""で日本語入れる分には特に何も表示は出ないし問題なく書けるよ
IDEで数秒もかからない作業を数分かけたり精度を下げたりして 会社とプロジェクトの時間を無駄にする素人はまじで消えろと思う。 せめて作業によって複数の環境を併用してくれればいいのに。 趣味で触るなら好きな環境を使えばいいと思うんだけどね。
IDE 使わないでコンマ数秒でやれば文句無いんだろ。 IDE に心酔しているみたいだけど、単なるツールにそこまで入れ込んで スレ違いの話題を延々続けるのは理解出来んわ。
>>545 構文解析が必須のリファクタリングをemacsでもviでもコンマ数秒で行える人を見たことがない
実際できるものならそれを使って欲しい
548 :
デフォルトの名無しさん :2011/05/02(月) 15:00:54.73
>>547 置換で代用しようとして失敗する奴は絶滅して欲しいよな…
>>547 Vim で refactoring する方法はググれば沢山載ってるから、好きにすれば良い。
それはここで話す内容じゃないし、君の個人的な不満を吐き出す場所でもない。
550 :
デフォルトの名無しさん :2011/05/02(月) 15:05:59.65
そんなことよりCIDR使おうぜ
553 :
デフォルトの名無しさん :2011/05/02(月) 15:17:00.79
もしかすると、CIDRって予想以上に使ってる人少ないのかな
小さなツールで大きな仕事をするのが*nixと*nixプログラマ 大きなツールで小さな仕事しか出来ないのがNTとドザグラマ
556 :
デフォルトの名無しさん :2011/05/02(月) 17:54:12.90
>>554 そうそう、それのこと
appCodeの方が一般的なのかな?
エディタ戦争って本当に不毛だよな ツールを押し付け合っても誰からも感謝されない
IDEはエディタじゃない IDEにエディタが内蔵されてるだけ エディターとして語るのは言語道断
そういう言葉遊びはどうでもいいわ
大きなことは出来ませんが、小さなことからコツコツと
Objective-CというかMac好きな輩と IDE/Editor論争が好きな輩は被ってそう
ツールを押し付け合っても誰からも感謝されない
Emacs, Vimはよく出るけど今じゃ肥大化してるからな。 そこでnanoとかjoeってどうよ? オリジナルViのようにシンプルだぜ
普段は御本人こだわりのツール群使ってる奴が 他のメンバのマシンの前で手も足も出なくなってるの見ると なんだか可哀想になってくる
そういう事は堂々と本人の前で言えよ いつまでこのスレで愚痴ってるんだよ・・・
影で他人のツール構成を小馬鹿にしてる奴が 仕事をしてる本人の前ではビビって何も言えなくなってるのを見ると なんだか可哀想になってくる
567 :
デフォルトの名無しさん :2011/05/03(火) 10:26:45.35
俺はviもemacsも一通りの操作はできるし IDEもメジャーどころは一通り抑えてるので大丈夫だけど 現場のルールでIDEを仕様する事って決まってるときに viやemacsしか使いこなせない人の生産性の低下は目も当てられないとは思う 本番環境とかで緊急のデバッグするときにIDEしか使えない人のカスっぷりも 同様に目も当てられないので、プロならどの道具も普通程度には使えた方が良いと思う その中から好きなの選んで使いこなすのは良いと思うけどね
まだ言ってるのかよ スレ違いを理解出来ない人間が何を言っても・・・
569 :
デフォルトの名無しさん :2011/05/03(火) 11:06:56.68
スレ違い!スレ違い!って叫ぶだけじゃなくて話題提供しようぜ 出来ないなら黙ってりゃ良いだけだし appCode使ってみたけど、確かにXcodeでソース書く気は失せたな
黙ってりゃ何が良いんだ? グダグダ愚痴を垂れてるのなんて誰も見たくないだろ
>>570 どうでも良い方の話題にだけ食いついてるお前も同罪
どうでも良くない話題ってどれ?
Objective-C
じゃあ Objective-C の話題に戻そうぜ
関数型関数型って、関数部分を純粋にしてみせておおはしゃぎだけど、 結局データはどうなるのよ。関数に渡すんだろ? OOPでインタフェースの下に隠れてる内部構造を、 結局外から渡そうってんだろ? トータルで見たら散らかってね? 関数部分に副作用ありません、でもいっぱいデータ散らかして、 注意深く渡しながら、見張りながらやりくりしていきます、って?
576 :
575 :2011/05/04(水) 10:37:21.25
誤爆ごめん。
はしゃぎすぎだろw
言語混ざり過ぎだろ、ぼけなす
星来たんはぁはぁ(*´Д`*)
581 :
デフォルトの名無しさん :2011/05/08(日) 15:00:58.27
最近始めたんだけど、c++よりわかりやすいね、objective-c。メッセージ式が明確に分離されてるのがいいと思う。あの引数の構文は未だに慣れないけど。 久々のプログラムだったので、構造体の配列の初期化構文を思い出すためにK&Rの初版持ち出してきて見てたら、ベースになってるc自体もANSIでだいぶん変わってきてるんだなあと、面白かったわ。
あっそ
もちろん ObjC は良い言語だけど、そもそも C++ より分かりにくい言語が中々無い
rubyとか文法から動作まで結構わかり難いよ
>>584 だよな。一回「え?」ってなるんだよな。
分かれば楽なんだが、どう見ても驚き最大化。
まぁ初めての言語ならいいのかも知れんが。
まぁC++は「は?」になる訳だが。
省略しまくったPerl
あれは甘くないSugarだよねw
588 :
デフォルトの名無しさん :2011/05/10(火) 17:03:49.29
- (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.title = @"除外設定"; self.navigationItem.backBarButtonItem.title = @"除外設定"; UISearchBar* search = [[[UISearchBar alloc]init]autorelease]; search.prompt = @"検索"; search.showsCancelButton = YES; CGRect orgFrame = self.tableView.frame; [self.tableView addSubview: search]; search.frame = CGRectMake(orgFrame.origin.x, orgFrame.origin.y, orgFrame.size.width, 50); self.tableView.frame = CGRectMake(orgFrame.origin.x, orgFrame.origin.y, orgFrame.size.width, orgFrame.size.height - 50); } なぜか、セクションヘッダとテーブルコンテンツの間に、サーチバーが入ってしまいます。 どなたか、サーチバーを、タブバーの下に固定する方法をご存知でしたらご教示願います
589 :
ビル・ジョブス :2011/05/12(木) 10:26:28.21
tableViewにaddSubviewってのが・・ タブバー?の下って Y軸?Z軸? tableView.tableHeaderView = searchBar じゃダメなの?
場所ね
デリゲートってコールバックと何が違うの? 言語の設計思想的な違いじゃなくて、使う場面的とか利点とかで。
おれのかんがえたでりげーとのりてん デリゲート : ObjC の通常のメッセージ送信の延長で使えるから楽 コールバック : NSInvocation とか使ってセットアップするのが面倒そう
>>592 callback: 関数ポインタとか
delegate: オブジェクト
全然違うっポイ
けど、やってることは同じでしょ
ふむーthx 少し分かった気がする。 だがスマン、ちょっと説明不足だった。 コールバックは他の言語で言うところのコールバックだったのだけど、 他の言語でコールバックとかイベントマネージャ系組む時ってObjCの デリゲートみたいな仕組みになる組み方(オブジェクト&ハンドラ登録 みたいな感じ)してきたから、なんかよく分からなくなった。 例えば UIView の +setAnimationDelegate と +setAnimationDidStopSelector の 組み合わせなんかは結局の所コールバック指定しているのと同じだよなっていう。 他にUIView の継承クラスに特定の処理の実行後に呼び出して欲しい処理とかを - setDelegateForAfterHoge:(id)obj selector:(SEL)selector; みたいなメソッド書いておいてインスタンスに登録出来るようにしておくとか・・・ 結局、俺が概念的にコールバックとデリゲートの区別が付いてないだけなのかもしれん。
>>594 > けど、やってることは同じでしょ
おー、この一言が欲しかったっぽい!<俺
thx!!
コールバックはオブジェクト指向以前からあった概念なんで たいていは単純な関数ポインタのことを指す デリゲートは関数ポインタというメカニズムにもうひと手間加えた仕組みなんで 実際に処理する相手がネットワークの向こうにいても気にせず呼べる …って感じの話をEOFの頃に聞いた
なるほどね。関数ポインタ(あるいはアセンブラ上の処理起点 アドレスの格納アドレス)を使って相手の都合の良い時に呼び 出して貰うという伝統的な手法がまず正統なコールバック。 その手法や仕組みをより抽象化して柔軟性を高めてオブジェクト 指向の"委譲"と定義づけたものがデリゲートってことか。 だからそれらは全然違うけど、使って得られる(処理フロー的な) 結果は似てくるし、使う場面も似てくるのはある意味当然っと。 C,C++なんかでサードのSDKやライブラリの英語リファレンスなんか には実質デリゲートもコールバックの一種として捕らえていて"コールバック" と書いてある場合が多いのね。 大分すっきりしたわ。アリガトー。
コールバックは仕組みじゃね? 関数ポインタを渡して関数内でコールバック。 デリゲートへの参照を渡して関数内でコールバック。
関数ポインタと、デリゲートへの参照 ってどう違うの?
多段delegateが出来るところが大きな違いじゃね。 A=>C=>D っていうデリゲートフローがあって、メソッドによって Cで処理してたコード、Dで処理してたコードをがあったとする。 そこにBを挟むことで A=>B=>C=>D Bで機能追加(代替)出来るようになるじゃん。 機能追加が既存のコード書換なしで、IBいっぱつで出来るのが おもろいと思うんだけど。 似たような考え方だと、例外の処理とかに近いよね。
デリゲートは、関数というより、オブジェクトだから、デリゲート自体にプロパティを持たせられるというところが、おいしいよね。
>>602 >デリゲート自体にプロパティを持たせられるというところが、おいしいよね。
いえてる。
エーテル
冷えてる。
インテル
エーテルが煮えてる
家出る
メーテル、見えてる?
ちょっとだけ
611 :
デフォルトの名無しさん :2011/05/30(月) 22:08:27.74
Objective-Cのメッセージって、スレッド間とかで非同期送信とかできない?
NSNotificationCenter
performSelector:onThread:withObject:waitUntilDone: だろ
>>611 どのぐらいのものをどのぐらいの速度で送りたいのか知らないけど、ネットワークの向こうにある
オブジェクトにさえ簡単にメッセージ送れるのがObjective-Cの良いところ。
ネットワークの向こうについてkwsk
NSProxyとかNSConnectionとか
ネットワークの向こうに簡単にメッセージを送れるっていうか、そのための作りこみが結構いるよね。 そしてそれは、他の言語でも同じじゃない?
@class A; @interface B : A { } @end 上のようにヘッダーでスーパークラスの宣言を@classでやろうとすると 「error: cannot find interface declaration for 'A', superclass of 'B'」 というエラーが出てしまうんですが、#importでないとダメでしょうか?
だめです。
そんなこといわずに、そこをなんとかお願いします。
622 :
619 :2011/06/01(水) 09:41:24.44
.mファイルに#importをまとめて.hファイルは@classでまとめるとかっこいいかなって思ったんですが 無理なら諦めます
んじゃ、.hにまとめて.hで#importすればw
>>622 .mファイルで#importしたら、お前のクラスを使う別のモジュールが、ヘッダファイルだけを#importしても使えないってことじゃん
ヘッダファイルの意味をなさねぇじゃんw
ヘッダファイルで定義されてるのはクラス名だけじゃないだろ。マクロだったり、依存する他のヘッダのインポートだったり。
625 :
619 :2011/06/01(水) 14:01:15.63
>>623-624 じゃあなんのために@classあるの?って話しになっちゃうと思うのですが。。。
AクラスがBクラスを参照し、BクラスがAクラスを参照している場合に どっちも定義ができなくなっちゃうでしょ。 つか前方宣言でくぐれ
>>625 > じゃあなんのために@classあるの?って話しになっちゃうと思うのですが。
そのレベルなのかよ
>>627 答えられないならレスすんじゃねえよカス
なぜ@classがあるのか、それは@classでまとめるとかっこいいからです。
>>619 スーパークラスのヘッダファイルは常にインポートする必要がある。
@classで宣言したクラスはコンパイラにそういうクラスがありますよと教えているだけ。
631 :
619 :2011/06/02(木) 08:41:41.88
仕様ということですね
仕様じゃなきゃ、なんだったんだと
バグとか
634 :
デフォルトの名無しさん :2011/06/02(木) 16:42:17.95
スパークラスのヘッダのインポートが必要ないなら、そもそも#import、#includeプリプロセッサ自体が必要ないじゃんw
♨クラスw
@protocol MyGreatHeroDelegate; @class MyGreatHero : MyCharacter { SpecialWeapon *weapon; } @property (nonatmic, assign) id<MyGreatHeroDelegate> delegate; @protocol MyGreatHeroDelegate <NSObject> - (void)myGreatHero:(MyGreatHero *)hero didBeatMonsters:(NSArray *)monsters; @end
637 :
デフォルトの名無しさん :2011/06/03(金) 23:26:25.75
Objective-Cは、ヒープにオブジェクト作るのに何で メンバーをinterfaceに記述するようにしたんだろ? @protectedとか@publicのためなのか?いらんだろこんなもん。
何を言ってるんだお前は。
>>638 メンバーつうかインスタンス変数な。
インスタンス変数をpimplにできるじゃん。
@interface に書きたくないのならランタイム叩けば良いだけだろ。
痛っ..
>>641 だいじょうぶっ!?傷口見せて!!早く消毒しないとっ!!
上の方に仕事が来たっぽいから下見に来たら5スレ目?!
はぁ? 何いってんのお前? 市ねよ
646 :
デフォルトの名無しさん :2011/06/05(日) 05:27:58.88
@property (strong, nonatomic) UIWindow *window; Xcode4.2でプロジェクトを作成すると 上のコードで作られるんですが「strong」ってなんですか?
>>647 strongとは、読んで字のごとし、ストロング、つまり強いということです。
strongと宣言することで、他の一般的な変数(弱い変数)の代入を受け入れないという
ことを意味します。
但しその後に、nonatomicの宣言がありますので、charやint等の原始的な変数
以外のオブジェクト型については代入可能となります。
このへんの考え方は特に初心者には最初はとっつきにくいかも知れませんが、慣れれば
自然と理解きるようになるので、がんばって下さい。
ここはひどいいんたーねっつですね
>>648 ガーベジコレクション環境のストレージ修飾子の__strongって記述ぐらいしかないのですが!
iOS5の変更点(API Diffじゃなくて)のとこに少し説明があったけど読んだかい?
>>653 ありがとうとざいます。
ずっと読んでいじってたんですが、なんなんすかARCって。。これ誰得なんだよ。。
コンパイラオプションが必要だし、今まで通りでいいんじゃない? メモリ管理を楽にしようってのが目的なのは間違いないだろうけど… また忍法帳がorz リセットした俺が悪いけど
656 :
デフォルトの名無しさん :2011/06/12(日) 23:22:30.40
iPhoneの開発でsocket通信やってるんですが、 タイムアウトの設定ってどうやったらいいか知りませんか? 通信は、CFStreamCreatePairWithSocketToHostを使うやり方です。
スレチ
ん? ココア絡みはダメなのか?
別にスレチじゃないと思うけど 詳しい人はいないんじゃないかな 新・mac板の方が活発だと思う
/) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____こまかいことはよろしゅおまんのや!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
662 :
デフォルトの名無しさん :2011/06/13(月) 23:50:21.63
xcode4で開発しています。xib上で画像配置などのレイアウトをしたいのですが 横向きにするのにはどうしたらいいのでしょうか? view-based applicationでプロジェクトを作成して xibファイルをクリックするとデフォルトで縦向きになっているので その画面を横向きにしたいのです。 よろしくお願いします。
あちこちのスレに同じ質問してるけど マルチポストは嫌われるぞ あと、メニューくらい一通り探せw
664 :
デフォルトの名無しさん :2011/06/14(火) 00:12:34.63
>>663 すみません2つのスレだけですが同じ質問してます
実機で画面を横だけにするのはコードで書いたのですが
どうしてもxibのほうが横にできないのです
665 :
デフォルトの名無しさん :2011/06/14(火) 00:28:01.25
xibファイル横になりました。 別スレで解決しました。ありがとう。さようなら〜
二度と来んな
ターミナル.app上のbash上から、Obj-Cコードのコンパイルってコマンドで出来ますか?
できるよ gcc foo.m -o foo みたいにすれば良い
なんと、gccで出来たのですね てっきりgccはC言語専用だと思ってました、ありがとうございます
Xcode4.2/4.3で新規のプロジェクト作ると、ARCがデフォルトでオンになるな... 楽になるのか、ならんのか...
The Objective-C Programming Language Object-Oriented Programming with Objective-C webでも見れるしPDFも落とせるけど ibooksにもEPUBがあるのを見つけた どうでもいいか・・
G(NU) C(ompiler) C(ollection)
etain/releaseを人間にやらせるアホアホ仕様がARCの導入でようやく直ったか
どの程度使い物になるのか知らんが、俺は手動開放原理主義で行くぜ。
>>673 etainてな〜に?
ねえねえ、etainてなんなの?w
痛いん
あい〜ん
もしかしてARCってコンパイル時にrelease漏れの警告出してくれるの?
>>678 警告出すだけなら今でも静的解析で出来るだろ
いやん&hearts; しけべ
テスト&hearts;
まだiOS5て出してないけどドキュメントチラ見した感じだと あ、NDAの範囲かこれ?
出してないけどって何だ俺…手を付けてないけどでしたすんません NDAも怖いので口をつぐんで孤独に暮らしたいと思います
大抵 えぬでぃーえー って言いたいだけ
だってApple怖いんだもん
ゲーム1本iPhoneに移植するのにフリーの人に頼むと、 相場いくらですか? 規模はドラクエIくらい
一人一月で150〜200万くらい?
ドラクエの中の規模がわかる人がそういるとは思わないから人月で回答が返ったんだと思う。 で、実際問題元のコードが移植を前提として書かれているかどうかによってかなり違う。 全く違うプラットフォームに対する移植実績があれば(ドラクエはあるよね)それなりに短くなる。 「共通で使えるロジックがほとんどで表示回りさえ書き換えれば終わるから」 に泣かされた移植屋は多いはず。
人月150〜200万ってマジ? ゲームプログラマってそんな稼いでんの? つか、頼む方はペイできんのか
150〜200万はありえん。業者に払う額だよ。 フリー相手なら、その人が仕事してる期間に普通の生活を出来る額を払えばいい。
人月じゃなくてひと月で出来る人にやらせたらってことだろ
ほどほどにダラダラやっていいなら
>>693 だろうけど
>フリー相手なら、その人が仕事してる期間に普通の生活を出来る額を払えばいい。 これはひどい。
>>692 ペイする様に頑張って売ればいいじゃない。
>>695 他人は使い捨ての奴隷とでも思ってるんだろうなぁ。
安いやつは安いなりの理由があるもんで、
最後には結局自分でケツを拭くはめになって逆に高くついたりするんだよな。
フリーの外れを引いたときはホント悲惨だからな。
交渉次第だろ
多分自分に自信がなくて
>>693 みたいな要求にも答えちゃう奴が多いんだろうな
しっかりやる人間はちゃんと交渉して折り合いがつかなければ蹴る
今は圧倒的に発注者有利だからね 無茶な納期でも金に困ると受けざるを得んのよ
要するに「
>>693 みたいな嫌な奴も時々いるよね」って話。
あっちこっちに貼るんじゃねーよ糞が
>>688 リソースが揃ってる前提で、グラフィックや音楽の作り直しもなければ、
300万ぐらいからやってくれる人がいるとは思う。
費用の半分以上はリソース管理まわり。
FC->SFCのときみたいに真面目に移植したらもっとかかる。
国内向けアプリにその額払うと、100%ペイしないね。
iPhoneのTwitterアプリ作りたいんだけどなんかいい本ない?
600円で5000本。余裕。
3割引かれて利益乗せると1200円か。物によっては余裕。
引き伸ばす話でもないけど、どうせiPhoneでやるなら翻訳家雇って多国語対応した方がいいと思う てか、それでペイする視野でないと価格では今後勝てなくなる可能性が高い 戦場が世界に移ってるってことを肌で感じないと
いつのまにか現実論からお花畑理想論にw やっぱりiPhone信者=禿信者なんだろうな… たった2万Kwのメガソーラーを北海道に作るために 頑張って禿に貢いでねw
>>710 それ、「絶対損しないルール」作る事に全力あげてて巧く行きそうだから絶対もうかる。
どこにお金を突っ込めば増えるかよく知ってるよ。「役員報酬全額寄付」って言っとけばどれだけ儲かるかとかね。
>>710 iPhone界隈でハゲって言ったらJobs。
韓国の原発は安全なので世界に普及させようとか言ってる孫はカスすぎて話しにならん。
はなしし
JavaでいうAssertionErrorに相当するものは何なんでしょう? case文のdefaultとかでエラー投げないと気が済まないたいしつ何です
NSAssert,assert()あたりか。
>>714 そんな体質の人が自分の思ったキーワードでリファレンス引かない不思議
怠惰な疾患かと
URLしか張っていないリンクは危険だから開かないことにしている。
休止→急死
PC無害 精神的有害
>>723 自分で英語の文書をさしているのに、、、
a message sent to nil returns 0.0 for every field in the struct.
この文章を1文で訳そうとしているところに訳者の失敗がある。
メッセージがnilに送信された場合は0が返る。構造体の全てのフィールドは0である。
と訳すべきで、全体としては
「Mac OS X ABI Function Call Guide」に従いレジスタとして返される構造体(トータルで
32bit以下だったり64bit以下だったり、アーキテクチャ依存)は中身が全部0になるけど
収まらない奴(other struct)はそーはならないよ。
ってはなしだ。
Mac用のは古い。
727 :
723 :2011/06/28(火) 19:14:38.46
ありがとうございます。すっきりしました。
ARC 入れると、Reachability Sample に出てくる void*とNSObject * のキャストが出来ないのですが、Session video見ても、どうすれば良いのか不明です。どうすれば解決するのでしょうか?
322 にもあったのですか。見てみます。 ありがとうございます。
>>728 ですが、322,323 見ても、使えないのはわかるのですが、どうしたら良いのかが分かりません。slide のpdfも睨めっこしましたが?です。
そうですか。 残念ですね、頭の中味が。
ARCは本来、728みたいな人のためなんだけどね。まだベータ版だからなぁ…。 ってか、AppleはCocoa的に正しいポインタを返すラッパークラスを提供すべきだと思う。
ARCは型を見てRefarence Counterをいじってるから Objcオブジェクトとその他のポインタ(型)をキャストされると Reference Counterを追えなくなるんだよ だからキャストできなくしてる ただそれだけ Objcオブジェクトとその他のポインタ(型)をキャストしたければARCは使うな ARC使いたければObjcオブジェクトとその他のポインタをキャストするな ってこと と、理解してるんだけど、あってる?
そしたら、ARCってクラス毎に、有効/無効の混合は出来ますかね。
ファイル単位でon/offできる
そのon/off機能で、使い分けレバ良いのかな?on/offどうやるのかな?
↑自分で調べる気が無い奴
↑全く教える気が無い奴
↑当たり前だろバーカwww
↑教えようにも自分でもよく分らない奴
↑怒らせると教えてくれると思ってる奴
↑役に立たない奴
744 :
デフォルトの名無しさん :2011/06/30(木) 15:28:05.43
ガキの喧嘩だな
↑上から目線の奴
なんか調べてみたら、あれなんですが -fno-objc-arc かと思いますが。
ソース毎にコンパイルオプションを別々にする方法がわからんのでは?
ファイルに対して情報を付加するにはどういうUIを使うかを考えればいいんだよ
target setting の中の build phase かな。 その中の sources。
2011年、Ruby,Perl,PHP,Pythonって並べたときにさ ここで、Ruby以外を選ぶ奴ってマジでなんなんだろうな 放射性廃棄物のほうがマシ
Rubyは死んだ
え!ほんと? ちゃんと遺体を確認したの?
最近Objective-C始めたんですが、クラス継承のしかたって 継承させたいサブクラスの.hファイルに @interface SubClass : RootClass でいいんですよね? これでエラーが出てしまうんですが、コンパイラの不備でしょうか?
スーパークラスのインポートはしたかい というかエラー出るならそのエラーを晒せばいいと思うよ
wコンパイラの不備かよ
コンパイラの不備なんて簡単に言っちゃうような人はプログラマに向いてないんじゃないか
コンパイラのせいにする初心者、山ほど見てきたでござる の巻
次回は 「そんなのどこにも書いてない」 をお送りします
コンパイラの不備ワロタwww
760 :
デフォルトの名無しさん :2011/07/07(木) 11:48:34.73
私は悪くない。悪いのはコンパイラ。 女かよ
コンパイラがバグっているなら みんな合わせるしかないじゃない! あなたも!私も!
>>761 コンパイラを直すといういう道も残されてるぞ。
直せれば、そもそもこんなエラーが出るハズはない...
>>753 RootClassはNSObject。
それを言うならSuperClass。
全てのバグを生まれる前に消し去りたい。 すべてのソース、過去と未来の全てのバクを、この手で。
OSですらバグってるのに
納期が遅れそうなので 「コンパイラに不備があって・・・」 と言い訳してやったぜ
そういう使い方があったか...
客:コンパイラって何?
コンパイラーV
客「ならハンドアセンブルしろ。」
Objective-Cはnullを参照してる変数にたいしてメソッド呼び出ししてもNPE発生せずに ただその行がスルーされるだけってマジですか?
ウソです。
>>772 スルーする訳ではないし、場合によっては期待される値も返す
>>774 [NULL retain]; が返す期待される値とは?
にゅるぽ
>>772 nil に対するメッセージ送信は何もせずに 0 を返すよ。
>>777 そうとは限らないよ
たとえば
typedef struct {
long long hoge;
long long fuga;
} Hoge;
-(Hoge)method;
をnilに投げたときは何が返ってくるかは未定義
それはObjCのオブジェクトでない者に、実装のないメッセージを送った場合と言うこと?
返値の型と大きさ(幅)による つか >723-725
例えば view.bounds は CGRect 構造体を返すけど、view が nil の場合に何が返るかは不明ってこと。
何やら得体の知れないものが返ってくる可能性があるわけか、はぁクワバラクワバラ...
そもそもviewの実体が存在しないケースの話だからな 初期化してないポインタ触るのと同じくらい間違った処理
まぁでも結果を必要としない呼び出しでは便利なこともあるよな。 受け手がnilの場合は無視してくれればいい時は,いちいちif文で 分岐しなくていいし。
785 :
デフォルトの名無しさん :2011/07/13(水) 20:28:17.96
プロトコルの理解についてだが、プロトコル宣言で列挙したメソッドは、そのプロトコルを掲げてるクラスでは絶対に実装する決まり って理解でOK? 吉野家で例えると、プロトコル”特殊注文”に「つゆだくメソッド」と「ねぎだくメソッド」と「つゆ抜きメソッド」を列挙すれば、 店舗クラス<特殊注文>から生成したインスタンス(お店)では、必ず「つゆだくメソッド」と「ねぎだくメソッド」と「つゆ抜きメソッド」が実装されているので、注文ができる事が保証される。 という仕組みなのかな?
あってるけど、現状ほとんどオプショナル。
@optional - (void)tsuyudakude; - (void)negidakude; - (void)tsuyunukide; @required - (void)namide; - (void)oomoride; - (void)tokumoride;
788 :
デフォルトの名無しさん :2011/07/16(土) 12:18:35.29
>786,787 ありがとう。理解できててよかった。
なんかMac板のcocoaスレで古いOSの開発者をこき下ろすレスが出まくってるけど、 自分も10.7は見送るからこの閉鎖的な雰囲気が嫌いだなあ。 古いのはユーザーも開発者も切り捨てるのはアップルの伝統だけど、 これからアプリ開発者の間口を広げるにはMS並のサポートが必要だと思う。 .NetFrameworkなんて全てのバージョンが共存可能、実行も可能だし。
Windows Mobileはバッサリ切り捨てられたって聞いたけど…
向こうのスレで言えばいいのに、わざわざこっちにまでご苦労様です。
確かにそうだな。Mac 板の雰囲気なんてどうでも良いし。
Cocoaスレで袋だたきにされたからって、ここまで来て自分がアホだと披露しなくても良いだろうに。
>>789 10.7は見送りってお前さん、10.6でも動作確認しなかったんだろ?
ソフトを世に出すってのは相応の責任が発生するもんだ
泣いていないで動作確認頑張れよ
そこまでは言わない。 「サポートするのは10.5まで」ならそれはそれで全然かまわないと思う。 理由は金がないからでも、10.6や10.7が嫌いだから。でも良いと思う。 それなら潔くサポート範囲を表明して自分のリスクで新しいOSで使うか10.5にとどまるかを 利用者に選択させれば良いだけの話。 業務ソフトでWindows2000で止めてるとか、XPで止めてるとかよく聞く話だ。
最近Objective-Cを始めたんですが 登録、変更、削除から選んで名前を登録したり検索したりするコンソールアプリを作りたいんですが 参考になるソースやらサイトってありますか?
ありますん
>>796 イマイチ何がやりたいのか分からないけど、人名のデータベースを作成したいってこと?
それなら sqlite3 / libsqlite3.dyllib を使うと良いと思います
>>797 よろしければ教えていただけないでしょうか?
>>798 データベースというか変数に値を持たせて配列の中に格納して
自由に取り出せるようなことをループの中で実現したいんです
CoreDataかな。サンプルコードを見てみたら。
>>799 コンソールアプリという言い方はMac OS(で作ろうとしてるんだよね)ではあまりしない。
コマンドラインツールとあコマンドラインアプリとか呼ぶ。コンソール.appってアプリがあるからね。
で、Cの知識等がどのぐらいあるか解らないのでとりあえずのとっかかりだけ。
Xcode 4でNew Project...を選んでMac OSのApplication、 Comman line tool、 CoreDataのテンプレートを
選ぶととりあえずテンプレートが出てくる。これを眺めてみるのが良いんじゃないかな?
CoreDataはちょっとと言う事ならCoreFoundationのテンプレートで。
でも、この手の事をやるのに、コマンドラインツールは「モード」の設計などをループで組んでUI設計する
事になるので結構めんどうだと思いますよ。GUI作るか、データを別に保持して、追加、削除、検索なんかを
別々に持ってしまう方が楽になると思います。
>>789 Visual Basic 6.0はどうなったのですか。
>>802 とうの昔にサポート切れ。Windows 7までででランタイムサポートも終了予定
>>801 >コマンドラインツールは「モード」の設計などをループで組んでUI設計する
>事になるので結構めんどうだと思いますよ。
REPL なんて作るのも使うのも簡単じゃん・・・
うむ、GUIが不要ならその方がずっと楽だわ。
GUIはまだわからないのですがNSMutableArrayでもいけますか?
yes
>>806 NSMutableDictionary というのもあるよ
・過疎スレで短時間にレスが集中する ・みんな同調するレスや攻撃対象にアンカーをつけるレスが連続する ・突然レスの投稿が止まり、相手が反応するまで他のレスが無くなる ・一つとして同じIDが存在しない このようなロジックのプログラムをobjective-cで書きたいのですが、 どうすればよいのでしょうか?
神になれ
10.7が動きません。 どうすれば良いのでしょうか?
神になれ
何の?
最近iPhoneアプリの開発を始めました。 以前にC#をやっていて、 enum ColorType { RED = 0, YELLOW, : }; static string GetColorTypeText( ColorType colorType ) { switch (colorType) { case ColorType.RED: return "red"; case ColorType.YELLOW: return "yellow"; : } return null; } という感じのプログラムを良く組んでいました。 #ローカル変数?の参照を返しているので大丈夫か不安でしたが、 #何度実行しても不具合が出なかったので で、これと同じことをObjective-Cでやったら ステップ実行したときはちゃんと想定どおり動き、 普通に実行すると強制終了で落ちます。 やっぱり文字列のアドレスを戻り値として返してはいけないのでしょうか? 違いがよく分かりません…。
そのコードをXcodeでビルドしたって事? それなら、動くわけないと思うがw
>>814 C記述の部分は基本Cのままだから一見問題ない。
リテラル文字列はスタックじゃなくて固定領域に確保されるはずだし。
コンパイラの最適化で同じ文字列だと共通化(同一アドレス化)されるからそういうのかな。
817 :
814 :2011/07/22(金) 19:33:17.57
>>815 Objective-Cで書いています。
すみません、C#でこういう風に書いてましたーという説明だったので、分かりにくかったですね。
ステップ実行ではきちんと動くので、文法エラーはないです。
>>816 >リテラル文字列はスタックじゃなくて固定領域に確保
そうなんですか!じゃあ大丈夫なはずなんですね。
同じ文字列はないですね、red, yellow, green, という感じでバラバラです。
でも知りたかったのは
>文字列のアドレスを戻り値として返してはいけないのでしょうか?
の部分なので、一応大丈夫だと分かって良かったです。ありがとうございます。
>>817 強制終了するなら大丈夫じゃないじゃん。
まともなアドバイスが欲しいならちゃんと Objective-C の落ちるコード貼りなよ。
で、iPhone アプリなら C の文字列じゃなくて NSString 使うといいよ。
てか、C#でもマトモにプログラミング出来てるのか不安w
なぜかC#のコードを添付。 強制終了したのに原因を特定出来ない。
>>814 C#では問題ないし、Cでもリテラルを返すだけなら問題ないだろ。
戻りの型はconst char*にするべきだけど。
何となく C 文字列の話が前提になってるんだけど、
>>814 でも
>>817 でも C 文字列なのか NSString なのか一言も書かれてないんだよなあ。
Objective-C のコードを貼ってくれりゃ一発で分かるのに、
回答する側が複数のケースを考えなきゃならんような質問の仕方をなぜするんだろ。
釣りだろ
もうこの手の質問への答えは全部「神になれ」でいいよ エスパーすんのもばかばかしい
変にかまわず放置しとけよ。 レスがあるだけで喜ぶんだから。
827 :
デフォルトの名無しさん :2011/07/23(土) 16:24:13.56
Automatic Reference Counting どうよ?
さぁどうだろ?
最近iOSの開発やり始めたんだけど、一々くだらないとこでつまずくのがこの言語の仕様かい?
そうだよ
iOS の開発ってやっぱり Infinite Loop でやってんの?
失礼、iOSアプリの開発
そんなのはフレームワークが用意してくれてる
>>829 はじめてのプラットフォームだとそんなもんだよ
夏休み終わるまでに慣れるといいね
一々くだらないとこでつまずくくらいの頭なのに、 夏休み終わるまでに慣れるのは無理だろw
意外とそうでもない
なぜなら終わらない夏休み
青春が Infinite Loop
>>831 近隣に宇宙船作ってInfinite Loopから引っ越すらしいお
enum cardsuit { kNSxxxxxxx1 kNSxxxxxxx2, kNSxxxxxxx3, }; よくenumの変数名(?)の先頭がkで始まってるを見かけるのですが これって何か理由があるんでしょうか??
kは定数を表すプレフィックスじゃね?
Google kで初めて大文字から始まる単語な。 例) kWritePerm Apple Cocoa 関数と同じ。大文字のプレフィクスから初めて大文字から始まる単語な。 例)NSRadioModeMatrix Apple CoreFoundationあたり GoogleとApple Cocoaを混ぜたもの。 例) kCFRunLoopRunHandledSource ピコーン!Appleの比較的新しいのはk無しだな! Apple CoreGraphic 例) kCGBitmapAlphaInfoMask Apple CoreImage 例) kCIContextOutputColorSpace; Apple AV Foundation 例) AVMediaTypeVideo; Appleには何言っても無駄だw
>>841 konstantのkでしょ。数学でもよく使う。
あとFortranだとI〜Nで始まる変数のimplicit typeはintegerなので
kは整数型も連想させる。
lはlongのlだな
847 :
デフォルトの名無しさん :2011/07/28(木) 21:28:36.52
MBA新型買ったから、iPhoneアプリ開発をしてみようっていう、プログラミング経験ゼロの開発初心者ってどれくらい居る?
プログラマの数と同じだけ存在したよ。
849 :
841 :2011/07/28(木) 22:17:48.24
定数の意味だったんですね。ありがとうございます。 かっこ良く感じたんで今後は自分もそうします。
>>847 xcodeを入れようとしてSSDの容量不足であきらめる人ならだいぶいそうだけど。
定数の最初に k つけるのって、元はPowerPlantの習慣だったような気がするけど、違ったっけ。
nuclear plant
どうも Carbon を引き摺っている感じがして余り好きじゃないな Carbon が嫌いな訳じゃなくて、異種混交なのが美しくないと思う
全部大文字がナウだよね。
えっ、むしろ全部大文字が嫌だからk+キャメルケースにしてんだろ
あっ、そうなの?w
k とか m とか f とか、勘弁して欲しいわぁ
全部大文字って打ちにくい&読みにくいじゃん
const かどうかなんて定義を見れば良い話
プレフィックスでスコープを明示するのはけっこう好き。
結局ローカルルールで終わるイメージのスタイル
作ったアプリが全然売れんぞ! どういうことだ!
>>864 おまえが糞なんだよ
APじゃなくて、おまえがな
ははぁ、どおりで...┐(´ー`)┌ マイッタネ♪
867 :
デフォルトの名無しさん :2011/08/04(木) 21:36:22.03
dateWithStringって、どのクラスのメソッド? NSDateで使えるのに、NSDateクラスのヘッダファイルに定義されていないのは何でだろう???もっと上の親クラスのメソッドってこと? 知っている人います?
ちょっと教えてください。 Xcode4.1をインストールしたら表示言語が英語になってるんですけど、 これって日本語に切り替えれるんでしょうか? それとも、英語のままですか。 ちなみにobjective-c以前にmac初心者です。
出来ない。
870 :
デフォルトの名無しさん :2011/08/04(木) 23:02:33.29
>>868 ついてこれるやつだけついてこい。
そういうこと。
>>867 NSCalendarDate.h に定義されてるじゃまいかの英雄ウサイン・ボルト
ってかリファレンスで調べればすぐわかるだろうに
その前にカテゴリの知識がいるな。
お世話になっております。 868です。 869さん、870さん、ありがとうございました。 話は変わるんですけど、xcode4の実行ファイルってどこにできるんでしょうか? build/Debug以下にできるものばかりだと思っていたんですけど、 このディレクトリすらできていないです。。。。 プロジェクトのタイプはcommand line Tool、foundationで特に設定はいじっていない状態で、 runやらBuild for ....を実行しただけの状態です。(Build Succeeded と表示はされています。)
Preferences -> Locations -> Derived Data
そんなところに出来るのか 面倒くさいからxcodebuildでビルドしていつもどおりのbuildディレクトリから取り出してるわw
お世話になっております。 868です。 875さん。 Relativeに変更したら、ワークスペース以下のディレクトリに実行ファイルができるようになりました!!! 本当にありがとうございました。
878 :
867 :2011/08/05(金) 19:36:39.78
>>872 リファレンスでは、iOSのCoreLibraryのリファレンスでは、メンバメソッドになっていなかった。MacOSX10.7のCoreLibraryのリファレンスではメンバメソッドの記述があった。
iOS用アプリ作る時と、MacOSX用作る時で、書き方を変えなければいけないのかな?
>>873 カテゴリの知識、ググッてきます。
879 :
デフォルトの名無しさん :2011/08/06(土) 09:59:27.61
Xcode4の日本語対応っていつよ?
スレチ
優秀なプログラマーになるには他人のコードを読む事。に習って 優秀なobjCプログラマーのコードを読みたいんですが どれ読めばいいと思いますか?
ObjectiveCをいじると ビビディバヴィデヴーになるね
>>881 apple developer centetのSample
Centet : Quinted : Printin
886 :
デフォルトの名無しさん :2011/08/09(火) 22:58:49.99
どなたかご教示ください。 bluetooth(ブルートゥース)を使って、AndroidとiPhone間を通信させたいのですが、 技術情報や実現している参考アプリを教えて頂ければと助かります。 英語サイトでも結構です。 とても困っています。よろしくお願いいたします。
スレチ
891 :
886 :2011/08/10(水) 08:55:06.18
>>888 ネット環境やwifi環境がないところで、AndroidとiPhone間で情報のやりとりを行いたいのです。
bumpはbumpサーバーを通すので、ネット環境がないと使用できないことに気づき、
困っております。
英語サイトでも良いので、サンプルがあれば手がかりになるですが、現状見つからず。
いきなりで大変恐縮ですが、お力をかして頂ければと思います。
よろしくお願いいたします。
マルチ氏ね
ObjectiveCで正規表現を使って特定の文字列を変換したいのですがどうすれば出来るでしょうか? 私はAさんが好きです ↓ 私はAくんが好きです Regex.replaceのようなメソッドがあるのでしょうか?
>>894 リファレンス見れば?
見ずに聞いてるのがバレバレ
リファレンスってどこにあるのでしょうか?
897 :
867 :2011/08/12(金) 00:38:56.69
>>896 ローカルで見るなら、xcodeからDL。もしくはオンライン。
なぜ、「Objective-C 正規表現」とかでググってみようとしないのだろうか。 なぜそうしないのか、俺にはさっぱり理解できない。
代わりにググってみたが、うどん食いたくなった
ググってもたいした解説なのは出てこないしreplaceとかは出てこないな 正規表現ならObjective-C以外のサイト見た方がいいかもね
[Cocoa 正規表現]とかググれば使えそうなライブラリいくつか見つかるけど。
902 :
デフォルトの名無しさん :2011/08/12(金) 02:14:32.43
誰かいるかなあ、ここで質問してもいいのだろうか。 画像周りのメモリ管理に数日ハマってて、releaseやらretainやら・・・。 [UIImage isKindOfClass:] message sent to deallocated instance 0x○○○・・・ これが何が何だかよくわからなくて質問させて頂きました。
>>902 それ、解放済みのオブジェクトにアクセスしてるんじゃないの
君はGCかARC使ったほうがいい
905 :
デフォルトの名無しさん :2011/08/12(金) 02:45:47.44
>>903 ありがとう。
それとなく、そうなのかなとは感じていたのだけど
[UIImage isKindOfClass:]ってところにどうも引っかかってて。
もう一度、目的を絞って考えてみるよ。
>>904 UIImageはiPhoneなのでGCはなく、ARCは5からだから、、、
とりあえず、
>>902 は自分の書いている通りreleaseやらretainやらではまってるんで
その方向であがくしかないんじゃないかな?
そのUIImageがdeallocateされてると書いてあるので、既にどこかでreleaseされてる。
ARCは4でも使えるぞ
>>900-901 標準ライブラリに、NSRegularExpression っていう正規表現用のクラスがあって、置換用のメソッドもある。
ググればすくに見つかる。
馬鹿なの? 情弱なの?
Available in iOS 4.0 and later. Available in Mac OS X v10.7 and later.
おいおい、もうすぐiOS5.0が出るってときに、それがどうした。 今の最新はiOS4.3だし、iOS4.0が出たのなんてもう1年以上前だぞ。 OSのバージョンアップの仕方も知らない情弱なんか切り捨てろ!
iOSはともかくMac OSで10.7はまだ依存するには早いだろ。
ググりもしない馬鹿のことはもういいじゃないか。
>>907 あら、そーなの?
確かにARCはllvm clangなら理屈としては使えるけど、そーだとしたらSnowLeopardでも使えそうよね。
そうでないとエミュレータでデバッグできない(エミュレータのコードはIntelコードだし)。
>>907 weak referenceは駄目だけどね。
ARC、たまに変な動作するんで使いづらい。
>>914 10.6 でも使えるよ。
>>915 の言うように weak refrence は駄目だけど。
Programming With ARC Release Notes に以下のように書いてある。
You enable ARC using a new -fobjc-arc compiler flag. ARC is supported
in Xcode 4.2 for Mac OS X v10.6 and v10.7 (64-bit applications) and
for iOS 4 and iOS 5. (Weak references are not supported in Mac OS X
v10.6 and iOS 4). There is no ARC support in Xcode 4.1.
ただし 10.6 用の Xcode 4.2 に入っている SDK が ARC 対応じゃないので、
10.7 の Xcode 4.2 を使って build する必要がある。
>>916 たとえばどんな?
さっさとARCに移行しようと思っているので気になる。
>>917 了解、サンクスでした。
でも、weakが使えないと循環参照問題が出たりしそうなので、私はそこまでしては使わないかな。
そのへん意識しないと使えないならそもそもの
>>902 はやっぱりまじめにreference counting
理解するようにしたほうが良いと思う。
@public な変数と、@property の使いわけに悩みます。 判断の基準とかありますか?
@public は使うな。以上
できれば理由をお願いしまする。
カプセル化でググれ
なんでもかんでも頑なにカプセル化すればいいってもんでもないだろ。 Java厨かよ。
データ格納目的の単なる構造体的な使い方をする場合は、@publicでいいと思うよ。見通しもいいし。 クラスとして使う場合は、やはりプロパティとして公開した方がいいだろうな。
大量にアクセスする場合は、速度優先であえてプロパティにしないという選択もあるな。
そんなことして有意な差が出るほど大量のObj-C オブジェクトを作る時点で間違い。
なぜ、大量のアクセス = 大量のオブジェクト という発想になるんだろうか?
ありがとうございました。基本的にはプロパティで公開ということでよさそうですね。
少数のオブジェクトに大量アクセスなら、それこそ酷い設計だろ。
凝り固まりすぎ。想像力を働かせてみて。もっとこう頭を柔軟に!柔軟に! シミュレーションのプログラムとか作ったことないの? 試しにオセロゲームとかつくってみるといいよ。
インスタンス変数のプレフィックスって変数の末尾に_入れてますか? それともAppleの命名規則を無視して先頭にしてますか?
俺はGoogleのコーディング規約に従って、後ろにアンダースコア(_)をつけてるな。 後ろだから、プレフィックスじゃなくて、サフィックスか。
末尾にプレフィックスはないわー
末尾にアンダースコアはunix系のC++の習慣だな。 気持ち的には先頭につけたかったんだろうけど。
は? 先頭にアンダースコアはAppleが使っているから、衝突避けるために お前らアンダースコア使うんじゃねーぞって、Appleが言ってんじゃん。
でもXcode4のテンプレコードって @synthesize window=_window みたいになってるよね。
そろそろ ObjC にも名前空間を導入して欲しいなあ...
ランタイムに手を加えまくることになるし、速度が犠牲になる。
>>931 オセロシミュレートなんてレベルで、プロパティ・アクセスのオーバーヘッドが表に出るわけ無いだろ。
大丈夫か?
>>937 Apple様がお造りになられるコードは頭にアンスコでいいんだよ。
>>941 テンプレコードはユーザが書くコードの出発点じゃんか。
そこでいきなり規約外ってのもどうかと思うけどね。
Apple様はアンスコを頭につけていいわけだから、規格外じゃないだろ。 お前らが追加するコードは頭にアンスコつけちゃダメだけどな。
Apple様の教義に逆らうと髪の毛が生えてくる呪いにかかります
そもそも変数にアンダースコアのプレフィックスなりサフィックスなり付けたい理由ってなんなん?
これはメンバ変数だよって一目でわかるから。 Windowsプログラマは、頭にmとかつけるな。
この手の話題は宗教戦争みたいになるから 別スレでやってください
一般的には、変数に対しては接頭語として oppai を使用する事が推奨されます。
なるほど!実践してみる
>>951 はい!是非有効に活用してくださいね!!
chinkoじゃ駄目なのか、、、、orz
グローバル変数…w
oppai派、OPPAI派、接尾語のoshiri派と、宗教戦争みたいになるから 別スレでやってください
宗教戦争みたいになってる方がまだマシのような・・・
結論はアンスコを被るのも履くものどっちも変態ってことで良いのか?
スレのレベル低すぎw ワロタ
夏だからな
961 :
デフォルトの名無しさん :2011/08/17(水) 20:18:45.40
大津さんの iOS プログラミング入門 p99-102 を読んでいるのですが、 以下のようなプログラムを書きました。 1:NSDate *myDate = [[NSDate alloc] init ]; 2:NSLog(@"myDateの参照カウンタ=%lu", [myDate retainCount]); 3:[myDate release]; 4:NSLog(@"myDateの参照カウンタ=%lu", [myDate retainCount]); 5:if (myDate == nil) { 6: NSLog(@"myDateはnilです"); 7:} else { 8: NSLog(@"myDateはnilじゃない"); 9:} 実行結果: myDateの参照カウンタ=1 myDateの参照カウンタ=1 myDateはnilじゃない 私の想定としては、3行目で myDate を release しているので、 myDate の参照カウンタは 0 になり、 4行目の結果は 0 となると思っていたのですが, 1 のままです。 1のままだから、5行目以降の判定も nil じゃないのだと思います。 この myDate は、いつメモリからクリアされるのでしょうか?
>>961 3行めの release でオブジェクトは破棄されてる。
破棄されたオブジェクトにアクセスしてはいけないので、4行めの retainCount は未定義動作。
オブジェクトを破棄しても、それを指していたポインタ変数 myDate の値は変わらないので、myDate == nil にはならない。
汝、retainCountを数える事なかれ そは、理を知り真理に触れし者のみが振える御技 汝、オーナーシップの本質を見よ そは、相反する一対の調和を守る事也 allocにはreleaseを。copyにはreleaseを。retainにはreleaseを。 アーメン
@property(nonatomic, retain) ほげほげ *ふが; @synthesize ふが; self.ふが = [[[ほげほげ alloc] init] autorelease]; self.ふが = nil; が最強だと思うけどどうよ。ペアを探す神経衰弱から解放される。 もちろん本当にパフォーマンスとか使用メモリ重視のところは別途考えるとして。
日本語は変数名に使えないよ。
966 :
sage :2011/08/18(木) 00:33:46.46
NSStringを返却するメソッドで、Analizerを実行すると、以下のエラーが表示されます。 「Potential leak of an object allocated on line 25 and stored into 'str'」 どこでreleaseをすれば良いのでしょうか? === main.m === StringTest* strTest = [StringTest alloc]; NSString* str = [strTest testString]; NSLog(@"[%@]", str); [strTest release]; } === StringTest.m === - (NSString* )testString { int num = 4; NSString* str = [[ NSString alloc ] initWithFormat:@"数は%dです", num]; return str; }
return [str autorelease];
何を実現したいかの要求仕様がよく分からないけど、 自分なら str を StringTest クラスのメンバ変数にして、 StringTest クラスの dealloc の中で面倒見るかな
カベジコレクションを使わないなら オーナーシップポリシー メインループ AutoreleasePoolの動き 最低限は抑えとこうね。
>>967 ありがとうございます。
ご指摘の通り、autoreleaseを追加することで、対応できました。
>>968 通常は、メンバ変数にするのですね。。
ご指摘ありがとうございます。
>>969 無知で申し訳ないです。
AutoReleasePool、メインループなどはまだ不勉強なので、これから勉強します。
ありがとうございました。
971 :
961 :2011/08/18(木) 01:40:28.49
レスどうもありがとうございます。
>>962 > 破棄されたオブジェクトにアクセスしてはいけないので、4行めの retainCount は未定義動作。
C言語でも、free()した後、そのメモリがいつクリアされるかは処理系依存で、
free()した直後にアクセスしていても内容は残っている(でもfree()した後の変数へのアクセス結果は未定義動作)
というのがあったと思いますが、
>>961 で [myDate retainCount] しても1が残っているのはそういうことでしょうか?
また、
> オブジェクトを破棄しても、それを指していたポインタ変数 myDateの値はかわらない
C言語でも
char *str = (char *)malloc(100);
gets(str);
free(str);
ここでstrはfreeされたけど、strのアドレスが格納されている *str というポインタ変数には
値が残っているのと同じでしょうか?
# C言語の知識が生半可なので間違っていたらすみません。
972 :
961 :2011/08/18(木) 01:44:21.99
あと、release = free というわけではないのですよね。
>>963 ,
>>969 でオーナーシップが出てきましたが、
release は、参照カウンタ(オーナーシップ)の数を減らすだけで、
release で参照カウンタが0になったとき、内部では同時にfree()が起きる?
Linuxのファイルシステムで、1つのファイルに複数のハードリンクを張ったあと、
1つ1つ rm していって、最後に rm したら、ハードリンクされた数が0になるので
inodeからも削除される、みたいに。
デバッグ用の環境でメモリ確保毎に別ページに確保して、 開放したあとにメモリアクセスするとページフォルト発生させるやつとかなかった??
>>970 >通常は、メンバ変数にするのですね。。
str が一時的な値なら、メンバ変数にはしません。autorelease が正解です。
>>971 >C言語でも、free()した後、そのメモリがいつクリアされるかは処理系依存で、
>free()した直後にアクセスしていても内容は残っている(でもfree()した後の変数へのアクセス結果は未定義動作)
C でも、free() したメモリへのアクセスは明確にバグです。
>というのがあったと思いますが、
>>961 で [myDate retainCount] しても1が残っているのはそういうことでしょうか?
未定義動作(バグ)ですから、何が起きても文句は言えません。クラッシュするかもしれないし、もっとひどいことが起きるかもしれない。1 が返ってきたのはたまたまにすぎません。
>ここでstrはfreeされたけど、strのアドレスが格納されている *str というポインタ変数には
>値が残っているのと同じでしょうか?
です。ポインタと、それが指すものは別ですから。
>>972 >release は、参照カウンタ(オーナーシップ)の数を減らすだけで、
>release で参照カウンタが0になったとき、内部では同時にfree()が起きる?
です。
で、自分がオーナーシップを持ってない、かつ、他から借りてるわけでもないオブジェクトへのアクセスは、バグってこと。
未定義動作をバグと言い換える意味がないというか、意味が違う。
未定義動作に何かしらの期待をする事はバグの原因っていう感じでしょ。
未定義動作そのものはバグではないから 「未定義動作(バグ)」と書くと誤解を招く 未定義動作の操作を実行した結果 たまたま動くときと動かないときがあって それをバグ(の一種)と言う
猿は黙ってautoreleace
細けぇ奴だな。
>>961 のコードは明らかにバグだろうが。
ゼロデバイドはバグではありません。
未割当の変数へのアクセスはバグではありません。
配列範囲外へのアクセスはバグではありません。
その操作の結果がバグの一種なのです。とか言い張ってそうだな。
阿呆言う香具師が阿呆
猿は黙ってARC
レスどうもありがとうございます。 C だと free() した後の動作は保証されないし、そもそもするなというのはわかります。 (自分でもCを書くときはそうしている) Objective-C の場合、[hoge release]; をした場合、 ほかにもオーナーシップを持っている人がいて、 参照カウンタが1下がっただけでまだ生き残っているのか、 0 になったから解放された(or 解放されるマークがついた)のかがわからないのではとおもいます。 こういうシチュエーションがあるかどうかはわからないけど、 [hoge rekease]; したあとに、 if (まだ hoge が生きている) { // ある処理をしたい } else { // いなくなったので、別の処理をしたい } といった判定をしたくなるようなことはないかと思って。
自分はもう使わないから、releaseしたんだろ。 まだ使うんだったら、使い終わってからreleaseするか、 もう一度retainしてから使えよ。
>>983 そういう事が必要なシチュエーションはちょっと思いつかないけど、
releaseする直前に参照カウントをチェックすればいいんじゃね?
あぁ、いったんdealloc されたオブジェクトをretain するのはご法度な。つか出来ない。
そもそも参照カウントってランタイムのためにあるんであって、 利用者のためにあるわけじゃないと思うな。
>>961 について少し実験してみたのですが、
release して明らかに参照カウンタが 0 になったとしても、
同じスコープ(同一メソッドの中)だと生き残っている(ように見える)けど、
スコープが切り替わる
# 呼出元メソッドと呼出先メソッド両方にオブジェクトの参照を
# 渡しておいて、呼出先で release したあと、呼出元で触ってみる
と、エラーが出るようになりました。
スタックが1つ減ったので解放されたのかな。
***
>>984 そういわれると、そんな気がしてきた。
自分のメソッド内で使うんだったら直前で release なんかしない気がする。
>>988 そういうものなのですか。
>>961 で書いた「iOS プログラミング入門」で出てきたので、
これを使ってメモリ管理すべきなのかと思っていました。
>>963 のようなこともあるので、
自分にとっては「触らないもの」という認識ですっきりしたので、
1000も近いことだし、これで終わりにします。
いろいろ教えていただいて、どうもありがとうございました。
reaintCount が0になって破棄しようとしているオブジェクトの retainCountにわざわざ0を代入するようなこともしないだろ。 もうそのオブジェクトにアクセスされることは想定していないのだから。 deallocされたオブジェクトにアクセスしてたまたま何かが返された としても、それはたまたまにすぎない。ゾンビの幻影だよ。
くだらないことを調べているヒマがあるならappleのドキュメントを150万回読んどけ
retain/releaseは、保持する/もういらないをランタイムに伝えるためのモノであって、 それを表現するためにたまたま内部的に参照カウントを使っているだけだべ。
1回5分で読んだとしても、不眠不休で15年近くかかるな。