Objective-C [ObjC part:5];
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/07/22(木) 01:38:19(Wikipedia:http://ja.wikipedia.org/wiki/Objective-C より)
Objective-C [ObjC part:4];
http://pc12.2ch.net/test/read.cgi/tech/1239721860/
Objective-C [ObjC part:3];
ttp://pc12.2ch.net/test/read.cgi/tech/1186543111/
Objective-C
ttp://pc11.2ch.net/test/read.cgi/tech/1106983092/
Objective-C
ttp://pc5.2ch.net/tech/kako/990/990574267.html
0002デフォルトの名無しさん
2010/07/22(木) 01:40:01【マック】Macintoshプログラミング質問箱
ttp://pc11.2ch.net/test/read.cgi/tech/1113058054/
Mac OS Xでの開発環境はどれがイイ?
ttp://pc11.2ch.net/test/read.cgi/tech/1163314891/
*** 新・mac板 ***
Cocoaはさっぱり!!! version.15
http://pc11.2ch.net/test/read.cgi/mac/1277992217/
Macでプログラミング{10}
http://pc11.2ch.net/test/read.cgi/mac/1248682344/
Xcode part8
http://pc11.2ch.net/test/read.cgi/mac/1265669504/
iPod touch/iPhone ネイティブアプリ製作 ver.14
http://pc11.2ch.net/test/read.cgi/mac/1275056337/
0003デフォルトの名無しさん
2010/07/22(木) 01:41:02Objective-C 2.0 プログラミング言語
ttp://developer.apple.com/jp/documentation/Cocoa/Conceptual/ObjectiveC/
Introduction to The Objective-C 2.0 Programming Language
ttp://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html
そのほか英語
ttp://developer.apple.com/documentation/Cocoa/ObjectiveCLanguage-date.html
*** 書籍 ***
荻原本
http://amazon.jp/dp/4797346809
HMDTダイナミック本
http://amazon.jp/dp/4861006414
0004デフォルトの名無しさん
2010/07/22(木) 01:41:46http://journal.mycom.co.jp/column/objc/
Apple のランタイムのソースコード (10.5.6)
http://www.opensource.apple.com/darwinsource/10.5.6/objc4-371.2/
英語のサイト
Objective-C 入門
http://cocoadevcentral.com/d/learn_objectivec/
Objective-C Style 1, 2 (変数名のつけかた等)
http://cocoadevcentral.com/articles/000082.php
http://cocoadevcentral.com/articles/000083.php
Mike Ash さん(Audio Hijack の中の人)のブログ、 Obj-C のランタイムの話が良く出る
http://mikeash.com/?page=pyblog/
C++ と Objective-C の文法の比較
http://ktd.club.fr/programmation/objective-c.php
0005デフォルトの名無しさん
2010/07/22(木) 04:04:24荻原本、BlocksやGCDを追記して改訂版出してくれないかな
0006デフォルトの名無しさん
2010/07/23(金) 01:19:420007デフォルトの名無しさん
2010/07/23(金) 17:06:370008デフォルトの名無しさん
2010/07/24(土) 15:09:570009デフォルトの名無しさん
2010/07/24(土) 15:17:230010デフォルトの名無しさん
2010/07/24(土) 16:19:05GCあるからretain/releaseしなくていいよって聞いたのに、
iOSにはGCないんだってさ。
memory管理めんどくせ
0011デフォルトの名無しさん
2010/07/25(日) 07:10:530012デフォルトの名無しさん
2010/07/25(日) 21:03:48こういうのOKなんですかね。
0013デフォルトの名無しさん
2010/07/25(日) 21:21:52JavaでもOKだね。
0014デフォルトの名無しさん
2010/07/25(日) 21:42:44そうなんですか。
OKでも使わない方がいいような気がするんですが、慣れたら平気なんでしょうね。
0015デフォルトの名無しさん
2010/07/26(月) 19:34:250016デフォルトの名無しさん
2010/07/28(水) 13:02:34----
[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
•文字サイズ変更(大中小くらいで可)
•閉じたページ記憶&そっから再開
•ページ間に画像も入れれる
•タップでページスクロールバーがでる
•右側タップで戻る、左側タップで進む
----
0017デフォルトの名無しさん
2010/08/05(木) 08:30:02オートマ車を認められずに、マニュアル車に固執する臭いオッサンみたいだ
0018デフォルトの名無しさん
2010/08/05(木) 09:08:38明らかな構造的欠陥に目をつぶって売り続けるのは信じられない
0019デフォルトの名無しさん
2010/08/07(土) 03:52:34特定のクラスのinnerHTML等を簡単に抜き出す方法を教えてくれ。
フィードの投稿一つずつをUITableViewのcellに置き換えたいです。
jqueryのようにできませんかね?webkitを少し調べればできるの?
教えてエロイ人!
0020デフォルトの名無しさん
2010/08/07(土) 03:54:32失せろ
0021デフォルトの名無しさん
2010/08/07(土) 03:55:020022デフォルトの名無しさん
2010/08/07(土) 03:57:27間違えたの!
0023デフォルトの名無しさん
2010/08/07(土) 04:00:330024デフォルトの名無しさん
2010/08/07(土) 04:09:09おまえマジでうぜえよ
社会のゴミだな
まったく価値が無い
0025デフォルトの名無しさん
2010/08/07(土) 08:48:34Cocoa Touch Classの欄内に
UIVIEW SUBCLASSが存在しないので作成できません。
なにかインストールし忘れとかでしょうか?
どなたか教えてください。
0026デフォルトの名無しさん
2010/08/07(土) 08:58:150027デフォルトの名無しさん
2010/08/08(日) 18:56:490028デフォルトの名無しさん
2010/08/09(月) 09:06:00どのように作成すればよいのでしょうか?
自分の場合cocoa touch classの欄内が↓のようになっている為
uiview subclassが選択出来ません。
http://www.iphonedevcentral.com/wp-content/uploads/2009/08/tutorial015.jpg
0029デフォルトの名無しさん
2010/08/09(月) 09:18:220030デフォルトの名無しさん
2010/08/09(月) 11:12:440031デフォルトの名無しさん
2010/08/09(月) 13:10:09う〜ん、落ちが分かったような…
MacOSのバージョンとXcodeのバージョンは?
あとCPUの種類も聞いておこうかw
0032デフォルトの名無しさん
2010/09/02(木) 14:13:07NSString 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; のような方法を教えてください。
0033デフォルトの名無しさん
2010/09/02(木) 14:40:49基本的にはできないと思ったほうが幸せかも。
普通はメンバ変数をアンダースコア付きにするとか、仮引数を変更する。
NSString *_filePath;
- (id) initWithFilePath:(NSString *)path;
self->filePath = filePath; とか、self.filePath = filePath; は、できるけど警告出るし。
それよか、NSString に * がない方が気になるのだが…
0034デフォルトの名無しさん
2010/09/02(木) 14:48:59いつか痛い目みるかもしれない
GoogleのObjC規約ではサフィックスにアンダースコア付けることになってる
http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml?showone=Variable_Names#Variable_Names
0035デフォルトの名無しさん
2010/09/02(木) 15:24:03ありがとうございます。
警告が出ると鬱陶しいので、アンダースコアを先頭に付けようと思ったのですが、
>>34さんが書かれているようにAppleが使いますね。
メンバ変数の末尾にアンダースコアを付ける記述を試してみようと思います。
お二人共、ありがとうございました。
(NSString *)になってないのは、単純にミスです。お恥ずかしい…。
0036デフォルトの名無しさん
2010/09/02(木) 15:26:46よく読めば分かると思うけど、インスタンス変数名には適応されてない。
KVC のダイレクトアクセスで "_hoge" が検索対象のトップだしね。
google の規約を持ち出すのはなぜ?
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CodingGuidelines/Articles/NamingIvarsAndTypes.html
0037デフォルトの名無しさん
2010/09/02(木) 15:32:53サフィックスにアンダースコアをつけると、KVC の検索対象に入らないから勧めない。
0038デフォルトの名無しさん
2010/09/02(木) 15:51:19されてる
だいたい実際に使われてるんだから普通に考えれば使いたいと思わない
>KVC のダイレクトアクセスで "_hoge" が検索対象のトップ
それこそまさに
Appleが使っているから→フレームワークのコア部分→すこしでも早くしたい
からであって、一般開発者が立ち入る領域ではない
>google の規約を持ち出すのはなぜ?
単に例として挙げた
他にObjCのまとまった規約の存在を知らないし
>KVC の検索対象に入らない
普通にプロパティ立てればいいだけ
0039デフォルトの名無しさん
2010/09/02(木) 17:57:08> 他にObjCのまとまった規約の存在を知らないし
Cocoa なら、Appleのコーディングガイドラインをきちんと読むべきだ。その上で、
それでもなお、「適応されている」と主張するなら根拠となる記述を挙げて欲しい。
Appleのインスタンス変数命名規約には"_"の禁止なんて、どこにも書いてない。
お宅様の「普通」とやらはしらんけど、さっき貼った正規のガイドラインすら読まずに
適当なこと書くのは、世間一般でいう「普通」ではないようだね。
インスタンス変数はクラス毎の名前空間にあるので、クラス間で被っても問題なく
使えるのが当然。例外は継承元のいずれかに同名のインスタンス変数があった場合だが、
これも理由つきでエラーが出るので安全。KVCも対応。これで禁止する理由は何かある?
メソッド名すら「かぶらないことが確実に確認できるなら」という条件付きで、
"_"プレフィックスが正式に認められているのに?
>少しでも早くしたい
速くするのに KVC なんて、メソッドなんて使わねーす。冗談も大概にしてくだせぇw
0040デフォルトの名無しさん
2010/09/02(木) 18:16:38NSFileHandleとNSDataを使ってあとはゴリゴリやるしか方法は無いのかね?
0041デフォルトの名無しさん
2010/09/02(木) 18:22:110042デフォルトの名無しさん
2010/09/02(木) 18:24:10それこそ正に、NSData からゴリゴリやるの一例だろ。
0043デフォルトの名無しさん
2010/09/02(木) 18:54:17A 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 なんて、メソッドなんて使わねーす
あなたがあなたのコードの中でどうするかなんて問題にしてないです
フレームワークへのアクセスを言ってるんです
なんかドキュメントに書いてることと真反対のこと言い出すとか、触っちゃいけないタイプの人に触っちゃったようだ
みなさんごめんなさい、もう終わりにします
0044デフォルトの名無しさん
2010/09/02(木) 18:56:540045デフォルトの名無しさん
2010/09/02(木) 19:49:36>39の意味が分からないようですね。ガイドラインを、正確に、読みましょうね。
あなたの挙げたものはインスタンス変数の規約ではありません。
インスタンス変数についての規約には、次のように書いてあります。
@public は避けろ。データの格納の仕方より、interface に気を使え。
@private と @protected をうまく使え。
名前は的確に。
アクセスできる変数にはアクセサつけろ。
以上。これらから「インスタンス変数名に"_"を使うな」とは読めませんね。
0046デフォルトの名無しさん
2010/09/03(金) 09:22:55一気に取得する方法があるのかい+?
0047デフォルトの名無しさん
2010/09/03(金) 09:35:480048デフォルトの名無しさん
2010/09/03(金) 10:45:11NSString stringWithContentsOfFile:encoding:error なんつー便利なメソッドがあるじゃないの。
これで取得して改行コードで区切っていけばオッケーって訳だな。
それがもしかしたら、>>47さんのメソッドなのかもしれない。
試してみるよ、ありがとう!
0049デフォルトの名無しさん
2010/09/03(金) 13:41:38自己解決って、、、質問の直後 >>41 で真っ先に回答が出てるじゃないか。
改行コードで区切ったりすんなよ。
0050デフォルトの名無しさん
2010/09/03(金) 13:57:45それこそ正に、NSData からゴリゴリやるの一例だろ。
0051デフォルトの名無しさん
2010/09/03(金) 16:14:150052デフォルトの名無しさん
2010/09/03(金) 20:13:30メモリ中に置かれてるのと同じ処理で良いし、巨大なファイルでも仮想記憶システムが
面倒見てくれるので無駄なコピーも発生しない。
0053デフォルトの名無しさん
2010/09/08(水) 19:11:09ガイドラインには、「インスタンス名の頭に_を使うな」とは書いてないかもしれません。
しかし、スーパークラスとサブクラスで同じ名前のインスタンス変数を宣言することはできません。(コンパイルエラーになります)
そして、Cocoaのクラスのインスタンス変数名は全て_から始まっています。
なので、実質的に「インスタンス変数名の頭に_は使えない」となります。
逆に言うと、インスタンス変数名の頭に_を使わなければ、Appleとの競合を確実に避けられるということです。
0054デフォルトの名無しさん
2010/09/08(水) 20:03:54まだやるんですかぁ・・・書いてないんだから、使ってもいいでしょうに。
>スーパークラスとサブクラスで同じ名前のインスタンス変数を宣(ry
安全にコンパイルエラーになるなら、変数名変えればいいだけ。>39で言及済みです。
>そして、Cocoaのクラスのインスタンス変数名は全て_から始まっています。
誠に残念ですが、isa は "_isa" ではない。よって "_" が無くてもダブる可能性がある。
反論終わり。勝手にガイドラインを拡大して、それを広めないでくださいな。
あなたのスタイルを批判しているのではない。
不正確な情報を、さも正しいかのように言うのを批判しているのみ。
0055デフォルトの名無しさん
2010/09/08(水) 20:18:330056デフォルトの名無しさん
2010/09/08(水) 21:01:18タイポ ○適用 ×適応
メソッド名の "_" は誤解を招いたかもしれませんが、ガイドラインにある "BF_..." の例。
「名前空間」が同じく誤解を招くかもですが、継承を含めた ivar[] のことです。
0057デフォルトの名無しさん
2010/09/08(水) 22:34:40AT車MT車は一般人が使うものだろ。
一般人が使うものなら楽であればあるほどいい。
しかしおまえらはプログラマという専門家だろ?楽に走ってどうすんだ。
楽な言語で楽に書いて細かい原理は知りませ〜ん、じゃあ専門家とは言えんぞ。
0058デフォルトの名無しさん
2010/09/08(水) 23:37:13iPhogeが出て来てここ数年でがらっと風向きが変わった
0059デフォルトの名無しさん
2010/09/09(木) 00:14:15だろ普通は
0060デフォルトの名無しさん
2010/09/09(木) 12:41:330061デフォルトの名無しさん
2010/09/09(木) 13:33:230062デフォルトの名無しさん
2010/09/09(木) 18:38:590063デフォルトの名無しさん
2010/09/11(土) 03:42:44ヘッダで宣言したインスタンス変数に、実装で型を指定せずにallocしようとしたら、その変数は分からないと言われました。
反対に、ヘッダで宣言したNSArray*変数を実装でも型を使用しようとしたら名前ダブってると言われます。
同じように感じるその二つに、二通りの結果があるのは何故でしょう?
0064デフォルトの名無しさん
2010/09/11(土) 09:13:28ガッ!!
0065デフォルトの名無しさん
2010/09/11(土) 09:49:230066デフォルトの名無しさん
2010/09/11(土) 10:30:02ありがとう。今外出しているので晩に書かせていただきます。
0067デフォルトの名無しさん
2010/09/11(土) 11:28:34そういや2008年頃に、SunがiPhone用のJava VMを作成するとかいうのが
ニュースにあったような気がするけど、どうなったのかな?
0068デフォルトの名無しさん
2010/09/11(土) 17:54:12Jobsが禁止した。
0069デフォルトの名無しさん
2010/09/11(土) 18:20:33かな?
0070デフォルトの名無しさん
2010/09/11(土) 18:59:57え、できるようになったのは確定事項? もしそうなら嬉しい
Java VMじゃないけど、SchemeのSECDマシンが動けばいいのにと妄想してた
0071デフォルトの名無しさん
2010/09/11(土) 21:43:51外から見えるVMは改定でもダメ。
0072デフォルトの名無しさん
2010/09/11(土) 22:18:43iPhoneアプリケーションに、Obj-Cで書いたSECDエンジンと
SECDコード(=Schemeソースをコンパイルしたオブジェクト)を内蔵させる、
という考え方なんだけど、それでもダメ?
ユーザからは、普通のiPhoneアプリにしか見えないはずなんだ。
SECDエンジンなら(Java VMよりも)単純だから、
自分で作ってみようかと妄想してたんだけど....
0073デフォルトの名無しさん
2010/09/11(土) 22:51:02Objective-Cになれた開発者にはえらい不評だったそうな。
0074デフォルトの名無しさん
2010/09/11(土) 23:01:44Javaは(少なくとも当時のJavaは)静的な言語だったから、
Objective-Cデベロッパからすれば、
柔軟性の無い堅苦しいものに見えたのだろね
0075デフォルトの名無しさん
2010/09/11(土) 23:04:24自分はまったく触らなかったから、特に思うことはないな。
0076デフォルトの名無しさん
2010/09/12(日) 09:17:580077デフォルトの名無しさん
2010/09/12(日) 10:03:200078デフォルトの名無しさん
2010/09/12(日) 13:07:02コード書くほうに欠陥があるのでは? 裸のCで書いても問題ないわけだし。
0079デフォルトの名無しさん
2010/09/13(月) 00:46:50新しい規約なら問題ない筈。面白そう。
0080デフォルトの名無しさん
2010/09/13(月) 09:12:35どういった部分に欠陥があるのかkwsk
0081デフォルトの名無しさん
2010/09/13(月) 14:58:20stl を併用しなきゃならない辺りがオタ心をくすぐって嬉しいよな。
0082デフォルトの名無しさん
2010/09/23(木) 12:54:25プログラムがあれば教えて頂きたいのですが、
よろしくお願いします。
0083デフォルトの名無しさん
2010/09/23(木) 13:46:260084デフォルトの名無しさん
2010/09/23(木) 14:39:09UITableViewです。
お手数おかけしますがよろしくお願いします。
0085デフォルトの名無しさん
2010/09/23(木) 17:08:38構造体のサイズを計算したいのですが何かよい関数ご存知ありませんか?
NSGetSizeAndAlignment はビットフィールドを処理できないようで、SIGABRT が
でます。ビットフィールド無しだと計算してくれるのですが…
また、10.3.* ~ 10.5.* の gcc_os に objc_sizeof_type() というのを見つけたのですが、
bit field のエンコード形式がどうも実際(10.5SDK)とは違っていました。
これは修正して自分で組むしか無いでしょうか?
0086デフォルトの名無しさん
2010/09/23(木) 18:35:39自分で調べる気、やる気まったく無しw
書いておけば適当に解答返ってくるだろって雰囲気丸出し。
0087デフォルトの名無しさん
2010/09/23(木) 18:38:55なんか難しいことをしようとしてる様に見えるけど、大元の目的が何なのかを書けば
誰か別の方法を教えてくれるかも。
struct st1 {char flag : 1;};
struct st2 {int flag : 1;};
@encodeの文字列は両方b1だけど、sizeofしたら1と4だよね。
だから@encodeの文字列からはできないんじゃ?
0088デフォルトの名無しさん
2010/09/23(木) 19:22:06レスどうもです。具体的には自前のデータ領域付きのArrayを作りたいと思ってまして。
CFArray + 領域、みたいな感じで、構造体に応じてデータ領域を確保できればなーと。
@encode の情報だけで何とかならないかなと思っていたのです。ご指摘の問題を見ると
確かに難しそうですね。やりたかった事は sizeof(type) 渡せば解決するんです。
ですが、NSGetSizeAndAlignment がビットフラグで SIGABRT だすのを知ったので、
じゃあどうやって NSValue なんかは処理しているのかな?と調べていたのです。
で、objc_sizeof_type() にたどり着いた訳ですがどうも違う。
手がかりがなくなったので、ご存知の方がいるかもしれないと書き込んだ次第です。
0089デフォルトの名無しさん
2010/09/23(木) 19:44:22んじゃUITableView Class Reference見て
Table View Programming Guide for iOSよっく読んでから
Related sample codeの中から好みに合うの探してw
0090デフォルトの名無しさん
2010/09/23(木) 20:01:04NSValueにビットフィールドありの構造体を渡したらnullが返らない?
009188
2010/09/23(木) 20:28:59げ!確かに null が返ってきますね。
何でも入るもんだと思い込んでいました、お恥ずかしい。
てことは、やはり@encode情報からはsizeはとれないと思った方が良さそうですね。
いろいろとご指摘、ありがとうございます。
0092デフォルトの名無しさん
2010/09/27(月) 02:54:14ビューを編集する様な処理をして、次の行に進んだところでブレークポイントを入れて見ると、
まだビューがその編集に反映してなくて、そのクラスの処理が終った時点でやっと反映されるのですが、
それを編集直後に反映させるにはどうしたら良いでしょうか。
0093デフォルトの名無しさん
2010/09/27(月) 05:45:270094デフォルトの名無しさん
2010/09/27(月) 09:41:32@protocol protocolA
- (void) setTarget:(id <protocolB>)obj;
@end
@protocol protocolB
- (void) setTarget:(id <protocolA>)obj;
@end
当然ですが、コンパイルが通りません。
classの場合、@class hoge、とか書いておくと双方向での参照を
難なく定義出来ると思いますが、protocolの場合はどうすればよい
でしょう。
0095デフォルトの名無しさん
2010/09/27(月) 09:47:43@protocol protocolA
- (void) setTarget:(id <protocolB>)obj;
@end
@protocol protocolA;
@protocol protocolB
- (void) setTarget:(id <protocolA>)obj;
@end
009694
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
009792
2010/09/28(火) 12:19:46ありがとうございます。
しかし、mainViewControllerにUIViewのインスタンスを合成して、
[self setNeedsDisplay]
を表示させたいタイミングに入れましたが、
そうしていない時と同じように、スレッドが終了するまで描画されません。
何か根本的に勘違いしてますでしょうか私は、、。
0098デフォルトの名無しさん
2010/09/28(火) 12:34:03たぶんスレッドを長い間止めないための最適化だと思うけど
メソッド呼んでもRunLoopに処理を登録するだけで、実際に処理されるのは
イベントループが一回以上回った後なんてのはたくさんある
0099デフォルトの名無しさん
2010/09/28(火) 12:40:34010092
2010/09/28(火) 22:11:13ありがとうございます。
UIViewは基本好きな時に再描画出来ない様ですね。
別スレッドに描画メソッドを入れて、
[self performSelectorOnMainThread:@selector(メインスレッド名) withObject:nil waitUntilDone:TRUE];
でメインループを呼びましたら、描画スレッドはそのままスレッドから抜けてくれて、その際に再描画してくれました。
そのメソッドが何ものかハッキリ分かりませんが、支障が出ない事を祈ります。
010192
2010/09/28(火) 22:13:19■ このスレッドは過去ログ倉庫に格納されています