dupchecked22222../4ta/2chb/517/16/tech141481651721749318149 Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net->画像>4枚 ◎正当な理由による書き込みの削除について:      生島英之とみられる方へ:

Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net->画像>4枚


動画、画像抽出 || この掲示板へ 類似スレ 掲示板一覧 人気スレ 動画人気順

このスレへの固定リンク: http://5chb.net/r/tech/1414816517/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

1 :
デフォルトの名無しさん
2014/11/01(土) 13:35:17.70 ID:12FSUUrY
Objective-C(オブジェクティブ シー)はプログラミング言語の一種。C言語をベースにSmalltalk型のオブジェクト指向機能を持たせた上位互換言語。
 (Wikipedia:http://ja.wikipedia.org/wiki/Objective-C より)

前スレ
Objective-C [ObjC part:8];
http://peace.2ch.net/test/read.cgi/tech/1356341803/

Objective-C [ObjC part:7];
http://toro.2ch.net/test/read.cgi/tech/1330330906/
Objective-C [ObjC part:6];
http://toro.2ch.net/test/read.cgi/tech/1313891268/
Objective-C [ObjC part:5];
http://hibari.2ch.net/test/read.cgi/tech/1279730299/
Objective-C [ObjC part:4];
http://pc12.2ch.net/test/read.cgi/tech/1239721860/
Objective-C [ObjC part:3];
http://pc12.2ch.net/test/read.cgi/tech/1186543111/
Objective-C
http://pc11.2ch.net/test/read.cgi/tech/1106983092/
Objective-C
http://pc5.2ch.net/tech/kako/990/990574267.html
2 :
デフォルトの名無しさん
2014/11/01(土) 13:35:57.63 ID:12FSUUrY
*** プログラム技術板 ***
【マック】Macintoshプログラミング質問箱
http://peace.2ch.net/test/read.cgi/tech/1113058054/

*** プログラマ板 ***
【Cocoa】Macプログラマのスレ【Objective-C】
http://kanae.2ch.net/test/read.cgi/prog/1214208397/

*** 新・mac板 ***
Macでプログラミング{11}
http://anago.2ch.net/test/read.cgi/mac/1414566499/

Xcode part12
http://anago.2ch.net/test/read.cgi/mac/1356341840/

let s: プログラミング言語? = Swift[2]
http://anago.2ch.net/test/read.cgi/mac/1408755325/
3 :
デフォルトの名無しさん
2014/11/01(土) 13:37:58.27 ID:12FSUUrY
4 :
デフォルトの名無しさん
2014/11/01(土) 13:38:53.84 ID:12FSUUrY
5 :
デフォルトの名無しさん
2014/11/01(土) 13:39:59.19 ID:12FSUUrY
Objective-C Literals ― Clang 3.6 documentation
http://clang.llvm.org/docs/ObjectiveCLiterals.html

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

ダイナミック Objective-C サイト
http://journal.mycom.co.jp/column/objc/

英語のサイト
Objective-C 入門
http://cocoadevcentral.com/d/learn_objectivec/

Objective-C Style 1, 2 (変数名のつけかた等)
http://cocoadevcentral.com/articles/000082.php
http://cocoadevcentral.com/articles/000083.php

Mike Ash さん(Audio Hijack の中の人)のブログ、 Obj-C のランタイムの話が良く出る
http://mikeash.com/?page=pyblog/

C++ と Objective-C の文法の比較
http://ktd.club.fr/programmation/objective-c.php
6 :
デフォルトの名無しさん
2014/11/01(土) 13:42:24.66 ID:12FSUUrY
7 :
デフォルトの名無しさん
2014/11/01(土) 14:10:57.49 ID:woVuP3aC
>>1
スレ立ておつおつ
8 :
デフォルトの名無しさん
2014/11/01(土) 14:18:06.53 ID:c9/p9yfG
1乙
9 :
デフォルトの名無しさん
2014/11/02(日) 12:42:31.92 ID:CjBmvnJw
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::
10 :
デフォルトの名無しさん
2014/11/03(月) 00:34:00.72 ID:goVpsTzK
保守
11 :
デフォルトの名無しさん
2014/11/03(月) 11:15:08.31 ID:aNJ5eidf
Cと完全上位互換性をもつオブジェクト指向プログラミング言語はObjective-Cだけです
12 :
デフォルトの名無しさん
2014/11/03(月) 11:21:29.32 ID:Avy9gAi6
ほう
13 :
デフォルトの名無しさん
2014/11/03(月) 14:56:05.14 ID:bxypX2So
C++でのCとの違いを説明できたら褒めてやるが、無理だろうな
14 :
デフォルトの名無しさん
2014/11/03(月) 15:13:30.86 ID:aNJ5eidf
>>13
なんでほめられるために説明せないかんの?w
端的に言えば.cのコードをそのまま.mのコード内にコピペして動くかどうか
15 :
デフォルトの名無しさん
2014/11/03(月) 15:28:27.78 ID:bxypX2So
よくわかって言っているならだったが、やっぱりなっていう
バカがそういうこと言うとObjective-Cを貶めるだけなのでとても迷惑
16 :
デフォルトの名無しさん
2014/11/03(月) 15:31:13.39 ID:aNJ5eidf
>>15
じゃあ、名誉挽回しておくれ
17 :
デフォルトの名無しさん
2014/11/03(月) 15:34:54.55 ID:bxypX2So
馬鹿の尻拭いをなんでせなあかんねん
てか>>11って言っておいた自らそいうのか。恥もなにもないって馬鹿すぎるw
18 :
デフォルトの名無しさん
2014/11/03(月) 15:36:33.91 ID:bxypX2So
(お前の馬鹿加減のを示すのが名誉挽回なんだがな)
19 :
デフォルトの名無しさん
2014/11/03(月) 15:37:34.92 ID:goVpsTzK
発狂した ID:bxypX2So がスレを埋めてくれるようだ
20 :
デフォルトの名無しさん
2014/11/03(月) 15:39:32.87 ID:bxypX2So
すぐに発狂って。アホらしいのにもほどがある...どこまで底抜けの馬鹿やねん
21 :
デフォルトの名無しさん
2014/11/03(月) 15:43:55.19 ID:aNJ5eidf
>>17
このスレが寂しい感じだったので、>>11を書いてみた
なので内容はともあれスレが若干の盛り上がりを見せている点は感謝します

ところで、勝手に決めつけて馬鹿よばわりするからには、
>>13みたいな含みのある書き込みはやめて、ちゃんと説明してほしいな
22 :
デフォルトの名無しさん
2014/11/03(月) 15:52:30.90 ID:bxypX2So
>>21
完全上位互換性ってなんやねんっってことで含みがある書き方しかできんな。で、>>14だとC++でのCだってだぞ?「Objective-Cだけです」じゃないのは明らかでやっぱりなな結果で含みある書き方でよかったなと
C++でのクラス関数じゃない純粋関数だって、Cから呼べるし>>11のような書き込みこそ止めてほしい
23 :
デフォルトの名無しさん
2014/11/03(月) 15:58:51.27 ID:aNJ5eidf
>>22
完全上位互換性wたしかにアホな造語だな
ちょっと話盛っちゃったテヘッ

言いたかったのは、
C++はCの言語仕様を変えて(拡張)してOOP要素を追加
(つまり同じコードでもC言語とC++で意味が異なるところがある)
Objective-CはC+OOPで両者が内部的に独立だと言いたかった
24 :
デフォルトの名無しさん
2014/11/03(月) 16:00:54.01 ID:eMtWYvPU
オブジェクトに対してメッセージセレクタからperformできるのってC++じゃ無理じゃないの?
Objective-Cにはsmalltalk由来のメソッド呼び出し機構があるけどC++でソレを実現するシステムって供給されてたっけ?
25 :
デフォルトの名無しさん
2014/11/03(月) 16:03:27.39 ID:bxypX2So
>>23
うん、くだらないぞ。C++の拡張であって純粋にCそのままでも使えるのになにを言っているのか

Objective-Cがとっても好きなのかもしれないが、おなじくObjective-Cが好きなのがお前と同じと見られる迷惑を考えてほしいw
26 :
デフォルトの名無しさん
2014/11/03(月) 16:04:53.72 ID:bxypX2So
>>24
それと今の話題は全然違うよ
もちろんObjective-CでもCの呼び出しはセレクタじゃないのは理解しているよね?

てか、呼び出し方ならC++の方がCっぽいだろうしw
27 :
デフォルトの名無しさん
2014/11/03(月) 16:07:34.94 ID:aNJ5eidf
>>25
C++のクラスの中にCの関数って定義できたっけ?
28 :
デフォルトの名無しさん
2014/11/03(月) 16:07:49.16 ID:bxypX2So
(なんかとてもマジでアホらしくなったんですけどw)
29 :
デフォルトの名無しさん
2014/11/03(月) 16:08:49.67 ID:aNJ5eidf
>>25
あなたもObjective-C好きなのか、それはすまなかった…。
30 :
デフォルトの名無しさん
2014/11/03(月) 16:10:09.87 ID:aNJ5eidf
>>28
そんなこと言わずに頼むよw
31 :
デフォルトの名無しさん
2014/11/03(月) 16:10:46.79 ID:bxypX2So
>>27
クラスの中になんで定義せなあかんねん
@implementation
の中に書けるから?クラスの中にあると思ってるの?
Objevtive-Cが好きならもっとObjevtive-Cの勉強をしなさいな
32 :
デフォルトの名無しさん
2014/11/03(月) 16:12:10.63 ID:bxypX2So
>>30
いや、いいかげんもういいやw発狂しそうだからww
33 :
デフォルトの名無しさん
2014/11/03(月) 16:13:20.15 ID:aNJ5eidf
>>31
言いたいことはまさにそこだったw
要は、Objective-CはOOP部分を「コンパイル」してない
34 :
デフォルトの名無しさん
2014/11/03(月) 16:15:28.17 ID:bxypX2So
(マジで言っているの?... もういいや)
35 :
デフォルトの名無しさん
2014/11/03(月) 16:27:58.86 ID:goVpsTzK
予想通り発狂した ID:bxypX2So がスレ埋めてて笑ったw
最初の数レスだけからして基地外臭が漂ってたからな。
36 :
デフォルトの名無しさん
2014/11/03(月) 16:29:25.64 ID:eMtWYvPU
>>26
>もちろんObjective-CでもCの呼び出しはセレクタじゃないのは理解しているよね?
そりゃ当たり前じゃなかろうか?
37 :
デフォルトの名無しさん
2014/11/03(月) 16:36:01.84 ID:bxypX2So
>>35
すぐに発狂とかww冗談の通じないヤツ?

>>36
いや、なんでいきなり>>24と言い出すのかと。当たり前でわかっているならいいよ

なんなんだこのスレは
発狂して消えようw
38 :
デフォルトの名無しさん
2014/11/03(月) 16:40:51.63 ID:aNJ5eidf
>>37
ちなみに、
> @implementation
> の中に書けるから?クラスの中にあると思ってるの?
は違うの??
恥ずかしながら、てっきりそうだと思ってたけど…
39 :
デフォルトの名無しさん
2014/11/03(月) 18:55:13.00 ID:rWxTBzmZ
@Implementationの中に書くと前方宣言いらんのやで。豆。
40 :
デフォルトの名無しさん
2014/11/05(水) 19:33:36.62 ID:WwM6K55L
>>39
どゆこと??
41 :
デフォルトの名無しさん
2014/11/05(水) 20:19:08.13 ID:12YCeqJI
関数プロトタイプをずらずら書かなくていいという事。
42 :
デフォルトの名無しさん
2014/11/05(水) 21:38:12.10 ID:WwM6K55L
>>41
なるほど
プロトタイプ宣言が要らないということはわかりました
でも、それってつまりどういうことを意味してるの?
>>31とも関連あったりする??
43 :
デフォルトの名無しさん
2014/11/06(木) 04:04:34.15 ID:iVGs5M/e
@implementation~@end内は、なんかしらんが順番を気にしなくて良くなったから便利って話、
>>31とは関連は無い。
それと関数はクラスメンバじゃないよ。
44 :
デフォルトの名無しさん
2014/11/06(木) 21:11:41.06 ID:4Om1v5TR
>>43
ただの関数なのでクラスメンバにはなり得ないのはわかる
Objective-Cの場合は、こういう風に普通にCの関数をクラスないに
何も考えずに書いちゃっても、しっかりクラスメンバとしてのメソッドと関数を
綺麗に分離できる文法体系になってるのが素晴らしいと思うんだけど
Objective-Cだけの話じゃないのかな
45 :
デフォルトの名無しさん
2014/11/07(金) 05:47:11.47 ID:xhNEAT8L
void ClassA::FuncA( void ){
….
}

void FuncC( void ){
}

void ClassA::FuncB( void ){
}
46 :
デフォルトの名無しさん
2014/11/07(金) 07:50:28.25 ID:NRYdimHv
うむ
47 :
デフォルトの名無しさん
2014/11/08(土) 07:39:56.00 ID:p1cfQewS
>>45
でも呼び出しのときは、Objective-Cなら、メッセージ式と普通の関数呼び出しで
全く違うけど、C++だと、クラス内からだと区別つかなくね?
thisポインタ使わないこと多いし
48 :
デフォルトの名無しさん
2014/11/08(土) 08:17:04.46 ID:FLsnICPe
でもでもうるせーやつ。未熟極まりないのに自覚がないのは恥ずかしくないのか
2chで匿名だからか
49 :
デフォルトの名無しさん
2014/11/08(土) 08:30:45.39 ID:p1cfQewS
>>48
…。
50 :
デフォルトの名無しさん
2014/11/08(土) 11:45:42.73 ID:p1cfQewS
しかしなんでこの言われようなんだろう
でもでもって、初レスだけど何か勘違いしてんのかな
結構、プログラミングスキル以前に人間性に難ありな人が多いのかねプログラマって
51 :
デフォルトの名無しさん
2014/11/08(土) 11:50:13.50 ID:imGXi3N2
プログラマーとか関係ない
ここが2chだからでしょ
52 :
デフォルトの名無しさん
2014/11/08(土) 12:01:11.42 ID:FLsnICPe
>>50
初レスって。うそくせーなあーw 本当に別人ならすまんかったな

だが、本当に上にいる「全く同じようなヤツ」と別人なら、このスレはお先真っ暗だなw
(別人でなんで「でも」から始まるのか??ああ、同じ思考・し好だからか…んなアホなっと思いたいw)
53 :
デフォルトの名無しさん
2014/11/08(土) 13:28:07.51 ID:p1cfQewS
いやもういいっす
別に大した内容じゃないですし
54 :
デフォルトの名無しさん
2014/11/13(木) 08:03:27.53 ID:TEV0paWH
セレクタと関数ポインタの違いがよくわからないのですが、
どなたかおわかりになりますでしょうか?
55 :
デフォルトの名無しさん
2014/11/13(木) 08:06:46.99 ID:1iY71Yqc
selfの有無じゃね
56 :
デフォルトの名無しさん
2014/11/13(木) 08:16:17.56 ID:lmsym3p3
SEL はメソッドの名前でしょう。
メソッドは、クラスとセレクタとクラスorインスタンスのどちらであるかによって得られる。
Method class_getInstanceMethod(Class cls, SEL name)
Method class_getClassMethod(Class cls, SEL name)

そしてメソッドは実装である関数ポインタ、IMPを持っている。
57 :
デフォルトの名無しさん
2014/11/13(木) 12:31:08.08 ID:Jx3Jj8A2
セレクタ: レシーバが、実行する関数実装の特定に用いる識別子
関数ポインタ: ある「ただひとつの」関数実装へのポインタ
セレクタは複数の関数実装に結びつきうる(ポリモーフィズム)が、関数ポインタはそうでない
セレクタに対応する関数実装のうち、ただひとつを特定したものがIMP。これがCの関数ポインタそのもの。
58 :
デフォルトの名無しさん
2014/11/13(木) 12:47:07.08 ID:bBKFMYMs
メソッド呼び出しの仕組みが解れば違いも解るだろう。
59 :
デフォルトの名無しさん
2014/11/13(木) 12:48:05.58 ID:dS9drdDA
message送っても別スレッドになる訳じゃない
60 :
デフォルトの名無しさん
2014/11/13(木) 22:15:25.29 ID:TEV0paWH
みなさま、早速のレスをいただきありがとうございます。
メソッドには、セレクタという名前がついていて、IMPという関数ポインタも
同時に持っているということですね
>>57さんのレスで、セレクタはポリモーフィズムを持つとのことですが、
この意味は、例えば引数の型違いで定義されたオーバーロードされた
メソッドのセレクタは同じになるが、オーバーロードされているそれぞれの
メソッドのIMPはそれぞれ異なるアドレス値(関数ポインタ)を持つという
理解でよろしいでしょうか?
61 :
デフォルトの名無しさん
2014/11/13(木) 23:46:43.15 ID:P2x2UIfS
>>60
オーバーライドとオーバーロード(多重定義)をごっちゃにしてるよ
というか、そもそも Objective-C にオーバーロード(多重定義)は無い
62 :
デフォルトの名無しさん
2014/11/14(金) 06:16:40.90 ID:kMYuuo8x
>>60
あれこれ考えるより、まずここ読んだ方が早いだろう。
http://news.mynavi.jp/column/objc/018/

あとは自分でいろいろやってみりゃわかる。
63 :
デフォルトの名無しさん
2014/11/14(金) 08:01:02.15 ID:DLTXyjTW
>>60
例えば、継承関係のないクラスAとB(どっちもNSObjectの直接のサブクラスとか)があって、どっちもdoSomethingメソッドを持ってるとする。
IMPはメソッドの実体を指してるから、AのdoSomethingとBのdoSomethingではIMPは異なるし、AのインスタンスをBのIMPに喰わせると誤動作する。
セレクタは"doSomething"というメソッド名そのものなので、同じセレクタを使ってAにメッセージを送ればAのメソッドが、Bに送ればBのメソッドが実行される。
64 :
デフォルトの名無しさん
2014/11/15(土) 07:45:53.26 ID:Cmo7am1O
皆さん、ありがとうございます
レスおそくなりました

>>61
Objective-Cにはオーバーロードはないのですね
Javaは勉強していたので、オーバーライドとオーバーロードの違いは
理解していましたが、Objective-Cではないとは思いませんでした…
メソッドの引数の型は、書き方からすると、もしかしてキャストなんでしょうか。。

>>62
ありがとうございます
そのページを読んで勉強してみます

>>63
なるほど、非常によくわかりました
どうもありがとうございます
65 :
デフォルトの名無しさん
2014/11/15(土) 12:19:59.41 ID:atvcQtVA
>>61>>60がオーバーロードとオーバーライドをごっちゃにしていると言っているけど、ごっちゃにはなってないと思う
で、オーバーロードが無いということだけど、例えばC++やJavaみたいに、
同じsomethingというメソッドで、引数がstd::stringか、intかで、
void something(std::string str);
void something(int num);
という風に同じ名前のメソッドを同じクラスで定義して、引数の型によって切り替えることはできないよ、ということ。
引数によって処理を変えたい場合は、With~とかUsing~とかつけて、セレクタを変えるのが、Objective-Cの作法。
- (void)somethingWithString:(NSString *)str;
- (void)somethingWithInteger:(NSInteger)num;
66 :
デフォルトの名無しさん
2014/11/15(土) 12:23:50.50 ID:lOoQn8Qz
>>64
>Objective-Cにはオーバーロードはないのですね
>Javaは勉強していたので、オーバーライドとオーバーロードの違いは
>理解していましたが、Objective-Cではないとは思いませんでした…
で終わっていることじゃ?何を改めてなのかイミフ
67 :
デフォルトの名無しさん
2014/11/15(土) 12:26:57.21 ID:lOoQn8Qz
>>64
>メソッドの引数の型は、書き方からすると、もしかしてキャストなんでしょうか。。
キャストではないよ型だよ。Cと同じだよ。単なる値渡し
暗黙的型変換があるけど、キャストとは呼ばないだろう
68 :
デフォルトの名無しさん
2014/11/15(土) 12:29:54.67 ID:atvcQtVA
>>66
悪い悪い、ようするに後半の引数の型によって処理をわけたいならObjective-Cではセレクタを変えろということを言いたかったんだけど
前振りでオーバーロードの説明を挟んだせいでくどくなっちゃった
そんなに怒るなよ
69 :
デフォルトの名無しさん
2014/11/15(土) 12:33:58.59 ID:lOoQn8Qz
なんで怒ることあるねん
読んでもなんで書いているのか意味分からないから意味分からないってだけだよ。怒られるような書いたの?w
オーバーロードが無いんだからそらそうだよな、ふーんってくらいだよ
70 :
デフォルトの名無しさん
2014/11/15(土) 13:43:28.84 ID:Cmo7am1O
ありがとうございます
なんだか、私の書き方が悪く、いろいろとすみません

>>65
そうですね
私がなじみがあるのはそのように引数の型や数が違うオーバーロードですが、
Objective-Cでは同一セレクタでのオーバーロードは不可なのですね
確かにLCCでつないで~With~のようなメソッド名はCocoaではいろいろ見かけます

>>67
やはり型なのですか
もしかして、キャストだから実行時に解決されてオーバーロードという仕組みが
なかったりするのかなと思いましたが、キャストではないのですね
>>62さんのリンク読んでみると、(char *)型のmethod_typesというものも
あるようなので、それをみればオーバーロードの実装も出来るのではと
思いましたが、Objective-Cのポリシーなんでしょうかね…
71 :
デフォルトの名無しさん
2014/11/15(土) 13:51:55.93 ID:lOoQn8Qz
無くたって別にどうということは無いと思うんだけど、なぜ拘る?w
72 :
デフォルトの名無しさん
2014/11/15(土) 13:59:38.62 ID:Cmo7am1O
>>71
あっ、いや、特にこだわっているというわけではないのですけど、
Java, C++, C#などではいわゆるオーバーロードが出来たので、
ちょっとビックリしました…
汎用的なライブラリを作る時は、同一メソッド名の型違いでオーバーロード
しておいた方がいろいろと使い勝手のよいものになるので、結構重宝してた
のですが、Objective-C使いさんは、型違いは全て>>65さんのように
セレクタを変えて使っているんですね
よくよく考えると、引数の数違いの場合は、必然的に:が追加されてセレクタが
変わるので、そもそもオーバーロードという概念ははじめから考えてなかった
のかもしれませんが…
73 :
デフォルトの名無しさん
2014/11/15(土) 14:06:01.65 ID:lOoQn8Qz
>>72
使い勝手いい?よくわかんないなあ。単に関数名/メソッド名考えるのめんどくせーってのが緩和されるぐらいのような

メソッド呼び出しから始まったようだけど、Message Forwardingをちょっと勉強したらおもろいよ。なんでメッセージなのかもわかるかと(ここらがオーバーロードに関連しているような関連していないような)
74 :
デフォルトの名無しさん
2014/11/15(土) 14:15:15.80 ID:Cmo7am1O
>>73
使う側からしても、型が違ってもメソッド名が同じな方が使いやすいかなと
思ったりしますが、確かになくてもよいといえばよいですね
使う側も渡す引数の型を意識してコーディングするので、むしろ
よいかもしれませんね

Message Forwardingですか。この辺りを読み込んでみます
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding.html

ありがとうございます
75 :
デフォルトの名無しさん
2014/11/15(土) 14:35:07.73 ID:O7G7JpVO
メソッドの解決を名前だけでなく型でもやろうとすると何気に大変
仮にあるクラスAに
-(void)foo:(NSObject*)x;
-(void)foo:(NSNumber*)x;
-(void)foo:(NSString*)x;
という3つのメソッドがあったとして
[a foo:x];
のように呼んだとき、どのメソッドを呼べばいいかはxの型だけでなく継承関係も調べないといけない
例えばxがNSMutableStringだったらNSStringのやつを呼んでほしいだろう
NSMutableStringはNSObjectでもあるわけだがNSStringの方がより特殊なので優先度が高い
そうなるとメソッドを優先度で並べて型が該当するか上から順に調べねばなるまい
実行時のコストとして許容できるかどうか
76 :
デフォルトの名無しさん
2014/11/15(土) 15:19:15.90 ID:RzrSosLr
藻舞は何をオーバーロードで、クダ巻いとるんじゃ。
普段からそんなに高品質な言語ばっかり、使っているからじゃ

JavaScriptなんか、引数の型を一々、
プログラマーがプログラミングして確かめるんだぞw
そうでないと、まともに動かんわいw

グダグダ言う前に、これくらい自分でプログラミングせえ!
77 :
デフォルトの名無しさん
2014/11/16(日) 19:14:57.26 ID:PTffpO77
基本的にObjective-Cは
クラスはロボットで「これやれ」って命令すれば勝手にやってくれる
もしわかんないことがあったら「なにができるんだ?」って聞けば
「これができますギチギチ」って答えてくれる
そういう風じゃないと命令者に複雑さが伝播してオブジェクト単位で弄れないだろ?
っていうオブジェクト指向の思想理念に忠実だからな…
78 :
デフォルトの名無しさん
2014/11/16(日) 19:35:21.60 ID:4B0DOTZq
Objective-C、やはり素晴らしいじゃないか
79 :
デフォルトの名無しさん
2014/11/16(日) 20:32:06.09 ID:y1asw4VY
Objective-CやSmalltalk、Rubyの失敗によって、
そういうアラン・ケイのメッセージ送信パラダイムが間違っていたということが証明されたから
C++やJava風の静的束縛パラダイムに移行しようということでできたのがSwiftなんだけどな
80 :
デフォルトの名無しさん
2014/11/16(日) 21:25:59.70 ID:jkITM5Sp
>>79
> Objective-CやSmalltalk、Rubyの失敗によって、

失敗したのはストラウストラップ流オブジェクト指向の C++
MS はコンポーネントの動的結合を実現するために COM を開発したが、
結局は対応しきれずに C# へ移行せざるをえなかった
この移行に伴う混乱が Vista 以降の度重なる開発遅延をまねいた


> C++やJava風の静的束縛パラダイムに移行しようということでできたのがSwiftなんだけどな

いや、Swift は(Objective-C と同じく)動的束縛と静的束縛のハイブリッドだよ
コンポーネント間の結合はこれまで通り(メッセージ送信パラダイムによる)動的束縛が利用される
コンポーネント内部の実装に静的束縛を用いるのもこれまでと同じだけど、違うのは
メモリ保護の無い C を捨てて安全なプログラミングを可能にした点


MS は MFC(C++) を捨てて .Net(C#) へ移行せざるを得なかった
Apple は言語を Objective-C から Swift へと移行しようとしているけど、
実行環境は Cocoa を継続して利用できている
結果を見れば、失敗したのは ストラウストラップ流オブジェクト指向の C++ なんだよ
81 :
デフォルトの名無しさん
2014/11/16(日) 21:35:15.07 ID:cjwSUl7C
>Objective-CやSmalltalk、Rubyの失敗によって、
…どれも失敗してないように見えるが…
というか、これから歴史が判断するとは思うが
C++みたいな密なコーディングを必要とするのに規約ゆるゆるの
言語で起きた混乱のせいで、規約カッチリすればイインダヨ!な
関数型が注目されてるけれど、結局密なプログラミングは
後で他人がソースを弄りにくいという根本的な問題をほっかむりしてる
っつーよりそもそも"そういうもの"として問題にもしてないようにも見えるので
遠からずまた一過性の時代の徒花として忘れられて
swiftに取り入れられてるみたいに「そういう書き方できたら便利だね」的な
過去に提唱された便利概念に落ち着いてゆくと思う。
82 :
デフォルトの名無しさん
2014/11/17(月) 00:12:14.50 ID:ZeG9cYbU
 blocksやgcの件からわかるようにObjective-Cが古臭く拡張しづらくなったのと、
静的言語の方がリファクタリングツール等のIDE連携ツールを作りやすいから移行し
ただけだと思う。
83 :
デフォルトの名無しさん
2014/11/17(月) 02:45:35.45 ID:cESIq0Cd
> というか、これから歴史が判断するとは思うがC++みたいな密なコーディングを必要とするのに規約ゆるゆるの言語で起きた混乱のせいで、規約カッチリ
> すればイインダヨ!な関数型が注目されてるけれど、結局密なプログラミングは後で他人がソースを弄りにくいという根本的な問題をほっかむりしてるっ
> つーよりそもそも"そういうもの"として問題にもしてないようにも見えるので遠からずまた一過性の時代の徒花として忘れられてswiftに取り入れられてる
> みたいに「そういう書き方できたら便利だね」的な過去に提唱された便利概念に落ち着いてゆくと思う。

これで一文
84 :
デフォルトの名無しさん
2014/11/17(月) 04:06:46.80 ID:mzmuQz/D
パラダイムと規約に関係があるとは知らなかったよ
85 :
デフォルトの名無しさん
2014/11/17(月) 08:16:03.02 ID:zHATB9tj
>>82
GCは よりな ARC が現れたから単に消えただけだじゃね
System Preferences PaneがGC必須だったようにARC出るまではGC推すつもりあったかと
BlocksだっていろいろBlocksバージョンのメソッド付け加えているように、また、新しいメソッドはBlocksのみだったりでBlocksは推してはいるだろ

拡張しづらくなったのではなく、ちゃんぽん/カオス度がだろう
86 :
デフォルトの名無しさん
2014/11/17(月) 16:59:55.46 ID:oWS5dSpx
うわぁ、頭悪そうな文章。

>>85
言葉が足りないとか、馬鹿とか言われたりしない?w
87 :
デフォルトの名無しさん
2014/11/17(月) 17:27:43.93 ID:3Q29PYZj
「あまり強い言葉を遣うなよ、弱く見えるぞ。」
88 :
デフォルトの名無しさん
2014/11/17(月) 17:35:24.26 ID:zHATB9tj
>>86
お前の程度に合わせて書いてあげることもできるが、お前の程度がわからないのでなあ。すまんな
89 :
デフォルトの名無しさん
2014/11/17(月) 17:37:36.18 ID:YUWmI/Qt
エンジニアになりたいと言う人(若い女の子)が面接に来ていたので話を立ち聞きした
どんな分野やりたいのか聴かれてweb系のエンジニアと言ってたが
どんな勉強してきたのかという問いにはC/C++をやりましたと
なぜC/C++なの?と聞かれて
色んな言語の基礎になる言語だからだと教えてもらったので・・・
と答えていた
面接してる会社はデザイン会社だった
90 :
デフォルトの名無しさん
2014/11/17(月) 19:21:26.75 ID:JwoO3TSc
ID が Qt
91 :
デフォルトの名無しさん
2014/11/17(月) 19:37:02.05 ID:kiWqo9or
QtはライセンスがGPLだから駄目
92 :
デフォルトの名無しさん
2014/11/18(火) 08:24:29.44 ID:kE9ttoYj
>>87
これ
「弱いやつほどよく吠える」
93 :
デフォルトの名無しさん
2014/11/18(火) 09:48:40.84 ID:vZbeIuzJ
>>92
頭が―か?
94 :
デフォルトの名無しさん
2014/11/19(水) 00:25:30.52 ID:Uu5NHBSW
医療プログラマーが超高難易度の免許制に / フリーソフトやオープンソースの無作為配布も全面禁止
http://fox.2ch.net/test/read.cgi/poverty/1416286592/
95 :
デフォルトの名無しさん
2014/11/19(水) 12:35:17.12 ID:JZ2oYyd9
>>89
gccですか?VCですかそれともObjective-Cですか?と聞かなかった会社が糞
96 :
デフォルトの名無しさん
2014/12/01(月) 22:56:51.54 ID:m0wFwcIO
Objective-CをCocoa以外で活用してるケースってあるのかね
97 :
デフォルトの名無しさん
2014/12/06(土) 17:27:29.67 ID:0UG7+0Oi
Effective Objective-C 2.0
98 :
デフォルトの名無しさん
2014/12/06(土) 17:27:59.31 ID:0UG7+0Oi
とかいつの間にか出てたみたいだが、内容はどうなのかね
99 :
デフォルトの名無しさん
2014/12/21(日) 03:29:15.03 ID:B0izS0B+
H
100 :
デフォルトの名無しさん
2014/12/24(水) 22:47:32.30 ID:CYbjoPN5
>>11-38
お前らどこ逃げてんだよ?
さっさとID真っ赤にしてスレ埋めろや基地外どもめ。
101 :
デフォルトの名無しさん
2014/12/24(水) 22:49:51.21 ID:CYbjoPN5
何このスレ、ほかのやつも馬鹿ばっかじゃん。
Objective-Cはもうオシマイだな。
102 :
デフォルトの名無しさん
2014/12/24(水) 23:22:36.71 ID:w/c96Wtd
>>100
どうした急に…。
103 :
デフォルトの名無しさん
2014/12/24(水) 23:37:50.82 ID:EVdPtiwJ
マジキチには触れない
104 :
デフォルトの名無しさん
2014/12/27(土) 00:50:33.94 ID:ju+a0CQP
はじめて書き込みします。
自学の一貫としてpaizaのラーニング「数の並び替え」に挑戦しています。

「改行区切りで正の整数nがi個入力されるので小さい順に改行区切りで出力してください。」という問題です。しかし解けません。
数値を取得→配列に入れる→ソートする→同じ数値があれば削除→表示
という流れですすもうとしていましたが、うまくいきません。
できたこと
→入力値をNSNumberに変換してNSMutableArrayに入れ込む。
→昇順ソート(ソートのメソッドを使用)
できないこと
→改行入力を判定し、for文から抜けること(配列の要素数取得)
→隣り合った要素を比較し、イコールだった場合は表示しないこと

見本になるような答えがあればと思うのですが、プログラマーの皆さんはどのようにコーディングされるのでしょうか?
教えていただけたら嬉しいです。
105 :
104
2014/12/27(土) 00:53:20.66 ID:ju+a0CQP
ちなみに、現在はこんなかんじで書いています。
(for文のところの回数は適当な数です)

#import <Foundation/Foundation.h>
int main(void){
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
NSMutableArray *array = [NSMutableArray array];
//getData
for(int i=0;i<7;i++){
int n;
scanf("%d",&n);
NSNumber *num = [NSNumber numberWithInt:n];
[array addObject:num];
}
//sort
array = [array sortedArrayUsingSelector:@selector(compare:)];
for(int p=1 ; p<7 ;p++){
NSNumber *arraynum1 = [array objectAtIndex:p-1];
NSNumber *arraynum2 = [array objectAtIndex:p];
if([arraynum1 intValue] == [arraynum2 intValue]){
printf("test====%d",[arraynum1 intValue]);
}}
for(int i=0; i<6;i++){
NSNumber *resultNum = [array objectAtIndex:i];
NSString *s = [NSString stringWithFormat:@"%d\n",[resultNum intValue]];
[[NSFileHandle fileHandleWithStandardOutput] writeData: [s dataUsingEncoding: NSUTF8StringEncoding]];}
[pool release];
return 0;
}
106 :
デフォルトの名無しさん
2014/12/27(土) 01:41:52.96 ID:kBwj7yl6
107 :
デフォルトの名無しさん
2014/12/27(土) 01:46:46.53 ID:kBwj7yl6
reverseObjectEnumeratorいらなかった
というか降順と昇順を逆に覚えていた
108 :
デフォルトの名無しさん
2014/12/27(土) 02:34:15.99 ID:pJ1SHZUQ
二分探索は速いだけじゃなく、外れの場合はインサートポイントが得られるという、かなりお手軽で二倍お得。自分で二分探索を書いても

for(int i=0;i<7;i++){
int n;
scanf("%d",&n);

const NSInteger count = array.count;
NSNumber *newNumber = @(n);
NSUInteger index = [array indexOfObject:newNumber inSortedRange:NSMakeRange(0, count) options:(NSBinarySearchingInsertionIndex) usingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 compare:obj2];
}];
if(index < count && ((NSNumber *)array[index]).intValue == n)
;
else
[array insertObject:newNumber atIndex:index];
}
109 :
デフォルトの名無しさん
2014/12/28(日) 01:32:41.16 ID:t3FnsveB
そんなのNSなんたらやってないでc++で書きゃいいじゃん
110 :
デフォルトの名無しさん
2014/12/28(日) 02:21:54.56 ID:9eiZ+Gka
ここになんだから Objective-C でやる/の勉強でということだろ
頓珍漢なことを言い出さんな
111 :
デフォルトの名無しさん
2014/12/29(月) 08:59:18.53 ID:Z4v1tAUQ
素朴な疑問だけど、「言い出さんな」って何の書き間違い?
それともそんな言い回しがあるの? それならどんな意味?
112 :
デフォルトの名無しさん
2014/12/29(月) 10:01:01.25 ID:0b80RVUG
言いなさんな
だろ
113 :
デフォルトの名無しさん
2014/12/29(月) 10:02:24.88 ID:UGzXTa7o
言いなさんな
あるいは
言い出しなさんな
だと思う
114 :
デフォルトの名無しさん
2014/12/29(月) 11:16:33.80 ID:/fu+2Q3X
2ちゃんの住民ってアスペが多いのか
ときどき日本語の文章の意味を取り違って
真逆のレス返すひととかいるよね
115 :
デフォルトの名無しさん
2014/12/29(月) 17:32:40.50 ID:0o73V2FG
よく見るが自分がそうでないとも言い切れないのであまりつっこまないようにしている
116 :
デフォルトの名無しさん
2015/01/03(土) 22:27:31.84 ID:/eH07gY4
あけおめ?
117 :
デフォルトの名無しさん
2015/02/03(火) 10:52:02.28 ID:rDBGcWBx
Object-Cってカプセル化できないのか、しても意味ないようなことが書いてあったけど
http://news.mynavi.jp/column/objc/031/

・どんなクラスでも性質を変えられる。
・どんなフィールド名も追ってけばクラス名から参照できちゃう。

なら、暗証番号とか保持してるクラスを見つけてprivate/protectをpublicに変えちゃえば中見えるんじゃね?

秘匿したいプロパティを隠す方法を教えてください。
118 :
デフォルトの名無しさん
2015/02/03(火) 11:07:05.38 ID:tOi9MMpi
関数内にstaticで定義すればivarListにも出ないかな。
119 :
デフォルトの名無しさん
2015/02/03(火) 22:01:35.92 ID:tKBD0v6T
novocaineって分かる人います?
120 :
デフォルトの名無しさん
2015/02/04(水) 11:48:21.24 ID:kErMECZ6
javascript も Ruby も Python も㍉
121 :
デフォルトの名無しさん
2015/02/08(日) 10:15:33.41 ID:pR6nMOCQ
>>118
でもそれだと暗証番号とか生成して秘匿するのには使えないよね?

特にコンパイル前に暗証番号分かってるような特注PGじゃなくて汎用なのだと。

関数内static変数をキーに使って加工した暗証番号を変数として保持するとかなのかな。

これならクラスに付けてないゲッターでプロパティが知れて漏れても
メソッドで加工してるから大丈夫とか。

そしてそのメソッドでは合ってるかどうかだけ返すようにすれば推測しづらいかな?
122 :
デフォルトの名無しさん
2015/02/08(日) 11:12:28.61 ID:HJEgExkV
>>121
要はIvarにしなければクラスの外からは見えないということで、
関数をsetter/getter兼用にして、その中で変数を宣言すればどうかと。

int cryptoNumber(int mode, int value)
{
static int local = 0;

//0:setter, 1:getter
switch (mode) {
case 0: local = value; break;
default: break;
}
return local;
}

まあ、関数のスコープ外からは見えないってだけだが。
123 :
デフォルトの名無しさん
2015/02/08(日) 12:27:24.17 ID:pR6nMOCQ
でもその引数valueはどこかのクラス内で
何らかのプロパティとして保持されてる値が引き渡されてるわけだろ?

Object-Cは完全なるOPPなんだから最終的にはどこかしらのプロパティが保持して
それは漏れなくIvarで引用されちゃうよね?
124 :
デフォルトの名無しさん
2015/02/08(日) 12:43:20.66 ID:HJEgExkV
保持するのはあくまで関数内のlocalのみだよ。
そしてセット/ゲットできるのもその関数を定義したクラス内のみ。(関数もstatic)
その値をどう生成してどう使うかにもよるし、どのレベルで隠蔽するかって事でもある。
125 :
デフォルトの名無しさん
2015/02/08(日) 12:46:03.85 ID:pR6nMOCQ
あとコメントアウトしてても
//0:setter, 1:getter
はマジックナンバーになりそうな。。。

int cryptoNumber(int mode, int value)
{
const int getter = 1;
const int setter = 9;
static int local = 5;

switch (mode) {
case setter: local = value; break;
case getter: break;
default: return null;
}
return local;
}

デフォルトはエラー処理な。
126 :
デフォルトの名無しさん
2015/02/08(日) 12:53:54.58 ID:pR6nMOCQ
>>124
それだと全然Object-Cっぽくないよね?
実質Cじゃん。

Object-Cでどうやってカプセル化もどきをするかってことだから。
クラスになったらばれる。

>関数もstatic
だからObject-Cはメソッド(関数)名が分かればstaticをpublicに上書きできるんだって。
127 :
デフォルトの名無しさん
2015/02/08(日) 13:05:35.56 ID:HJEgExkV
そりゃObjective-Cで完全な隠蔽は無理よw Ivarとかメソッドにした時点で見えるんだから。
必要ならCで書けばいいし、書けるのがObj-Cのメリットでもあると思うし、
どういう目的でその変数を使うかわからんけど、
例えばその関数にセッターと照合の機能を持たせれば、関数外へ値を出す事も無くなる。

typedef enum {
CryptoNumber_Mode_Set,
CryptoNumber_Mode_Compare
} CryptoNumber_Mode;

BOOL cryptoNumber(CryptoNumber_Mode mode, int ivalue) {….}
128 :
デフォルトの名無しさん
2015/02/08(日) 13:20:42.38 ID:HJEgExkV
っていうか、Obj_Cは「C+オブジェクトシステム」って、そこの記事に書いてなかったっけ。
129 :
デフォルトの名無しさん
2015/02/08(日) 13:39:05.07 ID:wyLER5GX
Objective-Cで完全な隠蔽って無理じゃ無い?
そのためにiOSデバイスは他人のコードをデバッガ起動させてないんじゃないの?
牢破りで台無しだけど
130 :
デフォルトの名無しさん
2015/02/10(火) 01:18:01.12 ID:YlSr2a8D
質問です。
自分はARCから入って、最近MRCの存在を知ったのですが
MRCしか無かった頃には、弱い参照をどのように処理していたのでしょうか?
assignは単に参照を保持するだけ…と言うことは、所有者が居なくなってもnilにならず
retainカウントがゼロ=破棄されて内容が保証できないメモリ、を参照してしまう可能性がありますよね…?
131 :
デフォルトの名無しさん
2015/02/10(火) 01:36:50.93 ID:kXovpB1O
>>130
運を天に任せてた。
ってか、weakは基本的には循環retainを防ぐためのものなので、親が消されたら子も消されるような状況なら、親→子はretain(strong)、子→親はassignで問題ない。
(親以外に子をretainしてる奴がいると問題だけど…。)
132 :
デフォルトの名無しさん
2015/02/10(火) 04:43:34.61 ID:aT+wxLBo
nonnull, nullable, null_resettable, null_unspecified が来ましたで
Cocoa/Cocoa Touch全部そうするのかなあ
133 :
デフォルトの名無しさん
2015/02/10(火) 05:48:15.38 ID:YlSr2a8D
>>131
なるほど、親子関係をハッキリさせておけば確かに起きないですね。
こんな興味本位の質問に答えて頂いてありがとうございました。
134 :
デフォルトの名無しさん
2015/02/10(火) 18:26:56.21 ID:3nLl+ggX
nonnull, nullable, null_unspecified 修飾子が加わったね
135 :
デフォルトの名無しさん
2015/02/11(水) 04:09:33.71 ID:IVeIu2if
>>134
>nonnull, nullable, null_unspecified 修飾子が加わったね
これはどういう用途や目的で使うのでしょうか
136 :
デフォルトの名無しさん
2015/02/13(金) 08:06:29.09 ID:9pkMuWgM
想像だけどswiftの⁉︎に相当するんじゃないの?
137 :
デフォルトの名無しさん
2015/03/04(水) 23:55:50.26 ID:IuCQE56I
Twitterクライアント作りたくてAFNetworkingとSimpleauth導入した
JSONのGETまでは出来るんだけどそこからtable viewに表示させる方法がわからない....

NSDictionaryとか配列とか使うのは知ってるんだけど調べても書き方が.....
138 :
デフォルトの名無しさん
2015/03/05(木) 00:08:35.68 ID:U/1KqdAB
>>3
> https://developer.apple.com/library/mac/navigation/

から Table View の Sample Code 見てみ。
139 :
デフォルトの名無しさん
2015/03/08(日) 19:28:12.30 ID:HPLKgVu5
超古いコードをYosemite対応に書き換え中。
NSCalendarDateを置き換えしてたんだが、
なんだか凄く面倒くさい書き方になったんだな。
一々プロパティ叩かないと使えないNSCalendarとか
NSDateFormatterとか、行数増えまくり。
Fomatterが遅いのはホント酷いな。

もう少しコンビニエンスなメソッド用意して
欲しい。
140 :
デフォルトの名無しさん
2015/03/08(日) 19:33:54.16 ID:CC8CPwGl
自分で追加すればええやん?
Fomatterが遅いのは対処の仕方がいくつかはあるし、ずっと前から遅いことだろう
まあ、NSDate <-> 文字列もしくは分解は所見ではげげっというほど面倒に見えるだろうけど
141 :
デフォルトの名無しさん
2015/03/08(日) 20:10:13.17 ID:WTSZ2xfx
ハゲゲッに見えて困惑した
142 :
デフォルトの名無しさん
2015/03/11(水) 08:11:20.24 ID:s1uWJrZ7
Table viewにcell作ってUIText view配置してTwitterクライアント作ったんだが、下にスクロールしてくとだんだん表示が重なってきてバグってしまう
同じ事起きた人解決方法知ってたら教えてください
143 :
デフォルトの名無しさん
2015/03/12(木) 01:19:13.06 ID:nNmLNiHn
>>139
Cocoa Pod漁れば、便利カテゴリーがあるかもしれんが。
ちゅうか、ObjCの何が便利かってカテゴリーでオレオレメソッドを自由に追加できる
所なんだが。
144 :
デフォルトの名無しさん
2015/03/16(月) 18:10:31.38 ID:BqfOZ60v
WikipediaにObj-CのランタイムがCで書かれてるって書いてるんだけど
誰もやらないような面倒臭いことをすればCの記述のみでObj-Cが書けるのか?
145 :
デフォルトの名無しさん
2015/03/16(月) 19:05:41.37 ID:Nv6mM3KY
人間業じゃないと思うけど書こうと思えば書けるな
146 :
デフォルトの名無しさん
2015/03/16(月) 22:23:57.89 ID:dCO+oU4w
@~とか[ ]とかはコンパイラをごにょごにょ必要だべ。
147 :
デフォルトの名無しさん
2015/03/16(月) 22:44:42.95 ID:Nv6mM3KY
いや、それも無しのCの記述のみってことなんじゃね
148 :
デフォルトの名無しさん
2015/03/16(月) 23:26:06.83 ID:dCO+oU4w
Obj-Cというより、CでOOPってことやね。かなりの事はできるだろ。
blocksとかprotocolは無いけど、observer, target/actionはできるし、
構造体にretainCount持たせてコンストラクタ/デストラクタ関数を書けばMRCっぽくなるんじゃね?
149 :
デフォルトの名無しさん
2015/03/16(月) 23:55:29.64 ID:BqfOZ60v
Cで書かれたObj-Cのランタイム関数群を使って
Cの記述のみで実質Obj-Cとしてプログラミングするのは可能か
という質問だった
分かりづらくてスマソ
当然だけどARCではなくMRCで
150 :
デフォルトの名無しさん
2015/03/17(火) 00:07:00.89 ID:c3ZGZmTn
逆にObj-Cと言っても、Cから拡張された特有の部分(@~とか[ ]とか)以外はCだよ。
だからCのみの記述だと、上の特有の部分が使えないって事になるかな。
その意味では、実質Obj-Cではなく実質Cでプログラミングする事は可能。
151 :
デフォルトの名無しさん
2015/03/17(火) 00:26:31.31 ID:XaFY+4CG
そういう意味で、Objective-Cって、日本語の文字の特性にピッタリ相当するよね。
C++が、漢字だけ使う状況を維持しつつ、時代に合わせて全体を改良していった簡体字のポジションに符合する。
一方、かな漢字のモザイクミックスによって、外来語に合わせた柔軟性と、前方互換性の絶妙のバランスの日本語というObjective-C。
C系統のレガシー部分(漢字文化)自体を捨ててしまって、新しく文字体系を作り直してしまったハングルはSwiftみたいなもんかな。
152 :
デフォルトの名無しさん
2015/03/17(火) 00:28:23.92 ID:hphSATZF
>>149
純粋なCでObjective-Cオブジェクトを扱うのは全く問題なく可能
新しいクラスのObjective-Cオブジェクトを作るのも構造体でしかないから、とてもがんばれば可能

Objevtive-Cは元々Cのプリプロセッサでしかなく、現在のclangでもObjective-CからCソースを生成できたはず
153 :
デフォルトの名無しさん
2015/03/17(火) 01:01:26.34 ID:nOSd0QwC
>>150
その特有の部分がCの関数で実装されているって話だから
やろうと思えばCだけでできないかなと思った
そんなこと誰もやりたくないからこの言語が生まれたんだけどさ
WikipediaにObj-CはC++と違ってCの上位互換言語って書いてあったから
どこまで可能なのかと気になっちゃって…

>>152
なるほど
「頑張れば」可能なのね
>現在のclangでもObjective-CからCソースを生成できたはず
知らなかった
調べてみる
154 :
デフォルトの名無しさん
2015/03/17(火) 01:37:20.90 ID:qWCLUX9n
調べるなら、RubyCocoaやFreePascalのObjective-C互換機能あたりがいいかも
C++のクラスは他言語から使う事はほぼ不可能だけど、ObjCは割と楽勝
155 :
デフォルトの名無しさん
2015/03/17(火) 02:09:39.21 ID:9PxdASsP
#import <objc/runtime.h>
見れば色々出来ることが分かる。
156 :
デフォルトの名無しさん
2015/03/17(火) 04:25:54.29 ID:k/LbPUX+
http://news.mynavi.jp/column/objc/
ここの連載とかもmessage送信の仕組みとかの解説が気楽に読める
157 :
デフォルトの名無しさん
2015/03/17(火) 08:19:09.18 ID:EJu+JoaD
>>151
なるほどとてもわかりやすい
Swiftはクソだからね
158 :
デフォルトの名無しさん
2015/03/17(火) 20:25:47.35 ID:YX0UjXZ+
Smalltalkに寄せてしまえば良かったのに。
有名なSmalltalkの処理系Smalltalk/Xみたいに遅い部分だけC言語を
インラインで書く。
159 :
デフォルトの名無しさん
2015/04/16(木) 15:08:50.01 ID:o308Ymfa
Textured Windowの上にカスタムビューを置いたときに
そのカスタムビューがドラッグされたときwindowが移動しないようにしたいのですが。
カスタムビューの中にカーゾルが入ったら
setMovableByWindowBackground:NO
にしてカーソルが出たら戻す方法以外に、方法はありますか?
試しにimageViewを置くとドラッグで移動しないので、何かありそうなのですがググっても分かりませんでした。
160 :
デフォルトの名無しさん
2015/04/16(木) 15:17:40.05 ID:o308Ymfa
>>159
解決しました。
- (BOOL)mouseDownCanMoveWindow{
return NO;
}
161 :
Killery ◆CzYk9LSvHM
2015/04/30(木) 22:03:56.13 ID:7KgGp2Xd
誰かobjective-cできる人
一緒にゲーム作りませんか?
こういうの作ってます
http://sourceforge.jp/projects/awarsiii/releases/
162 :
デフォルトの名無しさん
2015/05/01(金) 10:29:44.06 ID:XsxuvEVX
いいけど一緒にって何やるの?
163 :
デフォルトの名無しさん
2015/05/01(金) 11:59:27.42 ID:7BSZ6A8A
>>161
そのスレも呼んでるが、君は仲間募集する前に推薦されたAIの本を図書館閲覧じゃなく購入しなさいな。
自分への投資なんだから。
164 :
デフォルトの名無しさん
2015/05/01(金) 15:51:02.29 ID:OXJqR0q8
call そのスレ
165 :
デフォルトの名無しさん
2015/05/01(金) 17:07:59.94 ID:7BSZ6A8A
>>164
ゲ製のココね
http://peace.2ch.net/test/read.cgi/gamedev/1388301393/

頑張ってるの解るんで読んでるんだけど、上にも書いたようにもちょっと自己投資して勉強するべしって思うのよね。
166 :
デフォルトの名無しさん
2015/06/19(金) 16:17:27.35 ID:9hebRpBD
入門Objective-C 2.0 [第1版]
入門Objective-C 2.0 [第2版]
入門Objective-C 2.0 [第3版]
この違いって何?
167 :
デフォルトの名無しさん
2015/06/19(金) 16:34:07.70 ID:Hn4vsFYs
版数
168 :
デフォルトの名無しさん
2015/06/19(金) 18:23:40.34 ID:FzphauAa
改訂じゃなければ中身一緒
169 :
デフォルトの名無しさん
2015/06/19(金) 18:24:27.78 ID:FzphauAa
ああそれは
第一刷
第二刷
第三刷
のほうだったかな
170 :
デフォルトの名無しさん
2015/06/20(土) 08:34:11.31 ID:6G5MNLrc
>>166
間違いや足りない内容を修正、追記
171 :
デフォルトの名無しさん
2015/06/22(月) 01:10:44.37 ID:vs8WgO/1
今、framework作ってるんだが、framework in frameworkって出来ないよな?
またそのあたり詳しく書いてある書籍、サイトを教えてほしい

やりたいことはあるframeworkがプロジェクトに組み込まれていたらメソッドを使用して
なければ自frameworkのメソッドを使用するといったことをしたいんだ
172 :
デフォルトの名無しさん
2015/06/22(月) 01:27:05.08 ID:U3VtOrGe
別々のフレームワークにしとけばいいんじゃないの
その作りたい 自フレームワーク の設定で あるフレームワーク を Optional にして、自フレームワークのコードで あるフレームワーク(のコード) が実在するかしないか見るだけじゃないの
173 :
デフォルトの名無しさん
2015/06/22(月) 23:17:56.19 ID:Kf0FVNH9
Objective-Cだったら、メソッドのシグネチャがあってれば実態は全く
別のクラスでも動くけど。Javaみたいにcastの例外とか飛ばないし。
174 :
デフォルトの名無しさん
2015/06/22(月) 23:39:53.89 ID:U3VtOrGe
飛ばないし?で?
175 :
デフォルトの名無しさん
2015/10/27(火) 16:35:39.20 ID:6G1cYYTw
Finderの、「このアプリケーションで開く:」をコードで変更する方法を探しています。
LaunchServicesのLSGetApplicationForItemで設定されているアプリケーションを取得出来ましたが
設定を変更する方法が分かりません。
お知恵をお貸しください。
176 :
デフォルトの名無しさん
2015/10/27(火) 18:59:31.54 ID:bGIBGj3u
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister
とかでどうにか出きんのかね
177 :
デフォルトの名無しさん
2015/10/27(火) 19:12:15.19 ID:6+1/cOui
http://sutes.co.uk/2009/09/creator-codes-are-not-replaced.html
FSRef は確か Deprecated だよなあって、Yosemite だけど LaunchServices.framework の中見たら _LSSetStrongBindingForFileURL がちゃんとあった
ググってみても _LSSetStrongBindingForFileURL のプロトタイプを解析した人はいなさげだけど
まあ、_LSSetStrongBindingForRef もまだあるようだからそれでいいんじゃね
178 :
デフォルトの名無しさん
2015/10/27(火) 19:49:36.89 ID:6+1/cOui
_LSSetStrongBindingForRef を使ってコマンドラインを作った人のがあった
https://github.com/lipidity/CLIMac/blob/master/src/setapp.m
試してないけど、動くんじゃね

ああ、Mac App Store に上げるつもりとかだったら使えないけど
179 :
デフォルトの名無しさん
2015/10/27(火) 21:32:47.70 ID:2fOxN6nT
>>177
ありがとうございます。
LSSetStrongBindingForRefでデータを開くデフォルトアプリを個別に変更出来ました。
特定のフォルダの中のデータのみ、デフォルトではなく別のアプリケーションで開くように設定する奴を作りたかったので助かりました。
Finderで一つづつやるのは、大変なのでこれで捗りそうです。
180 :
デフォルトの名無しさん
2015/11/19(木) 08:55:12.35 ID:JIJtk7D/
ブラッド・コックスとトム・ラブがObjective-Cを作り「この言語はCのメモリ安全性とSmalltalkの高速性を合わせたものだ」と宣言する。
現代の歴史家は2人が失読症ではないかと疑っている。
https://twitter.com/okdshin/status/666903312151613440
181 :
デフォルトの名無しさん
2015/11/19(木) 18:31:52.89 ID:opr9KqWY
>>180はコピペ基地外
182 :
デフォルトの名無しさん
2015/11/21(土) 12:57:07.40 ID:8kcVam9N
いろんなとこにコピペしてるけど、ググってみたら
アンサイクロペディアみたいないろんな言語を皮肉った英語ブログのネタが元で
そもそも各言語について適当にでっちあげたわざと間違ってる内容を書いてるとこも
含めたジョークらしいので、コックスもラブもんなこと言ってないっぽいし
コピペ意図が不明すぎる。
183 :
デフォルトの名無しさん
2015/11/21(土) 13:08:30.33 ID:pj6HPKNQ
ググったらスレ建てもしてるみたいだな
確かに意図がわからんな「Cのメモリ安全性」「Smalltalkの高速性」共に逆のことをワザと書いたとしか思えないもんな
元ネタはわからんが(元ネタがあったとしても上記のとおり単なるジョークとしか思えない)、コピペ本人はどうもジョークとは思っていないキチと推察すると意図もわかるかなw
184 :
デフォルトの名無しさん
2015/11/22(日) 17:13:33.90 ID:GwOnodE2
ネタにマジレスして構ってやるなよ
ボットで適当に蒔いてるだけだろ
185 :
デフォルトの名無しさん
2015/11/23(月) 21:29:06.04 ID:j1CLVbI1
この言語って、今さら覚える意味あるの?
強制的にswiftを覚えないといけないのか?
変態紳士感がなくなってつまらん・・・
186 :
デフォルトの名無しさん
2015/11/23(月) 22:05:36.96 ID:eMpdXwtN
Swiftはつまらんよな
Objective-Cで良かったのに
187 :
デフォルトの名無しさん
2015/11/24(火) 21:29:19.64 ID:9T6iquHX
Swiftは仕様が固まるまで製品じゃ使えない
188 :
デフォルトの名無しさん
2015/11/25(水) 10:16:10.57 ID:DmnqISoa
俺は仕事で1回使ってみたけどしばらくはObjective-Cだなと思った。また来年のWWDCの発表を見て今後どうするか考える。
189 :
デフォルトの名無しさん
2015/11/26(木) 09:48:13.02 ID:xBfynER4
"C#の出現でC++は終わったな!"はおかしいと一目でわかるが
"swiftの出現でObjective-Cは終わったな!"は
なんか騙されてswiftから始める人が多そうでちょっと困る。
190 :
デフォルトの名無しさん
2015/11/26(木) 20:02:41.94 ID:tASN5hyu
Objective-Cの本もswiftの本も買った
入門編だけど
SWIFTはiPhone向けの言語かな
191 :
デフォルトの名無しさん
2015/11/27(金) 04:32:20.42 ID:qQlw7qsR
入り口はどうあれプログラミングに興味を持って、始めてくれればいいじゃないか。
swift触ってたら、絶対にobjcの方が楽ってのに気づいてobjcに変えるだろうし。
192 :
デフォルトの名無しさん
2015/11/27(金) 08:08:00.07 ID:K1GiTf24
個人的にはObjective-Cは最高な言語だと思う
Cに純粋にオブジェクト指向部分を足したってのがとてもはっきりしてる体系が気に入ってる
193 :
デフォルトの名無しさん
2015/11/27(金) 09:41:14.23 ID:cJWLDRkK
Swiftの方が楽だろ
194 :
デフォルトの名無しさん
2015/11/27(金) 10:18:20.72 ID:KobZxewL
>>193
多言語使える人だとObjective-Cの方が読みやすかったりする(特にsmalltalkとCを使える人には)
ARC以降だとオブジェクトの寿命が確定的に書けるのも気に入っているのだけどSwiftそんなにいいかねぇ?
195 :
デフォルトの名無しさん
2015/11/27(金) 10:33:33.00 ID:UY/CmALQ
どっちも楽だ
好きな方使え
196 :
デフォルトの名無しさん
2015/11/27(金) 12:02:36.84 ID:YdZhD1ux
最近、BASICがFORTRANとかで初心者がつまずく型宣言とかを
わざと排した本当に高級言語だった。ってのを知ったけど
そんな感じでswiftにはObjective-Cから煩雑な宣言や明示的な設定を排したものを期待したら
なんか言語の基本的な方向自体も変化したものが出てきたのでコレジャナイ感があるんだよなぁ…
(次世代のBASICみたいな位置で初学者これでいいかな?とも思うけど)
Objective-C 3.0待ってる感じ。
197 :
デフォルトの名無しさん
2015/11/27(金) 13:13:46.62 ID:gok+YEjG
Swiftのいいところを取り込んだObjective-C 3.0は楽しみだね。
198 :
デフォルトの名無しさん
2015/11/27(金) 15:38:45.88 ID:c/N8jVfb
>>185
Cとオブジェクト指向を知ってる人ならObjective-C自体は覚えるのに手間かからない
手間かかるのはクラスライブラリの方
199 :
デフォルトの名無しさん
2015/11/28(土) 12:54:08.32 ID:6FOokPJE
すまんがどう考えてもObjective-Cのままで問題ないんだがAppleさん
無駄に変える必要はないのだよ
200 :
デフォルトの名無しさん
2015/11/28(土) 13:21:11.06 ID:mf/sQ31/
無理に変えるつもりはないでしょう
だが新しいものを作り続けるのが企業の使命だね
201 :
デフォルトの名無しさん
2015/11/28(土) 18:53:58.66 ID:HXtO9qK/
OS XI にでもなってCocoaフレームワーク自体を捨てん限りは
Obj-Cも生き残るでしょ
202 :
デフォルトの名無しさん
2015/11/28(土) 19:05:45.56 ID:e6xTroJ6
AppleがSwiftオンリーなFrameworkが出して来たらそろそろ移行を考えないといけないかもな
203 :
デフォルトの名無しさん
2015/11/28(土) 19:06:21.30 ID:e6xTroJ6
すまん日本語変になった
204 :
デフォルトの名無しさん
2015/11/28(土) 22:10:07.48 ID:kgkzLj4L
アップルも仕様も固まってない新言語出す余裕があるなら既存のフレームワークでデグレード起こすなよ
iOS新しくなるたびに動いてたアプリの動作確認やり直したくない
205 :
デフォルトの名無しさん
2015/11/28(土) 23:27:15.28 ID:6eqw6N3H
行儀の良いプログラムを書いていればOSのメジャーバージョンが1や2上がろうが問題ない、、はずだったのに最近はそうでもないから困るよな。
206 :
デフォルトの名無しさん
2015/11/28(土) 23:28:02.26 ID:BQ0bn1Ds
具体的に何がデグレした?
207 :
デフォルトの名無しさん
2015/11/29(日) 00:26:20.94 ID:QBLtGFSe
あれはiOS8になった時の事だったが、CoreDataでordered to-many relationshipを使っているNSManagedObjectに対し、mutebleOrderedSetForKeyで得たNSMutableOrderedSetにaddObjectした途端に例外が発生することがあった。

あの時は取り急ぎスキーマから変えて対応せざるを得なかったが、回避で済ませてしまったためその後修正されたかどうかは分からない。その後、iCloudも使うようになったためordered relationshipは一切使わなくなった。
208 :
デフォルトの名無しさん
2015/11/29(日) 17:25:10.94 ID:Vce1ffgL
結局、これからmacだiphoneだで
アプリを作りたいと思ってるヤツは、
どっちを勉強すれば良いの?
凡人だから両方は勉強できない。
209 :
デフォルトの名無しさん
2015/11/29(日) 18:09:05.24 ID:A9KhUhEL
既存のコードの蓄積考えたらObjCでいいと思うけど

既に何らかの言語習得してるなら好きな方で
210 :
デフォルトの名無しさん
2015/11/29(日) 20:46:42.92 ID:TqJ6Jff5
凡人でも両方勉強できるし
むしろ両方がオススメだ
211 :
デフォルトの名無しさん
2015/11/29(日) 23:35:25.86 ID:4SB95NTF
そだね
212 :
デフォルトの名無しさん
2015/12/05(土) 13:22:14.50 ID:ezhtU6tG
廃止になったら言語そのものも使えなくなるの?
213 :
デフォルトの名無しさん
2015/12/05(土) 15:04:53.42 ID:/HX/hq4Y
そんなわけないでしょ
214 :
デフォルトの名無しさん
2015/12/11(金) 12:29:48.01 ID:MalFwClY
objcは業務
swiftは趣味の世界

objc3.xで世界が変わる
215 :
デフォルトの名無しさん
2015/12/11(金) 12:31:12.54 ID:MalFwClY
objc3.0でletとvarが導入されればswift死亡
216 :
デフォルトの名無しさん
2015/12/11(金) 12:34:56.80 ID:k4LG4g9y
ObjCは老害専用言語
217 :
デフォルトの名無しさん
2015/12/11(金) 13:51:31.44 ID:DzIPXkfp
>>208
次にお前は英語も数学も出来ないと言い出す
218 :
デフォルトの名無しさん
2015/12/11(金) 18:27:29.99 ID:lEEILW0v
xibってなくなったの?
xcode7
219 :
デフォルトの名無しさん
2015/12/11(金) 23:29:56.74 ID:MalFwClY
Obj-CもSwiftも言語ではない。
ただのFrameworkラッパー、よってObj-Cで十分。
実は言語なんかよりやらなきゃならないことが多いし。
220 :
デフォルトの名無しさん
2015/12/12(土) 03:02:26.99 ID:593JE5qZ
そうだね。言語ごときで好きだの嫌いだの騒ぐのはアマチュア。
221 :
デフォルトの名無しさん
2015/12/12(土) 10:53:31.26 ID:Zz+FClXu
言語で効率が全然違うから、プロの方がシビア。
222 :
デフォルトの名無しさん
2015/12/12(土) 17:31:40.64 ID:/gwbfiZW
国内の新規案件はほとんどSwiftじゃない。新規のサンプルコードも
全部Swiftだし。
223 :
デフォルトの名無しさん
2015/12/12(土) 18:20:42.99 ID:CMJEMtsG
Swiftはだれだったか忘れたがそいつのオナニー言語だろ
224 :
デフォルトの名無しさん
2015/12/12(土) 18:21:43.33 ID:CMJEMtsG
あ、このベジータか
http://nondot.org/sabre/
225 :
デフォルトの名無しさん
2015/12/12(土) 19:37:14.29 ID:ooN9fQ2a
Objective-Cの歴史をよく知らないか、自分のいた"モダン"な側から
古くて切り捨てるものと見てるのか、たぶん当人は
Objctive-C側からみてswiftがまるで足に鉄球つけて
時代遅れの狭いとこに押し込んでる
「退歩した」環境に見えてるの気づいてないとは思う。
226 :
デフォルトの名無しさん
2015/12/13(日) 09:40:19.57 ID:+eRy+6gb
キャストを認めないswiftがString⇔NSString互換してる時点で明らかに変
Core Foundationはswiftで書けないし
227 :
デフォルトの名無しさん
2015/12/13(日) 09:55:29.13 ID:+eRy+6gb
Objective-C 3.0 待ちかな・・
228 :
デフォルトの名無しさん
2015/12/13(日) 18:09:42.82 ID:+eRy+6gb
func とか書く理由が分からない
-> とかも泥臭い
書籍買ったら負け
229 :
名無しさん@そうだ選挙に行こう
2015/12/14(月) 08:57:48.47 ID:Dd9ol/hG
Jobsが愛したObjective-C
230 :
名無しさん@そうだ選挙に行こう
2015/12/14(月) 09:12:29.46 ID:n4HjOhXW
Swiftのゴリ推しにはうんざり…
Apple最近頭悪いよね
231 :
名無しさん@そうだ選挙に行こう
2015/12/14(月) 09:52:55.38 ID:EuhoRupa
いっその事ARC前提のjavaで・・
232 :
名無しさん@そうだ選挙に行こう
2015/12/14(月) 09:59:45.12 ID:EuhoRupa
Swiftが言語としてUIとhttpをサポートしたら使う
どうせApple専用なんだし
Appleって言語作ればいいのに
233 :
名無しさん@そうだ選挙に行こう
2015/12/14(月) 10:16:05.01 ID:ihUsYndj
>>229
別に愛してないけど
234 :
アイ
2015/12/14(月) 12:06:45.16 ID:6cQ1LEo2
わしの考えたobj-c 3.0 ではメッセージ式もドットシンタックスで書ける。

if (obj.isKindOfClass(UIView.class)) {
 obj.removeFromSuperView();
}
235 :
デフォルトの名無しさん
2015/12/14(月) 21:01:22.96 ID:b2CmJBSx
>>234
もはやメッセージ式ではない件
236 :
アイ
2015/12/14(月) 21:14:10.74 ID:6cQ1LEo2
>>235
今だってアクセサにはドットで呼ぶから、あんまり変わらんですよ。
237 :
デフォルトの名無しさん
2015/12/14(月) 21:38:24.48 ID:EuhoRupa
Swiftは単なる話題づくり
つまりネタ
238 :
デフォルトの名無しさん
2015/12/14(月) 22:22:42.49 ID:b2CmJBSx
>>237
めちゃくちゃ納得した
かつてのCocoa Java的な立ち位置か
239 :
デフォルトの名無しさん
2015/12/15(火) 07:09:10.78 ID:PEMjc+kq
SwiftではなくApple BasicみたいなVBもどきを作ればいいのに
イベント処理のガラなんか記述したくないし、いい加減GUIをコードで書く時代は卒業したい
240 :
デフォルトの名無しさん
2015/12/15(火) 07:50:11.21 ID:Vrhl7KsS
objctive-cとSwiftは、
VB.NETとC#みたいなもんだと思って良いのか?
どっちも文法が微妙に違うだけで、中身はほとんど同じになってしまってる。
241 :
デフォルトの名無しさん
2015/12/15(火) 08:01:06.30 ID:Vj+3N2ql
いや全然ちがくね?
242 :
デフォルトの名無しさん
2015/12/15(火) 08:09:19.43 ID:PEMjc+kq
SwiftもObj-Cもただのフレームワークラッパー
Swift覚えても何も楽にならない、逆にCとかに戻れなくなる
近い将来、Swiftエンジニアは潰しが利かない=無能
と呼ばれるだろう
243 :
デフォルトの名無しさん
2015/12/15(火) 08:11:40.28 ID:PEMjc+kq
99.99%のiOS案件はObj-C
3年後も70%はObj-C
244 :
デフォルトの名無しさん
2015/12/15(火) 09:11:47.63 ID:3fLJcyYR
Swiftあかんな…
245 :
デフォルトの名無しさん
2015/12/15(火) 13:24:16.55 ID:0+wWMBI1
ObjC老害戦々恐々やねw
246 :
デフォルトの名無しさん
2015/12/15(火) 18:55:30.31 ID:ThSWRCNo
老害って言うほど長くやってる人はいない
NeXTからやってるなら老害と認めよう
247 :
デフォルトの名無しさん
2015/12/15(火) 19:06:03.45 ID:p61Myj1Y
cocoaの時に詳解とヒレガスは買ってたけど
触り始めたのはiPhoneアプリ自由化からだから2008年辺りからだなぁ
248 :
デフォルトの名無しさん
2015/12/15(火) 23:23:01.62 ID:dsHRmTJg
俺は2003年頃かな
Carbonをリアルタイムで触ってない世代
249 :
デフォルトの名無しさん
2015/12/16(水) 08:25:14.74 ID:0uVLlrb9
今Swiftにくいついているのは日本人だけ
250 :
デフォルトの名無しさん
2015/12/16(水) 08:29:34.17 ID:0uVLlrb9
Swiftじゃ保守が大変だろうな
同じ担当者が一生関わるなら話は別だけど
251 :
デフォルトの名無しさん
2015/12/16(水) 08:54:52.13 ID:sYdqzL9a
社内保守にしろ開発会社に依頼する立場にしても、ちょっと機能追加したいだけって時に言語の仕様変更に追加で人員コスト金かけて対応しなきゃいけないのはマイナスだろうね。
エンジニアは新しいものが楽しい人種だから仕様変更に振り回されるのも楽しいだろうけど。
言語仕様が固まってからが普及のチャンスじゃないかな。
252 :
デフォルトの名無しさん
2015/12/16(水) 12:51:49.41 ID:yQvrJjLh
>>249
嘘。世界中の開発者が興奮している
253 :
デフォルトの名無しさん
2015/12/20(日) 18:46:40.71 ID:OsSjw3df
ソースコードの見た目に変態感がなくなったから、
興奮なんてできないだろ。
254 :
デフォルトの名無しさん
2015/12/21(月) 00:53:15.69 ID:38Cohb8a
まだ、swift不採用にしてる会社のほうが多いよ。
255 :
デフォルトの名無しさん
2015/12/21(月) 00:57:03.49 ID:38Cohb8a
Jobs色排除のためのswiftは抵抗あるし・・。
256 :
デフォルトの名無しさん
2015/12/21(月) 01:38:38.13 ID:9UN2TS0D
無駄にSwiftに切り替える必要性がない
257 :
デフォルトの名無しさん
2015/12/21(月) 01:56:48.91 ID:JMWJJ/EQ
swiftって無能なweb屋崩れが新規に始める言語だろ
一部の処理速度のみ最適化したごまかし言語に、既存の開発者が乗り換える理由が無い
258 :
デフォルトの名無しさん
2015/12/21(月) 02:04:45.99 ID:15YBhsYq
わかってるやつはわかってる
259 :
デフォルトの名無しさん
2015/12/21(月) 02:53:29.57 ID:4Mx5VRPH
>>231
それ煩雑になったObj-Cじゃねぇかwww
260 :
デフォルトの名無しさん
2015/12/22(火) 00:31:57.69 ID:TjIa8Lja
swiftで構造体とか訳わからん。
プロはobj-cで十分。あるいはc#で。
261 :
デフォルトの名無しさん
2015/12/22(火) 00:50:38.19 ID:CCc3g5x5
Objective-Cの文法は初見さんには変態的に見えるかもしれないけど、
Cの柔軟性を100%維持しつつ、オブジェクト指向をシンプルに追加した
他には見られない特筆すべき言語の一つだということは間違いない
262 :
デフォルトの名無しさん
2015/12/22(火) 01:15:32.84 ID:ah9aIrQQ
文法が違うと言っても大して違わないんだよ、実は。
ドットで書くと>>234のとおり。あんまり変わらん。
263 :
デフォルトの名無しさん
2015/12/22(火) 01:17:01.40 ID:qJHZYnmU
言語としての好みなんかどうでもよくて、
製品のライフの間言語仕様の変更みたいなアホな理由で書き直しが発生しない言語で書くだけのこと
WindowsならC++で書くしAndroidならJavaで書く
264 :
デフォルトの名無しさん
2015/12/22(火) 03:16:56.00 ID:kU1YHHeN
今どきC++でwindowsのアプリを作るヤツなんていないだろ。
MFCでもいまだに使ってるのか?
265 :
デフォルトの名無しさん
2015/12/22(火) 03:32:59.94 ID:h2+OmYvg
Objective-Cがいいとかわるいとかとあんまり関係ないが
2004年のiBookG4動かすとメモリ256Mしかないから
レインボーカーソル回りまくりで動作がブチブチなのだけど
逆に「xib読んでるw」「ボタンからアクションが飛んだw」って
オブジェクトが通信してるのが見えるぐらい遅くて
これぐらい動作順番保障されてないのに動くしっかりした
設計をおれもしなきゃなぁ…って思ったりするw
266 :
デフォルトの名無しさん
2015/12/22(火) 05:17:26.08 ID:3vnbRuHu
NeXTもMac OSもObjective-Cで書かれて実際に動いているのに、なんでSwiftなのか?
初心者向けとも思えないし・・言語ヲタ向けとしか・・
267 :
デフォルトの名無しさん
2015/12/22(火) 08:48:40.76 ID:qNjAqcDd
ObjCはジョブズの象徴だからな
破壊されて当然
268 :
デフォルトの名無しさん
2015/12/22(火) 09:00:09.33 ID:kU1YHHeN
>>266
見た目が一般的になったから
とっつきやすいじゃん。
言語仕様も既存の良く使われる言語から
いいところを寄せ集めた感じになってるし。
一般的に普及させやすいとみたのだろうさ。
269 :
デフォルトの名無しさん
2015/12/22(火) 09:25:06.95 ID:aKsc0Ke4
>>267
いや意味が分からない
270 :
デフォルトの名無しさん
2015/12/22(火) 11:47:29.03 ID:E422G1dP
結局 「Cに仕様を追加」というのが限界なんじゃないかな。
Cの反省点を元にしてGoが生まれたようにCの言語仕様を捨てたいと考えた時に
新しい言語を用意しようってなったんじゃないかな。
271 :
デフォルトの名無しさん
2015/12/22(火) 12:31:40.21 ID:qNjAqcDd
末尾クロージャや$1を駆使したコードは
短小オナニーって感じで大変見にくい
272 :
デフォルトの名無しさん
2015/12/22(火) 13:56:15.38 ID:ah9aIrQQ
クロージャだけ別に書いてもいいんだぞ。
273 :
デフォルトの名無しさん
2015/12/22(火) 16:14:16.42 ID:FIUTNb/j
>>270
Cに仕様を追加って話ならObjective-Cって見事にやり遂げてると思うが?
C++の方がCっぽいけどObjectへのメッセージ送信をsmalltalkライクな表現にした分読みやすいと思うのだが(structとclassの区別がヘッダ見ないとわからないC++を僕が嫌いなだけかもしらんけど)

ちなみにswiftはあんまり好きじゃねぇ、どうせ此処までfunctionalな実装にするのならもっと定数的な仕様にしてほしかった。
274 :
デフォルトの名無しさん
2015/12/22(火) 16:31:23.14 ID:mxs6PTE7
最初にObjective-CマイナスCってのを見た時は、それってSmalltalkそのものじゃね?って思ったものだが
出てきたものはどちらにも無い機能まで寄せ集めてきた、確かにモダンだが一層ツギハギ感のあるものだったっていう
275 :
デフォルトの名無しさん
2015/12/22(火) 16:42:03.53 ID:E422G1dP
>>273
ごめん言い方がまずかったかもしれない。
Cの言語仕様がまずいのでそれに更に追加するって作りが良くないよね。
って話。

例えばCでは暗黙の型変換がある。
nullと0の区別がつかない。
ポインタ型がある。

正直Cに代わる言語がでてくれるのが一番なんだが。
goもswiftもrustも対抗対象がc++とかなんだよなー。

go並の言語仕様の小ささでC対抗言語でないかなー
276 :
デフォルトの名無しさん
2015/12/22(火) 16:50:06.75 ID:E422G1dP
>>274
IDEの変換機能に期待して
言語仕様の後方互換性を無視して作るって姿勢が功を奏するかもね。
ある程度こなれてきたら、いらない仕様を削っていってほしい。

goって惚れ惚れするくらい言語仕様抑えてるんだよね。
例えばclassがなくてstructだけとか。
structを参照渡ししてclassっぽく使うからそれで十分なんだよね。

swiftではstructとclassの使い分けって値渡しか参照渡しってだけだよね。
enum class struct全部にメソッド生やせるなら、どれかはけずれるでしょう?
277 :
デフォルトの名無しさん
2015/12/22(火) 16:59:36.42 ID:QCvgGY11
Objective-C#で
278 :
デフォルトの名無しさん
2015/12/22(火) 19:57:04.99 ID:txd9otas
Objective-Swiftじゃいかんのか?
279 :
デフォルトの名無しさん
2015/12/22(火) 22:30:17.60 ID:aKsc0Ke4
>>273
同感
Objective-Cはオブジェクトを扱ってる部分がわかりやすいのがいい
280 :
デフォルトの名無しさん
2015/12/25(金) 10:41:49.70 ID:PGIlXZYL
結局、もうなくなる言語だから
勉強するな、ってことか?
この言語で作ったアプリは、appストアで売れなくなる
って本当なの?
281 :
デフォルトの名無しさん
2015/12/25(金) 11:00:42.82 ID:rljA4Lg6
って本当なの?(笑)
282 :
デフォルトの名無しさん
2015/12/25(金) 13:15:43.73 ID:BCzmNj47
AppleとSwift開発者のオ○ニーに付き合わされて大変だねぇwww
283 :
デフォルトの名無しさん
2015/12/25(金) 20:00:50.32 ID:P+AWGo7j
>>275-276
なんつーか、Objective-Cやってると"列挙型"だの"多変数を返す"だのは
そういうクラスを作って計算させて、クラス返せばいいじゃんになるので
ごちゃごちゃ細かい10年後は廃れてそうな機能を"言語仕様"に組み込んでるのに
すげぇ違和感あるんだよな。
「量子コンピュータ言語フンババではquantam構文で~」ってやった十年後に
「超次元理論言語クチャラビビンバではultaradimention構文で~」って永久にやってそうっつか。
284 :
デフォルトの名無しさん
2015/12/25(金) 23:01:55.38 ID:3siPzMif
永久にやるしやらないといけないに決まってんじゃん
そんなことも分からないとはさすが老害
285 :
デフォルトの名無しさん
2015/12/25(金) 23:12:38.49 ID:ya9ISuTA
そういうアホな賽の河原の石積みやってらんないから
>そういうクラスを作って計算させて、クラス返せばいいじゃん
286 :
デフォルトの名無しさん
2016/01/01(金) 16:07:13.78 ID:HHSrINjy
今年は、この言語がなくなる年か・・・
ごくろうさまでした。
287 :
デフォルトの名無しさん
2016/01/01(金) 18:29:59.82 ID:xUPyE7jx
>>286
いやSwiftがなくなるでしょ
288 :
デフォルトの名無しさん
2016/01/01(金) 18:36:47.86 ID:S4tjwpf+
Appleがなくなるよ
iPhone 6S、Apple Watch、iPad Pro、Apple TV全部コケてるし
289 :
デフォルトの名無しさん
2016/01/01(金) 18:39:17.26 ID:fzlqnlAB
やべー俺それ全部買ってるわ
290 :
デフォルトの名無しさん
2016/01/17(日) 22:59:09.26 ID:UWpoaTz9
Objective-CってCから入ると訳わかめだけどオブジェクト志向言語から入るとめっちゃ分かりやすいな
291 :
デフォルトの名無しさん
2016/01/18(月) 00:33:34.30 ID:yOJjOSXj
 


Google Adsenseだけで家族を養ってる俺が通りますよ




 
292 :
デフォルトの名無しさん
2016/01/18(月) 01:48:44.45 ID:WFEJ4wV5
>>290
Swiftとかいう意識高い系言語()よりはよっぽどシンプルだからなObjective-Cは
293 :
デフォルトの名無しさん
2016/01/18(月) 04:20:58.50 ID:9EgVfl4X
たまに生Cの制限でめんどいことがあるので(blocksわかりづらー)
Cの方を整理してくれーとは思ったりする。

swiftおまえは座ってろ。
294 :
デフォルトの名無しさん
2016/01/22(金) 17:38:00.09 ID:VWv1F+A1
語学学習用のアプリ(FLNewsBrowser)が動かなくなってたので公開されているソース
http://nsek.net/SYW/software/download/FLSources.dmg
を基にしてなんとか改変をしてみようとコンパイルできるとこまで持っていったのですが、
deprecated警告の嵐でマトモに機能しません。
deprecatedなclass/APIの代替手段を知りたい時はどうやって調べるのが適切なんでしょうか?
Appleのサイトには碌に載ってないように見えますが。
(環境は Xcode6.2, Mavericks 10.9.5 です)
295 :
294
2016/01/22(金) 21:11:20.00 ID:VWv1F+A1
NSMovie を QTMovie に置き換えても、とりあえずBuild出来るだけでダメだった箇所があったのですが、
AVKit/AVFoundation の対応物でなんとかなりました。
ここ↓を参考にしました
https://developer.apple.com/library/mac/technotes/tn2300/_index.html
296 :
デフォルトの名無しさん
2016/01/23(土) 14:52:40.97 ID:leAGheW9
Xcode 7で#errorや#warningに日本語使えなくなったのか?
297 :
デフォルトの名無しさん
2016/01/23(土) 15:42:23.67 ID:88h5UZ6U
>>296
そんなことよりXIBやStoryboardの編集がめちゃ重たくなったのであるが
あとLabelとかにAttributedStrings設定すると画面がピクピクするのであるが

XCode7不安定で泣ける
298 :
デフォルトの名無しさん
2016/01/24(日) 01:27:52.70 ID:oO2UXUzr
最新厨は人柱となってデバッグに徹するのだ
299 :
デフォルトの名無しさん
2016/01/24(日) 09:17:00.13 ID:xZn7WE3F
>>296
We must wtite english
Becose we are Apple programmer!
300 :
デフォルトの名無しさん
2016/01/24(日) 22:05:14.87 ID:MTdyFEhx
>>299
> Becose
301 :
デフォルトの名無しさん
2016/01/25(月) 16:07:25.84 ID:TsQ/lQ2p
>>298
iOSの最新版の機種でデバッグするのにどうしても必要になるのがなー
302 :
デフォルトの名無しさん
2016/02/05(金) 13:53:43.10 ID:xVGnBx0l
-(id)init
{
[super init];
student = 2
teacher = 2
return self;
}
これどういう意味?
303 :
デフォルトの名無しさん
2016/02/05(金) 15:35:00.34 ID:B/Uu+ljn
>>302
スーパークラスのinitを呼ぶ
student、teacherというインスタンス変数にそれぞれ2を代入
という形でインスタンスを初期化
初期化したインスタンスをを返す

という意味
304 :
デフォルトの名無しさん
2016/02/05(金) 18:32:58.52 ID:PpryQyj4
>>302
なにかを継承したクラスのinitメソッドを書き換えた例だと思うので
まず、親クラスたちがなにしてんのかわからないからお約束として
[super init]で親クラスが普段やってる初期化を完了させる。
初期値としてインスタンス内の変数にstudent = 2teacher = 2をセットする
return selfで自分自身というかここでイニシャライズした
インスタンス自身の存在するポインタを返す。
(alloc,initされたインスタンス自体が出力される)
305 :
デフォルトの名無しさん
2016/02/05(金) 19:50:54.72 ID:uPSLYE8i
つーか間違ってんじゃんw

- (id)init
{
self = [super init];
return self;
}

こうだろ。
306 :
デフォルトの名無しさん
2016/02/05(金) 20:11:57.25 ID:uPSLYE8i
Objective-Cは引数が二つ隠れてて、仮にそれを省略しないで書くと

- (id)init:(id)self cmd:(SEL)_cmd
{
self = [super init];
return self;
}

引数で渡されたself(id型のポインタ)に[super init]の戻り値を代入してreturnしてる。
superは親クラスの実装を呼ぶ時のキーワードで、
selfがインスタンスならsuperもインスタンス、selfがクラスならsuperもクラス。
307 :
デフォルトの名無しさん
2016/02/05(金) 20:13:53.96 ID:uPSLYE8i
id型のポインタって言うとだめか、id型自体がポインタ型だ。
308 :
デフォルトの名無しさん
2016/02/06(土) 00:32:42.46 ID:FsvYHdeC
Carbonってどんな風に死んだんだっけ?
309 :
デフォルトの名無しさん
2016/02/06(土) 01:02:53.70 ID:is/TI+L6
32bitがMacではユーザーが誰も気付かぬうちに
いつのまにか死んでたのといっしょな感じ
310 :
デフォルトの名無しさん
2016/02/06(土) 02:02:01.31 ID:sZMQlj1p
>>308
wikipedia見れば一発ですぞ。
OS9と併用していた時代の遺物
311 :
デフォルトの名無しさん
2016/02/06(土) 02:05:35.04 ID:sHcOYHMi
Carbonも32bit専用APIもまだ使う機会があるので俺の中では死んでない
312 :
デフォルトの名無しさん
2016/02/06(土) 20:07:12.60 ID:HQDIs5Ib
何に使うの?
313 :
デフォルトの名無しさん
2016/02/06(土) 22:04:06.45 ID:64Pydz+a
Cocoaも遺物と呼ばれる日が来るのだろうか
314 :
デフォルトの名無しさん
2016/02/08(月) 18:36:07.83 ID:crxuI7z8
次は何になるの?
315 :
デフォルトの名無しさん
2016/02/09(火) 11:44:34.00 ID:TANoAkWo
Objective-CでiPhoneアプリ作っています初心者です。
質問させてください。

UIDatePickerのUIDatePickerModeCountDownTimerを
textField.inputView = datePicker;
という形でキーボードの代わりに出てくるように使っています。

このUIDatePickerModeCountDownTimerモードはバグが有るようで
ロールの初回選択時は反映されず2回めの選択から処理がなされるようです。

UIDatePickerのUIDatePickerModeCountDownTimerのバグ
http://ameblo.jp/h-jey/entry-11947729143.html

上記ページに対処が載っていたのですが知識も理解も足りないようでうまく行きません。
対処法を教えて頂けると助かります。

よろしくお願いします。
316 :
デフォルトの名無しさん
2016/02/09(火) 16:10:24.61 ID:A9UbN6Hm
ipv6対応しなきゃとエルカピたんにあげて今までのアプリそのまま動かしたんだけど全然エラーにならない
見たこともない
これって本当に対応必要なの?
317 :
デフォルトの名無しさん
2016/02/11(木) 14:43:45.61 ID:XMiUaI25
allocって、クラスメソッドしか使えないんですか?
318 :
デフォルトの名無しさん
2016/02/11(木) 14:55:44.06 ID:UQTXGuAz
というかallocはクラスメソッドだからね
319 :
デフォルトの名無しさん
2016/02/11(木) 15:09:56.97 ID:XMiUaI25
インスタンスメソッドの場合、どうすればいい?
320 :
デフォルトの名無しさん
2016/02/11(木) 15:13:17.32 ID:UQTXGuAz
すまんいってる意味がわからん
321 :
デフォルトの名無しさん
2016/02/11(木) 15:22:48.86 ID:T48duRlP
インスタンス作ってからさらにメモリ確保するのか……
322 :
デフォルトの名無しさん
2016/02/11(木) 15:25:22.21 ID:H0VUG8UT
アロケイトをおまじないと思ってるんだろうな
323 :
デフォルトの名無しさん
2016/02/11(木) 21:26:16.88 ID:BYhgKPkM
> allocって、クラスメソッドしか使えないんですか?
> インスタンスメソッドの場合、どうすればいい?

もしかしてallocという名前のインスタンスメソッドを定義したいのかな
324 :
デフォルトの名無しさん
2016/02/11(木) 22:58:08.81 ID:fwp65K1P
id anotherInstance = [[[self class] alloc] init];
325 :
デフォルトの名無しさん
2016/02/11(木) 23:17:18.98 ID:UQTXGuAz
>>324ってこと?
だとしてもallocがクラスメソッドであることに変わりはないけど
というかallocの役割的にクラスメソッド以外あり得ない
326 :
デフォルトの名無しさん
2016/02/11(木) 23:21:52.27 ID:fwp65K1P
自分をディープコピーして返すとかじゃね?
もっと状況を言わないと一瞬意味不明だよな。
327 :
デフォルトの名無しさん
2016/02/12(金) 21:53:10.32 ID:e+FqND6X
>>317,319
クラスとインスタンスは別のオブジェクトだぞ。
同じ場所に書くから初心者にはわかりづらいかもだが。
クラスとは、言ってみればヘッダさえimportすれば使えるグローバルなオブジェクトだ。
メッセージ式のレシーバにクラスを指定すれば、受信側のクラスメソッドのselfにはクラスオブジェクトのポインタが渡される。
レシーバをインスタンスにした場合は、受信側のインスタンスメソッドのselfはインスタンスのポインタだ。
これでわかっただろ?
328 :
デフォルトの名無しさん
2016/02/12(金) 23:45:39.74 ID:1dW5OVx0
1ミリも通じてないような気がする
正しいんだけど
329 :
デフォルトの名無しさん
2016/02/12(金) 23:52:08.56 ID:4JY+EnsL
Objective-Cではクラスは最初に実体があって
その実体自体に「よし、おまえのコピーを作れ」とメッセージを送ることで
インスタンスを作らせるからな。
雛形とかテンプレとかそういうのですらなくて
自分のインスタンス作る機能まで含めたファクトリクラスだし。
330 :
デフォルトの名無しさん
2016/02/13(土) 00:17:11.95 ID:rTriq7hd
>>327
理解してるやつにはわかるが、わかってないやつには?って感じかと
331 :
デフォルトの名無しさん
2016/02/13(土) 00:28:32.71 ID:CI39+OQj
でもなあ、ポインタを隠蔽しないで理解した方がいいと思うんだよな。
Cocoaがすでに隠蔽してないし。
332 :
デフォルトの名無しさん
2016/02/13(土) 02:06:13.26 ID:kN1Baeh/
いや、そこじゃなくてオブジェクト解ってない奴相手にレシーバとかメッセージ式とかのobjc用語使いまくってるところだろ
333 :
デフォルトの名無しさん
2016/02/13(土) 02:19:35.33 ID:CI39+OQj
そこから解ってないのはObj-Cに限らず厳しいな。
334 :
デフォルトの名無しさん
2016/02/13(土) 09:31:39.36 ID:Fs+/DlzW
メソッドくらいはわかるだろ?
これやれ!って、言ってるだけだし
335 :
デフォルトの名無しさん
2016/02/13(土) 10:22:37.16 ID:rTriq7hd
Objective-CってCにちょっとオブジェクト指向追加しただけのシンプルな言語
難しくないだろ
メッセージっつっても一般的なオブジェクト指向言語のメソッド呼び出しと考えても
使用上は差し支えないし、メッセージ式の文法も最初は面食らうかもしれないが、
慣れれば、なんてこたぁない
最近Appleがゴリ押ししてる意識高めの言語よりよっぽど簡単
336 :
デフォルトの名無しさん
2016/02/13(土) 10:52:18.37 ID:CI39+OQj
同意。「メッセージ送信」->「メソッド呼び出し」と言い換えても問題ない。
337 :
デフォルトの名無しさん
2016/02/13(土) 13:02:08.14 ID:SL3t4ard
obj-cはネストしてメソッド呼び出す時の[A :[B:[C:[D pp]]]]みたいなのが
しんどいのがな。それ以外は好き。

elixirのバイプライン演算子をobj-cにつけてくんないかな。
返り値を右辺のメソッドの第一引数に渡す演算子なんだけど

[D pp] |> [C:] |> [B:] |> [A:]

みたいに書ける。
338 :
デフォルトの名無しさん
2016/02/13(土) 14:11:22.13 ID:uZC7UMRg
メソッド呼び出しは、「おうクラスA、てめえBメソッドしろや」なんたけど、
メッセージ呼び出しは、「クラスA、こんにちは、Bをやってくれないかい?」なんだよね

丁寧だからネストするとちょっとうるさい見た目になるけど、
メソッドチェーンみたいな「Bした後、Cして、Dやれよ?ああん?」みたいな暴力さがない
途中でnilを返せばそれ以上詰めたりしないしね
339 :
デフォルトの名無しさん
2016/02/13(土) 14:50:30.00 ID:5qx3/3HE
ClassとInstanceの関係ってC++やJava経験して来た人とかだとObjective-Cのオブジェクトは理解しくにそうだよな
Smalltalkやっとくと全然苦にならんのだけど。
Swiftでその辺隠蔽しても理解しやすいようにしたいのがAppleの意向なんだろうけど、MacとiOS開発ってSmalltalk慣れしたCプログラマ向けってのがおいらの所感
340 :
デフォルトの名無しさん
2016/02/13(土) 15:18:30.45 ID:rTriq7hd
メッセージ式のネスト、最初は変態的だと思ったけど慣れたらどうってことなくなったな
Lispやってる人なんかは特にハードル低かったんじゃなかろうか
341 :
デフォルトの名無しさん
2016/02/13(土) 23:22:04.23 ID:0LHJAzgL
ロボットがいて、受け付けるコマンドリストがあって
「おい、掃除しとけ」って命令すると"掃除"してくれる。
使えるロボできたら中の掃除内容変えたりして使い回す。

…Objective-Cのクラス周りのイメージってなんかそんな感じだなーと思ってるので
"プログラミング言語"実務側からの
「クラスとは構造体に関数がついたもの」「メソッドとはつまり関数」
とか"自動車とはすなわち馬なし馬車である"ぐらい変な解説に見えて
ウボァーって変な声出そうになったりする。
342 :
デフォルトの名無しさん
2016/02/13(土) 23:50:23.78 ID:YN1UCyzp
>>340
前置記法じゃないから違和感ある

それはさておきJavaしか知らなくてクラス指向がオブジェクト指向の本流だと勘違いしてる人にはObjective-Cは変に見えるのかねえ
343 :
デフォルトの名無しさん
2016/02/14(日) 00:15:38.63 ID:PyhtsQ/D
>>341
Objective-Cは、クラスを外から見たらそのロボットで、
クラス内部の実装は、その下の変な解説って感じ。
クラスの中には、インライン関数どころかインラインアセンブラまで使うクラスがあったりで、
@interfaceは整然としたロボットだけど、内部では囚われたカッパ達が・・・

いや、もちろんそんなハードな仕事するクラスばかりじゃないけどね。
344 :
デフォルトの名無しさん
2016/02/14(日) 02:52:58.16 ID:SS1KUmSL
最近obj-cがまた順位上げてるみたい
やっぱりobj-c3.0待ちだよな
345 :
デフォルトの名無しさん
2016/02/14(日) 08:11:15.49 ID:HUICKMOI
>>344
当然でしょ
Swiftに移行する必要性がないから
Appleのゴリ押しだけが推進力だからな
346 :
デフォルトの名無しさん
2016/02/14(日) 16:21:32.42 ID:D0Yqf9Kh
>順位
Swiftを試した人の中の一定数がObjCへ出戻って来た影響じゃないか
347 :
デフォルトの名無しさん
2016/02/15(月) 12:04:03.75 ID:o1yeVmO9
老害だな
根絶やしにしろ
348 :
デフォルトの名無しさん
2016/02/15(月) 21:23:46.60 ID:D1MmfeIO
Objective-C使い=老害という思い込み
349 :
デフォルトの名無しさん
2016/02/16(火) 04:14:06.30 ID:cX0cXTkh
Objective-Cはなんつーか"ちょうどいい"ポジションにいるので
ここからユーザーに移行を促すのは大変だよなぁ…
ほぼApple専用でなかったら、これいまのJavaの位置だったろ?ってぐらい
わかりやすいC+オブジェクト指向っぷりだし。
350 :
デフォルトの名無しさん
2016/02/16(火) 07:44:17.75 ID:T8OiCwB/
>>349
>ほぼApple専用でなかったら、これいまのJavaの位置だったろ?ってぐらい
>わかりやすいC+オブジェクト指向っぷりだし
わかりやすいよね
351 :
デフォルトの名無しさん
2016/02/16(火) 08:11:08.67 ID:5UqE7wWz
こんないい言語がApple専用なのは本当に惜しい
352 :
デフォルトの名無しさん
2016/02/16(火) 09:16:19.80 ID:2VnsGNUc
専用では無いんじゃないの? 
ランタイムはオープンだよね。
353 :
デフォルトの名無しさん
2016/02/16(火) 09:31:07.69 ID:cb7bLrdU
ランタイムはどうか知らんがコンパイラはGNUが昔作った気がする
WinはおろかLinuxですら使う人口が少なかっただけで
354 :
デフォルトの名無しさん
2016/02/16(火) 09:32:29.42 ID:AUXqcpoN
CoreFoundationやNS系がApple専用だしなあ
AppleのソフトにはWindows用にもそういったdllが入ってたりするから移植されてるんだろうけど、SDKとしては公開されてないし
NSのつかない純Objective-Cなライブラリ体系もあるにはあるしオープンだけど、実用上は全く嬉しくないだろ
355 :
デフォルトの名無しさん
2016/02/16(火) 10:47:44.05 ID:L1d/icCk
smalltalkがもうちょっと一般的だったらObjective-Cも入りやすかったかもね
356 :
デフォルトの名無しさん
2016/02/16(火) 17:16:47.78 ID:cb7bLrdU
スクイークが変態環境じゃなかったら良かったな
357 :
デフォルトの名無しさん
2016/02/16(火) 18:20:06.54 ID:tCTD475N
>>354
昔のGNUにはNSがなかったけど、後で付け足した
358 :
デフォルトの名無しさん
2016/02/16(火) 18:40:44.24 ID:PkVX6tWn
swiftで実装したFoundation開発中だけどgithubにリポジトリ置いているってことは
次のFoundationは最初からクロスプラットフォームでオープンってことかね
359 :
デフォルトの名無しさん
2016/02/16(火) 20:29:36.88 ID:uEcJx/Is
>>358
NSData.swiftのコードなんか眺めてると、OSがLinuxの場合のimportの記述もあったりするんで
クロスプラットフォームのことも想定はしている感じだな。
360 :
デフォルトの名無しさん
2016/02/17(水) 10:38:58.04 ID:NWAA8GlY
iOS8切れないプロジェクトはobjCしかない。
そのうち3.0出るでしょ。
361 :
デフォルトの名無しさん
2016/02/17(水) 14:48:04.74 ID:4kmV8BWa
>>360
iOS7も切れないのに8と9の機能使いたいとか言うともうソースコードが大変 orz
362 :
デフォルトの名無しさん
2016/02/17(水) 16:57:00.36 ID:243ZLeyW
Foundationのみでどこまでの事が出来るだろう。通信系とデータベース系のフレームワークもマルチプラットフォームで用意してくれればありがたい。
363 :
デフォルトの名無しさん
2016/02/17(水) 22:23:22.16 ID:HWKatSeL
明確な必要性がないのに言語を変えようとしたら、そりゃ歪みは生じるわな
364 :
デフォルトの名無しさん
2016/02/18(木) 22:02:44.40 ID:ThW4WIO9
メッセージ式好き
メッセージ式に返り値使うの嫌い
[[obj alloc] init]ですら嫌い
365 :
デフォルトの名無しさん
2016/02/18(木) 22:19:30.54 ID:ncbtGfJT
[obj new];
366 :
デフォルトの名無しさん
2016/02/18(木) 22:46:51.93 ID:ThW4WIO9
>>365
newは好き
ほんと好き
367 :
デフォルトの名無しさん
2016/02/19(金) 00:56:12.38 ID:u0wtznhk
Objective-Cで使える公開鍵暗号方式のライブラリないですか?
RSAが使えてBSDライセンスのものを教えてください。
368 :
デフォルトの名無しさん
2016/02/19(金) 11:41:19.39 ID:0R2jEsLy
>>367
普通のCのライブラリでもいいじゃんよー
369 :
デフォルトの名無しさん
2016/02/19(金) 14:00:51.88 ID:hw/X0Y/j
>>367
っ OpenSSL

最近は Nettle が熱い
370 :
デフォルトの名無しさん
2016/02/19(金) 14:41:54.17 ID:4FbEbwSw
開発元はGNUか...寒いな > nettle
一昔前ならGNUなら信頼出来ると思ってたけど、最近のOSS財団はメンテが滞ること多数
371 :
デフォルトの名無しさん
2016/02/19(金) 17:32:58.13 ID:hw/X0Y/j
最近っつっても20年くらい前からだろ
372 :
デフォルトの名無しさん
2016/02/19(金) 18:03:02.88 ID:v1bX/syV
ここ5年(盛って10年)くらいじゃない?
金がないからメンテ出来ませんってOSSが増えたの
20年も遡ったら興味ある人がいなくてメンテ出来ませんって感じだった気がする

AppleがObj-CでSSL実装作らねーかな
openSSLはバグ指摘多くてイヤになったろ
373 :
デフォルトの名無しさん
2016/02/19(金) 21:23:00.58 ID:dtTvn/Wc
374 :
デフォルトの名無しさん
2016/02/20(土) 05:51:57.06 ID:KGb8ZGMM
> RSAが使えてBSDライセンス
何に使うつもりなんだろう
375 :
デフォルトの名無しさん
2016/02/23(火) 06:47:28.40 ID:Ic+Y0zem
objective-c#まだかな・・
376 :
デフォルトの名無しさん
2016/02/23(火) 08:57:37.54 ID:EdYfjdOn
いやC#はちょっと。。C++よりはマシかもしれんが
377 :
デフォルトの名無しさん
2016/02/26(金) 09:04:15.07 ID:fCSgBQdM
swiftからoptional型やmapを省いた
swift--
だろ
378 :
デフォルトの名無しさん
2016/02/26(金) 10:23:32.68 ID:AEppvgmX
素直にObjective-C without Cの言葉通り、静的型付きSmalltalkが出てればな
379 :
デフォルトの名無しさん
2016/02/26(金) 10:46:13.53 ID:EcLgMPIl
Smalltalk++
Smalltalk#
380 :
デフォルトの名無しさん
2016/02/26(金) 11:09:00.81 ID:B7GtwkvN
Smalltalk.NET
381 :
デフォルトの名無しさん
2016/02/27(土) 07:43:20.45 ID:zwwRZ2hM
記述中のこの安心感はすごい。
382 :
デフォルトの名無しさん
2016/02/29(月) 11:46:19.31 ID:+6pgi266
NSObject

Zukei

Sankaku

継承していった場合、Zukeiっていらないですよね?
Zukeiって何に使うの?
383 :
デフォルトの名無しさん
2016/02/29(月) 11:58:49.67 ID:rONM9FLT
>>382
そんなの設計者によるとしか。
384 :
デフォルトの名無しさん
2016/02/29(月) 21:32:03.37 ID:g6U0QDaU
Shikakuを定義するときじゃ無いかな
385 :
デフォルトの名無しさん
2016/02/29(月) 22:33:15.39 ID:AGSlA4Px
>>382
Zukeiで実装されてる機能もいらないまたは一から作るならいらないね
386 :
デフォルトの名無しさん
2016/03/01(火) 10:05:50.59 ID:Y4Aw5jZp
勇者と僧侶がいて、2人とも勇者だったら困るだろ?
387 :
デフォルトの名無しさん
2016/03/01(火) 19:28:43.56 ID:oKiiXTzA
NSColorが持ってるCGColorプロパティっていつのまにINNER_POINTERになったんだ。
これインナーポインターってことは、NSColorが自動的にリリースしてくれるってことでいいのかな。
388 :
デフォルトの名無しさん
2016/03/02(水) 07:36:13.29 ID:vYYDvy9N
>>378
それがSwiftだろw。Smalltalk/Xみたいに
Smalltalk部分とCの関係を逆転させればよかったのにな。
389 :
デフォルトの名無しさん
2016/03/02(水) 11:33:42.75 ID:6RTODWst
initWith と 変数宣言って何が違うの?
390 :
デフォルトの名無しさん
2016/03/03(木) 07:33:32.75 ID:v0X4WZo1
変数宣言は単に箱用意するだけじゃないの
391 :
デフォルトの名無しさん
2016/03/03(木) 11:22:52.73 ID:sxVc5uct
initWithは?
392 :
デフォルトの名無しさん
2016/03/03(木) 11:34:11.40 ID:LQKVhEqg
インスタンスメソッドだ。
393 :
デフォルトの名無しさん
2016/03/03(木) 13:58:32.20 ID:jykHRqX5
// Swift
let s = self.window!.rootViewController as! UISplitViewController
let n = s.viewControllers[s.viewControllers.count-1] as! UINavigationController
n.topViewController!.navigationItem.leftBarButtonItem = s.displayModeButtonItem()


// Objective-C
id s = self.window.rootViewController;
id n = [s viewControllers][[s viewControllers].count-1];
[n topViewController].navigationItem.leftBarButtonItem = s.displayModeButtonItem;
394 :
デフォルトの名無しさん
2016/03/03(木) 15:01:47.17 ID:LQKVhEqg
s, nはid型だから、メソッド呼ぼうにもXcodeに注意されるぞ。
395 :
デフォルトの名無しさん
2016/03/03(木) 17:29:19.39 ID:NI2A9sOU
>>389
C言語の文法レベルで変数を宣言してるか
フレームワークレベルでクラスに命令して作らせてるかじゃね?

銀行に借金頼みに行くのと
かーちゃんに「金貸して」では
前者が厳格で融通が利かないけど細かい問題が少ないのに対して
後者が融通が利いて楽だけど相互の了解で成り立ってる的な。
396 :
デフォルトの名無しさん
2016/03/04(金) 07:50:35.47 ID:A7nrOp7k
>>393
そのObjective-Cの2行目のメッセージ式が連続してるのって
どういう意味?
そんな書き方許されるんだっけ
(メッセージ式のネストのこと言ってるんじゃないからね)
397 :
デフォルトの名無しさん
2016/03/04(金) 12:15:52.50 ID:ws81OHPW
>>396
配列の添え字アクセス。
int index = [s viewControllers].count-1;
id n = [s viewControllers][index];
398 :
デフォルトの名無しさん
2016/03/04(金) 12:39:05.31 ID:JDwO95i7
UISplitViewController *s = …
UINavigationController *n = …

こう宣言しないとだめだよ。
399 :
デフォルトの名無しさん
2016/03/05(土) 00:53:47.62 ID:Y+yze1Qk
>>397
いやだとしてもおかしいでしょ
配列の添字をメッセージ式の戻り値にするならかならずブラケットが二重になるはず
400 :
デフォルトの名無しさん
2016/03/05(土) 01:23:19.93 ID:y3HtH6T+
>>399
???
401 :
デフォルトの名無しさん
2016/03/05(土) 01:32:10.69 ID:Y+yze1Qk
>>400
えっ?もしかして[s viewControllers]の戻り値が配列だとして、
[s viewControllers]を配列名として記述できるってこと?
402 :
デフォルトの名無しさん
2016/03/05(土) 01:34:19.82 ID:Y+yze1Qk
だとすると、例えばC言語でも、
hoge()の戻り値が配列(ポインタ)だとして、
hoge()[index]とかやったら添え字アクセスできちゃうわけ?
今手元に環境がないから試せないんだけど
403 :
デフォルトの名無しさん
2016/03/05(土) 01:35:06.51 ID:Y+yze1Qk
やるとしたら
(hoge())[index]
か?
できたとしてもこんな変態的な表現見たことない…
404 :
デフォルトの名無しさん
2016/03/05(土) 01:35:30.03 ID:5URH9rpB
>>401
[s viewControllers] は NSArray*返すんだからあってるじゃん
405 :
デフォルトの名無しさん
2016/03/05(土) 01:36:18.69 ID:zjxr8oeE
UISplitViewController *s = (UISplitViewController *)(self.window.rootViewController);
UINavigationController *n = (UINavigationController *)(s.viewControllers[s.viewControllers.count - 1]);
n.topViewController.navigationItem.leftBarButtonItem = s.displayModeButtonItem;

こうだな
406 :
デフォルトの名無しさん
2016/03/05(土) 01:38:21.94 ID:5URH9rpB
NSArray* array=[s viewControllers];
って時に
array[index] は [array objectAtIndex:index]になるんよ
コンパイラの方で補間してくれてる。
同じように
NSDictionary* dic;にたいして
dic[@"key"] は [dic objectForKey:@"key"]って読み替えしてくれるよ
407 :
デフォルトの名無しさん
2016/03/05(土) 01:40:23.17 ID:zjxr8oeE
UISplitViewController *s = (UISplitViewController *)([[self window] rootViewController]);
UINavigationController *n = (UINavigationController *)([[s viewControllers] objectAtIndex:[[s viewControllers] count] - 1]);
[[[n topViewController] navigationItem] setLeftBarButtonItem:[s displayModeButtonItem]];

古い書き方したらこうか
408 :
デフォルトの名無しさん
2016/03/05(土) 01:41:05.38 ID:Y+yze1Qk
>>406
うん、そこまではわかる
メッセージ式の引数をダイレクトに配列変数名として[]による要素アクセス
しちゃうなんていうアクロバティックな表現見たことなくてさ
409 :
デフォルトの名無しさん
2016/03/05(土) 01:43:00.37 ID:Y+yze1Qk
まあ、わかるとは言ったけど、>>406も驚きだわ
今のコンパイラはそのレベルまで補完してくれるんだね…
バグの原因になりそうだけど
410 :
デフォルトの名無しさん
2016/03/05(土) 01:46:11.56 ID:zjxr8oeE
ていうかこのサンプルコード?
self.windowってことは、UIViewのサブクラスの中から
UINavigationControllerのleftBarButtonItem変更してるんか
かなり糞コードな気が
411 :
デフォルトの名無しさん
2016/03/05(土) 01:50:46.16 ID:Y+yze1Qk
>>393
つーか、メッセージ式の戻り値でダイレクトに後置[]で要素アクセスしちゃうのもアレだけど、
Objective-Cにおいてオブジェクトのメンバーをドットで直接参照するなんてのも
書き方としてあり得るの?
412 :
デフォルトの名無しさん
2016/03/05(土) 01:52:24.95 ID:Y+yze1Qk
しかも、仮に強いて直接参照するとしても演算子は->じゃない?
謎が多すぎる
413 :
デフォルトの名無しさん
2016/03/05(土) 01:56:08.96 ID:zjxr8oeE
ドットはメンバーにアクセスしてるんじゃなくてプロパティのシンタックスシュガー
配列辞書の[]は最近だけどドット記法はだいぶ前からある


[o hoge] は o.hoge
[o setHoge:h] は o.hoge = h
と書ける

->とは全然別物
414 :
デフォルトの名無しさん
2016/03/05(土) 02:05:55.05 ID:Y+yze1Qk
>>413
マジか…
Objective-Cらしからぬ表現が今のコンパイラでは可能なのね
ちょっと衝撃だわ
Cocoaプログラミングしばらくやってなかったツケが回ってきてるわw
415 :
デフォルトの名無しさん
2016/03/05(土) 02:13:33.21 ID:Y+yze1Qk
思い出してきたが、@propertyってちょうどやらなくなったくらいで出てきた気がする
だいぶ昔だよね確かにorz
416 :
デフォルトの名無しさん
2016/03/05(土) 02:28:25.53 ID:Y+yze1Qk
やっぱAppleがObjective-Cを収束する方針なのは残念だわ
(Swiftが軌道に乗るのかは微妙だけど)

世界初のWebブラウザもObjective-Cで書かれたんだよね
https://www.w3.org/History/1991-WWW-NeXT/Implementation/
417 :
デフォルトの名無しさん
2016/03/05(土) 02:30:28.15 ID:jb1F0oyu
それはかなり前からやってないことにならないか?
今はジェネリクスとかNonNullableとかあるで。
418 :
デフォルトの名無しさん
2016/03/05(土) 02:33:47.98 ID:y3HtH6T+
かなり古いところで知識が止まってる人やったんやな。
419 :
デフォルトの名無しさん
2016/03/05(土) 02:47:18.67 ID:Y+yze1Qk
>>417
やばい、またCocoaプログラミングやりたくなって来た
今からまたObjective-C勉強しなおしても無駄にはならないかな

>>418
はい、勉強します。。。
420 :
デフォルトの名無しさん
2016/03/05(土) 02:54:21.39 ID:5URH9rpB
>>419
つか今時のObjective-cめちゃ楽しいよ
swiftの方が記述がキモイ(あそこまでやるならML系まっしぐらにして欲しい)ので俺はイヤだわ
421 :
デフォルトの名無しさん
2016/03/05(土) 02:54:51.89 ID:y3HtH6T+
>>5
> Objective-C Literals ― Clang 3.9 documentation
> http://clang.llvm.org/docs/ObjectiveCLiterals.html

今の Obj-C はいろいろなリテラルが導入されてるんやで。
422 :
デフォルトの名無しさん
2016/03/05(土) 03:00:27.20 ID:Y+yze1Qk
>>420
>>421
真夜中なのに久々にワクワクしてきたw
いろいろ漁ってたら前に買った詳解Objective-C2.0が出てきた
2008年6月1日初版第1刷って書いてある。。
でもまずは基礎をちゃんとやり直さないと今時のObjective-Cも楽しめないよね
がんばろ
ありがとう!
423 :
デフォルトの名無しさん
2016/03/05(土) 03:29:49.20 ID:Y+yze1Qk
>>421
NSNumberのリテラルはさすがに最近の話ですよね
自分の無知を痛感してきた
これって内部実装はマクロ的に組まれてて数値の範囲はLongLongやDoubleまで
あらゆる数値が可能なのかな
それともコンパイラがやってくれてるんですかね
424 :
デフォルトの名無しさん
2016/03/05(土) 03:49:29.29 ID:y3HtH6T+
NSNumber リテラルは2012年の Clang 3.1 からあるで。
425 :
デフォルトの名無しさん
2016/03/05(土) 04:09:14.03 ID:Y+yze1Qk
そうですか…
もはやブランクというレベルじゃない気がしてきましたね
ノリノリでやってた時って、まだProject BuilderとInterface Builderの時代だったし…
でもやっぱり楽しいですねObjective-Cって
426 :
デフォルトの名無しさん
2016/03/05(土) 08:30:43.19 ID:xdiHToCv
(おれ、1990年代頭にK&RでC学んだから、ずっとポインタは整数型だと思ってて
いつのまにかポインタ型ってのになってるの2010年ごろまで知らんかったでw)
427 :
デフォルトの名無しさん
2016/03/05(土) 09:33:32.85 ID:C6PXQEiT
Objective-Cはここ数年で劇的に変わったからな。
といかお前ら絶対Objective-C 2.0とか知らないだろ。

2010年:Objective-C 最速基礎文法マスター
http://d.hatena.ne.jp/fn7/20100203/1265207098
2015年:Objective-C 2.0 基礎文法最速マスター
http://marycore.jp/prog/objective-c/basic-syntax/
428 :
デフォルトの名無しさん
2016/03/05(土) 09:40:03.49 ID:y3HtH6T+
Obj-C 2.0 なんて 9 年前の言葉持ち出してきてどうした
429 :
デフォルトの名無しさん
2016/03/05(土) 09:57:04.10 ID:C6PXQEiT
たしかにObjective-C 2.0以前にXcode側の対応が充実したって言ったほうがいいかもな。
あとマイナーアップデートもちょくちょくあった気がする。
@implementation側でインスタンス変数宣言出来るようになったし
ジェネリックスも最近入ってきた。
430 :
デフォルトの名無しさん
2016/03/05(土) 10:02:21.11 ID:xdiHToCv
>>427
上でも出てるが詳解Objective-C2.0(萩原本)は2008年やで。
俺もcocoaやろうと買ってて、それを2009年のiPhone開発解禁で
本格的に読み始めたから、基本的にiOSやってるやつはみんな2.0からやで。
431 :
デフォルトの名無しさん
2016/03/05(土) 11:55:02.65 ID:UYtB00OI
Objective-Cじゃダメな理由って何なのそれ?
432 :
デフォルトの名無しさん
2016/03/05(土) 12:29:52.33 ID:jb1F0oyu
>>416
あと2.0?になってからpublicとかprivateキーワードも使わなくなったよね。

ヘッダファイル記載したプロパティはpublic
.m側にカテゴリとして記載したプロパティがprivateみたいな方針が標準になった

syhthsizeとかも直接使わなくなってプロバティを宣言すると裏で勝手に
_変数 がつくられてsetterとgetterが自動生成されるとか
暗黙的なことがごちゃごちゃ増えたね。
後から入った人にはマジカルすぎるかもしれない
433 :
デフォルトの名無しさん
2016/03/05(土) 13:18:46.27 ID:Y+yze1Qk
少しずつ読み進めてますが、Objective-Cらしくない感じがしちゃうけど@propertyは便利ですね

ただ、
@public
@private
@protected
はわかりやすかった気がするけど、ヘッダファイルにprivateメンバの情報を
載せないで済むようにしたかったってことなのかな
434 :
デフォルトの名無しさん
2016/03/05(土) 14:18:12.35 ID:mFk1f1pP
ヘッダに書くのはパブリックメソッドのみ。これが合理的で非常にわかりやすい。
もっともOOPに適した言語だと思う。
435 :
デフォルトの名無しさん
2016/03/05(土) 14:35:34.86 ID:HF+l0CAH
ここはいつから日記帳になったんだ
436 :
デフォルトの名無しさん
2016/03/05(土) 18:16:16.08 ID:jb1F0oyu
>>435
確かにヘッダ見ればそのライブラリのオープンなメソッドしか見えない
というのはわかりやすい。
437 :
デフォルトの名無しさん
2016/03/06(日) 00:41:20.28 ID:5qJ91+Ie
>>427
NeXTのOpticalDrive版もってましたがなにか?
438 :
デフォルトの名無しさん
2016/03/06(日) 11:35:02.88 ID:g15wMUfE
>>427
2010年の割には随分古い書き方だな。
Objective-C使ったこと無いのにやたらObjective-C叩く奴らはそのページの知識で止まってたりしてな。
439 :
デフォルトの名無しさん
2016/03/10(木) 14:37:18.03 ID:OLUNjZSr
うちは未だに[NSArray arrayWithObjects:@"", nil]とか[NSNumber initWithInteger:0]使ってるコードあるけどな。
テストが面倒なのでTo Modern Objective-C Syntax...機能は使わないという方針なんだよ。
ウォーターフォール型でモバイルアプリ開発始めるとこうなる。
440 :
デフォルトの名無しさん
2016/03/10(木) 17:40:00.03 ID:yfQIYaI+
なんでテストが面倒なの?
441 :
デフォルトの名無しさん
2016/03/11(金) 16:33:44.79 ID:kWA4jyXp
日本のウォーターフォール開発にはエビデンスというものがあってだな。
とりあえず責任のなすりつけあいをするために大掛かりな改修が入ると1からテストし直す所は多いよ
442 :
デフォルトの名無しさん
2016/03/17(木) 01:04:45.68 ID:7hhawqio
> To Modern Objective-C Syntax...機能
ああXcodeの一括置換機能か
意味がわかった
443 :
デフォルトの名無しさん
2016/04/06(水) 03:45:31.16 ID:HJm2wRVw
NSMatrixでハマってしまいました、お知恵をお貸しください。
NSMatrixで複数選択した時の選択されている箇所を調べる方法なんですが
NSMatrixのアクションを以下のようにしてみたのですがオン時はうまく行きますがオフ時にNSCellのstateが変わらずオンの値のままになってしまいます。
オフにしてから他のcellの値を変えると適用された値になります。
原因分かりますか?
- (IBAction)choiceMatrix:(NSMatrix *)sender {
 BOOL c1, c2, c3, c4;
 for (NSCell *cell in [sender cells]) {
   switch ([cell tag]) {
    case 0:
     c1=[cell state];
     break;
    case 1:
     c2=[cell state];
     break;
~~~~~~~~
    default:
     break;
   }
 }
 NSLog(@"[%d, %d, %d, %d]",c1, c2, c3, c4);
}
444 :
デフォルトの名無しさん
2016/05/01(日) 14:30:22.53 ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
445 :
デフォルトの名無しさん
2016/05/21(土) 21:08:51.89 ID:oKW2aYRF
iosって標準で何かデータベース使えるの?
androidはsqliteが使えるけど
446 :
デフォルトの名無しさん
2016/05/21(土) 22:23:35.91 ID:CpbYB6Dd
sqlite入ってますよ
447 :
デフォルトの名無しさん
2016/05/22(日) 01:54:16.39 ID:gQDMaR5e
ありがとうございます!
448 :
デフォルトの名無しさん
2016/05/23(月) 11:26:40.41 ID:VJZJx6HE
安心してください
449 :
名無しさん@そうだ選挙に行こう! Go to vote!
2016/07/10(日) 10:00:08.73 ID:mg7VERF+
オーバーライドの意味がわかりません
スーパークラス
メソッドA
サブクラス
メソッドA
サブクラスのメソッドAをオーバーライドします
スーパースラスは、どうやって使うの?
450 :
名無しさん@そうだ選挙に行こう! Go to vote!
2016/07/10(日) 11:33:19.16 ID:BZS6mtB9
[super メソッドA];
451 :
デフォルトの名無しさん
2016/08/08(月) 14:05:28.43 ID:hWjiE75J
__strong
__weak
__unsafe_unretained
__autoreleasing
Obj-C2.0で、これ使いますか?
452 :
デフォルトの名無しさん
2016/08/09(火) 02:55:35.50 ID:MqKY0R2e
使う事もあるよ
453 :
デフォルトの名無しさん
2016/08/10(水) 14:13:19.69 ID:5T/jHI7m
カテゴリって、戻り値しかない関数って思えばいいの?
454 :
デフォルトの名無しさん
2016/08/10(水) 17:39:43.18 ID:62x+4tTI
凄い。全然違う。いわゆる trait
455 :
デフォルトの名無しさん
2016/09/16(金) 11:26:49.35 ID:L/lkPp6y
継承って、C言語の標準関数って思っていいの?
456 :
デフォルトの名無しさん
2016/09/16(金) 11:32:41.83 ID:uFIaMsTW
すまん言いたいことの意味がわからない
457 :
デフォルトの名無しさん
2016/09/16(金) 11:59:46.56 ID:Uoij9LZq
クラスの場合はサブクラス化のこと。多重継承はできない。
プロトコルの場合は多重継承できる。
458 :
デフォルトの名無しさん
2016/09/18(日) 16:19:24.88 ID:9KaldL8I
>>454
トレイトっていわゆるカテゴリだよね
カテゴリって何?
459 :
デフォルトの名無しさん
2016/09/18(日) 16:21:49.97 ID:V608H0Yq
つまんね
460 :
デフォルトの名無しさん
2016/09/18(日) 16:22:34.65 ID:+iC0HZAY
おつおつ
461 :
デフォルトの名無しさん
2016/09/19(月) 06:53:12.40 ID:ze/R6ozd
>>438とか言ってるからどれ程に有識かと思ったら
バズワードでしかObjCの機能を説明できない奴らばかりかよ、、、
462 :
デフォルトの名無しさん
2016/09/19(月) 08:04:00.68 ID:W9V/RaHi
まじでカテゴリとは何かってことか?
既存のクラスに宣言(.h)と実装(.m)を追加するObj-Cのミラクル機能だよ。
例えばNSArrayにobjectAtIndexSafety:を追加する。

oreore.h
@interface NSArray (oreore)
- (id) objectAtIndexSafety:(NSUInteger)index;
@end

oreore.m
@implementation NSArray(oreore)
- (id) objectAtIndexSafety:(NSUInteger)index
{
 if (index < [self count]) {
  return [self objectAtIndex:index];
 }
 return nil;
}
@end
463 :
デフォルトの名無しさん
2016/09/19(月) 17:58:43.86 ID:gQRJTUbC
javaスレでメソッドってなに?って聞いてるようなもんだから
みんな釣りとしてスルーしてた。
464 :
デフォルトの名無しさん
2016/09/19(月) 18:02:17.52 ID:VA/o11o6
Objective-CがsmalltalkとCのハイブリッドなので
僕はカテゴリとかの単語の意味含めてメソッド呼び出しの仕組みとかを理解しやすくするにはsmalltalkを体験すべきだと思うのだけどどう?
465 :
デフォルトの名無しさん
2016/09/19(月) 22:24:00.74 ID:KnX9vMV5
>>464
んー、SmalltalkはObj-Cの [ ] の中身だけでコードを全て記述するような感じの言語で、動的性を学ぶのにいいので
「Smalltalkを体験すべき」っていうのには大筋では賛成。こちら↓はその際の参考まで。

▼Smalltalkをちょっとかじってみたい人のための、チュートリアルまとめ
http://qiita.com/sumim/items/6bed17961bd57daf88a3

でもカテゴリはSmalltalkでは対応するのはトレイトだし、Smalltalkでカテゴリはプロトコルの意味でも使われたり
そのプロトコルもObj-Cのプロトコルとは(名前の由来にはなっているけれど)別物だったりと食い違いもあり
「メソッド呼び出しの仕組み」はともかく、こと「単語(用語)の意味」を知る目的では必ずしもお薦めできない。
466 :
デフォルトの名無しさん
2016/09/20(火) 09:47:32.51 ID:noK0zumc
似てるってだけでハイブリッド(キリっ)とか
頭湧いてんな
467 :
デフォルトの名無しさん
2016/09/20(火) 21:20:03.95 ID:cQ8uMGBS
ObjcのハイブリッドはSmalltailkのコンセプトとC言語の処理系のハイブリッドのことだと思うんだけど
そういう意味ならSmalltalkの思想やコンセプトを理解する価値はある気がする。

でもObjcはそんなに難しい言語でもないしそこまでする必要は無い気もする。
468 :
デフォルトの名無しさん
2016/09/21(水) 15:26:58.49 ID:S1SFikQD
objcらしさはトレンドが早いから今更Smalltalkはどうなのよ
原典の一つではあろうがobjcで学ぶべきじゃね
469 :
デフォルトの名無しさん
2016/09/25(日) 19:25:14.70 ID:+js0BgEk
いつの間にか NSArray<NSString *> *names; みたいな記法が可能に。
470 :
デフォルトの名無しさん
2016/09/25(日) 19:39:59.75 ID:sZGCwOzX
ジェネリクスは去年からだろ
今年はクラス変数(Type Property)が追加された
471 :
デフォルトの名無しさん
2016/10/06(木) 22:17:15.09 ID:Ppn//x8R
すいません、objective-c触れたばっかで全然勝手が分からないんですが、

void play_sound(NSString* str)
{
  NSSound* sound = [NSSound soundNamed : str];
  [sound play];
}
int main()
{
  play_sound(@
472 :
デフォルトの名無しさん
2016/10/06(木) 22:19:20.70 ID:Ppn//x8R
なんか途切れちゃってる...
int main()
{
play_sound(@"ファイル名.mp3");
}
>>471
soundは[sound release];は必要なんでしょうか?
473 :
デフォルトの名無しさん
2016/10/07(金) 00:37:46.25 ID:yL88npXy
2chのバグだろ

書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" を、\" とエスケープすれば、どうだろう?
474 :
デフォルトの名無しさん
2016/10/07(金) 00:40:22.25 ID:X6DZ7p2C
普通&quot;に実体参照でエスケープして書き込むだろ
475 :
デフォルトの名無しさん
2016/10/07(金) 00:46:39.49 ID:X6DZ7p2C
>>471
ちなみにクラスメソッドはコンビニエンスコンストラクタだからreleaseはいらない
poolブロックで開放すると良い
soundの場合再生終了時にね
476 :
デフォルトの名無しさん
2016/10/07(金) 00:48:31.69 ID:A3oY7q9i
test1
477 :
デフォルトの名無しさん
2016/10/07(金) 00:49:01.66 ID:A3oY7q9i
>>473
> 書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。

ホントだ。信じられん……
478 :
デフォルトの名無しさん
2016/10/07(金) 00:55:53.92 ID:UYUTVtAf
>>475

回答あざっす

pool処理ってこんな感じでいいんでしょうか?

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
/--------ここに処理を記述---------/
[pool release];
479 :
デフォルトの名無しさん
2016/10/07(金) 00:58:48.10 ID:X6DZ7p2C
>>478
@autoreleasepool{
}
でいいよ
てかsoundならallocでイニシャライズして好きなタイミングでリリースした方がいいんじゃない
以前のOSではNSSoundのautorelease不具合あったし
480 :
デフォルトの名無しさん
2016/10/07(金) 01:04:41.28 ID:UYUTVtAf
>>479
すいません マジ初心者なんでallocでイニシャライズする部分を具体的に書いてもらえると助かります
objective-c触れたばっかなんで
お手数かけてすみません
481 :
デフォルトの名無しさん
2016/10/07(金) 01:11:24.99 ID:UYUTVtAf
openglいじってて、サウンドもつけたくなり
でもそれだとCocoaFramework必要になって
ほんとはcで済ませたかったんですが、objective-cじゃないとCocoa使えないからということで
ほんとに無知ですんません
482 :
デフォルトの名無しさん
2016/10/07(金) 01:19:10.67 ID:X6DZ7p2C
>>480
NSSoundDelegateで再生終了時のdidFinishPlayingを拾ってリリーすれば良いんじゃない
-(void)playSE{
  NSString*path= @"音パス";
  NSSound *se = [[NSSound alloc] initWithContentsOfFile:path byReference:YES];
  [se setDelegate:self];
  [se play];
}
-(void)sound:(NSSound *)sound didFinishPlaying:(BOOL)aBool{
[sound release];
}
483 :
デフォルトの名無しさん
2016/10/07(金) 01:20:54.04 ID:UYUTVtAf
>>482
凄く分かりやすいです!本当にありがとうございます
484 :
デフォルトの名無しさん
2016/10/07(金) 01:22:54.60 ID:X6DZ7p2C
ゲームかなんか?
それならエフェクト追加とかミキサーで多重再生とかしたくなるだろうから
AudioUnitでやると便利だよ
485 :
デフォルトの名無しさん
2016/10/07(金) 01:29:40.94 ID:UYUTVtAf
>>484
ゲームってわけじゃないんですが
一応ゲーム作るなら情報豊富なdxlib使おうかと思いますし・・・
ほんとに軽くSEほしいなぐらいなんで
でも一応検討します
回答わかりやすかったです 
何回も言ってますけどw本当にありがとうございます
486 :
デフォルトの名無しさん
2016/10/07(金) 01:33:04.00 ID:X6DZ7p2C
そこはdirectXなのかよwww
ドザーなのか
487 :
デフォルトの名無しさん
2016/10/07(金) 01:35:22.75 ID:UYUTVtAf
>>486
windows故障してしばらくosx使ってます
使いたおしたらまたwindows戻ろうかなって(小声
488 :
デフォルトの名無しさん
2016/10/07(金) 01:38:54.58 ID:UYUTVtAf
iOSだと大量のリファレンスそれも日本語の(英語でも一応なんとかなりますけど・・・
があるのにOSXのほうはなかなか見つけるのが難しくて苦労してます(探し方わるいのかもしれんけど)
489 :
デフォルトの名無しさん
2016/10/12(水) 21:41:24.49 ID:fMOTdRji
クラスを配列で作りたいんだけどこれって大丈夫?
@interface myclass : NSObject{
  int kazu;
}
  -(void)set : (int) i;
  -(void)print;
@end
@implementation myclass
  -(void)set : (int) i
  {
    self->kazu = i;
  }
  -(void)print
  {
    printf(”%d\n”, kazu);
  }
@end
int main()
{
  @autoreleasepool
  {
    myclass* obj[3];
    for(int i=0; i<3; ++i)
      obj[i] = [ [myclass alloc]init ];
    for(int i=0; i<3; ++i)
      [obj[i]set : i*10];
    for(int i=0; i<3; ++i)
      [obj[i]print];
  }
  return 0;
}
490 :
デフォルトの名無しさん
2016/10/12(水) 23:42:00.99 ID:GIO3EA35
構造体と配列はARCが効かないからメモリーリークするんじゃなかったっけ?
autoreleasepool抜けた後
-(void) dealloc {} ちゃんと呼ばれる?
491 :
デフォルトの名無しさん
2016/10/13(木) 00:28:51.23 ID:d0+eFHBu
>>490
え、ARC効かないんか・・・
じゃあ[obj[i] release];
しないといけないってこと?
492 :
デフォルトの名無しさん
2016/10/13(木) 00:34:33.56 ID:d0+eFHBu
間違えた
[obj[i] dealloc];ってことになるのか?
493 :
デフォルトの名無しさん
2016/10/13(木) 00:41:30.99 ID:5gkYrLUa
いや、やるとしても
[obj[i] release];
でしょ
メモリー管理のポリシー的にdeallocメソッドは滅多なことでは使わない
494 :
デフォルトの名無しさん
2016/10/13(木) 00:45:19.72 ID:d0+eFHBu
了解、あんまこういうの載ってるとこなくて質問させてもらいました
ありがと
495 :
デフォルトの名無しさん
2016/10/13(木) 00:47:40.63 ID:d0+eFHBu
ってかこういう処理ってobj-cで普通どうやるの?
C++だったらvectorにぶち込むとか
javaだったらガンガンnewしちゃうけど・・・
496 :
デフォルトの名無しさん
2016/10/13(木) 00:54:16.14 ID:d0+eFHBu
(別にvectorにぶち込まなくても普通に配列で作れたわ 恥ずかしい・・・)
497 :
デフォルトの名無しさん
2016/10/13(木) 01:30:12.49 ID:TfTkEqcE
>>489
大丈夫。
myclass* obj[3]; //ポインタ型の配列 省略されてるがstrong
ARC有効なのでmainのスコープを抜けた時に解放される。
@autoreleasepoolは要らない。
498 :
デフォルトの名無しさん
2016/10/13(木) 01:33:33.88 ID:TfTkEqcE
ARCだからreleaseは呼べないので、解放されるかチェックするなら
@implementation myclass
- (void)dealloc
{
 NSLog(@“%s”, __func__);
}
@end
499 :
デフォルトの名無しさん
2016/10/13(木) 01:55:06.63 ID:d0+eFHBu
>>497
ありがとう
ちなみにだけど、xcode重くて
小さい規模ならgccのほうよく使ってるんだけど
ARC効かない環境だったら上記みたいに@autopoolrelease必要だよね?
500 :
デフォルトの名無しさん
2016/10/13(木) 01:59:27.13 ID:d0+eFHBu
あと、ARCなしだったら
-(void)deallocに[super dealloc];必要だよね
501 :
デフォルトの名無しさん
2016/10/13(木) 02:02:15.85 ID:d0+eFHBu
>499
ごめん変なこと書いた
objective-c始めたばっかだからおかしなこと書いてスマソ
ってことはARC効かなかったら手動でreleaseしないといけないってことだよね
[obj[i] release];
502 :
デフォルトの名無しさん
2016/10/13(木) 02:11:12.99 ID:TfTkEqcE
>>495
これで動作確認してみたよ。(ARC)
-deallocも呼ばれる。

int main()
{
 myclass* obj[3];
 for(int i=0; i<3; ++i) {
  obj[i] = [ [myclass alloc]init ];
  [obj[i]set : i*10];
  [obj[i]print];
 }
 return 0;
}

>>500
MRCなら[super dealloc]; を末尾で呼びます。

>>501
手動でretain, releaseなんだけど、init系はretain済みを返すとか、
コンビニエンスコンストラクタはautorelease済みを返すとか、
ViewにaddSubviewしたらretainされるとか、いろいろややこしいかもよw

あと、Xcodeのテンプレではmain()に@autoreleasepoolがあるけど、
ARCなら上記のとおり解放されるし、どのみちmainを抜けたらアプリ終了で解放されるんだよね。
503 :
デフォルトの名無しさん
2016/10/13(木) 02:18:38.99 ID:d0+eFHBu
>>502
ほんとに助かります ありがと
ってか素直にxcode使いますw
OSXとiOS意外の環境にObjective-c流行らないのって
これ関係だよね(メモリの管理)
GNUstepも確か手動でしょ?メモリ解放
むしろなれてるcの方がメモリ管理楽に感じる(小声
504 :
デフォルトの名無しさん
2016/10/13(木) 02:32:47.05 ID:TfTkEqcE
>>503
GCCはARC未サポートみたいだね。
MRCの基本自体は簡単なんだけどね。
505 :
デフォルトの名無しさん
2016/10/14(金) 14:48:31.14 ID:v9j5dzmv
教えてください。

詳解Objective-C2.0第3版を読んでいます。ランタイムシステムってのが出てくるんですけど、これはアプリ1つに一個起動されるのでしょうか?それとも、OSの起動毎に一個起動されるのでしょうか?
506 :
デフォルトの名無しさん
2016/10/14(金) 14:59:05.79 ID:v9j5dzmv
Objective-Cのランタイムってのは<objc/runtime.h>に定義されている、Cの関数郡って事らしい。木下本に記載があるらしい。たとえば、objc_setAssociatedObject() / objc_getAssociatedObject() ってのがあるって事だ。
507 :
デフォルトの名無しさん
2016/10/14(金) 15:32:44.99 ID:lawu0WKC
>>505
これ読んでみて

Objective-Cランタイムシステムは、すべてのクラスオブジェクトに対してinitializeメッセージを送信します。
各クラスは、ほかのいずれのメッセージよりも先にこのメッセージを受け取ります。
その結果、クラスの使用に先立ってクラス独自のランタイム環境を準備できます。
https://developer.apple.com/jp/documentation/Multithreading.pdf
508 :
デフォルトの名無しさん
2016/10/14(金) 23:13:42.95 ID:lawu0WKC
>>505
まずアプリごとに別プロセスであって、その上でスレッドを実行している。
ランタイム自体はCの関数群なので、アプリがマルチスレッドの場合はスレッドごとにスタックを確保し実行される。
なので、ランタイムはアプリに1個ではなくスレッドに1個ということだね。
スレッドごとにプライオリティが違うのでランタイムの実行速度も違うわけだし。

あんまり詳しく無いけどこんな感じだと思います。
509 :
デフォルトの名無しさん
2016/10/15(土) 08:39:31.98 ID:KMpEggfz
>>508
レス、あんがとう!
納得です。
510 :
デフォルトの名無しさん
2016/10/15(土) 08:59:48.13 ID:dlnFVU64
なんかおかしくないかと思ったが、質問者が納得したならいいか
511 :
デフォルトの名無しさん
2016/10/15(土) 09:12:48.51 ID:3zvDUrQk
ランタイムって起動時にクラス登録したりメソッド登録したりして、
メソッド呼び出し時にメソッド解決するためのシステムやろ。
アプリに1つずつじゃないの。
512 :
508
2016/10/15(土) 09:29:45.08 ID:dk6au9gQ
スレッドに1個というのは、スレッド毎にスタックメモリを確保してるという意味で、
ただの関数なんだからそうなるよね。
ソースまだ読んで無いけどw
513 :
デフォルトの名無しさん
2016/10/15(土) 10:10:00.08 ID:dk6au9gQ
時間ある人読んでみて。違ったら教えてw

ダイナミックObjective-C
http://news.mynavi.jp/column/objc/014/

ソース
http://opensource.apple.com/source/objc4/objc4-267/runtime/
514 :
デフォルトの名無しさん
2016/10/15(土) 10:11:59.38 ID:KMpEggfz
>>511
根拠やソースをどうぞ!

ランタイムって言葉は、乱用されてるので、誤解を招きやすいよねぇ。
Visual Basicランタイムてのは、実態はdll(osxでいうとdylib)で、具体的には
Msvbvm60.dll
vb6jp.dll
Stdole2.tlb
Oleaut32.dll
Olepro32.dll
Comcat.dll
Asycfilt.dll
Ctl3d32.dll
ですよねぇ。
同様に、Obj-Cのランタイムは、libobjc.A.dylibってことですね。
Objective-C Runtime Reference - Developer - Apple

Objective-C runtime library support functions are implemented in the shared library found at /usr/lib/libobjc.A.dylib.
515 :
デフォルトの名無しさん
2016/10/15(土) 10:17:34.69 ID:KMpEggfz
>>511
この人は多分こんな誤解をしている。

ランタイムシステムっていうプロセスがアプリが起動される度にfork(生成されて)されて、「xxxやyyyって仕事をしている」

だから、アプリが複数起動されると、メモリはランタイムシステムで溢れかえる。

androidでは、アプリが起動される度にVMがforkされる様に。
516 :
デフォルトの名無しさん
2016/10/15(土) 10:26:13.78 ID:KMpEggfz
こんな理解で、ええんでっしゃろか?

libobjc.A.dylib ― obj-c runtime
libobjc.B.dylib ― core foundation
517 :
デフォルトの名無しさん
2016/10/15(土) 10:32:53.00 ID:3zvDUrQk
なんでプロセスの話になってんの。お前が何を言ってるのかまるで分からない。
518 :
デフォルトの名無しさん
2016/10/15(土) 11:01:56.05 ID:fVu0gjAI
obj-c runtimeは、dylibとして実装されている。通常、OS起動時に仮装メモリ上にロードされるので、アプリ起動時に新たにロードされることはない。

Cocoa/Foundationにリンクしてコンパイルされたバイナリがメモリ上にロードされると、仮装メモリ上のdylibイメージがプロセスのメモリ空間にマップされ、objc runtimeとして利用出来るようになる。

ランタイムの初期化はプロセス毎だが、独立したプロセスとして実装されている訳ではない。
519 :
デフォルトの名無しさん
2016/10/15(土) 11:28:07.92 ID:KMpEggfz
>>518
なんがと!
メモリへのマップはshmat(shared memory attatch)で行われるって理解でOK?

man shmat

BSD System Calls Manual SHMAT(2)

DESCRIPTION
shmat() maps the shared memory segment associated with the shared memory
identifier shmid into the address space of the calling process.
520 :
デフォルトの名無しさん
2016/10/15(土) 14:20:50.64 ID:5BWmrAPA
それはプロセス間共有メモリで別物かと。

キチンと調べるならMACH-O binaryとかかな?
http://www.m4b.io/reverse/engineering/mach/binaries/2015/03/29/mach-binaries.html

記憶ではApple のmach-O file format referenceとかあったはずだが検索で見つからない。
521 :
デフォルトの名無しさん
2016/10/16(日) 10:35:31.41 ID:FpSgdyT6
基本的にクラス(インスタンス)のプロセスを動的に管理するOSのようなものが
Objective-Cのアプリが動作している間中必要なので
ずっとそこに基本管理プログラムとして居続けてるかと。
(アプリが動作してない時もアプリが起動した途端にいるから常駐してる)
522 :
デフォルトの名無しさん
2016/10/16(日) 11:28:22.44 ID:xF5nqLB3
>>521
意味不明!

クラス(インスタンス)のプロセスってなに?
プロセスを動的に管理するOSのようなものって?

ずっとそこに基本管理プログラムとして居続けてるかと?

一体何が、いると思ってるんだ?
523 :
デフォルトの名無しさん
2016/10/16(日) 11:50:42.07 ID:3UpkNFG/
普通、コンパイル言語のランタイムというとその言語の機能を実現するための低レベルのライブラリの事。
これらのライブラリを呼ぶコードはコンパイラが生成するが、ユーザーが明示的にこれらを呼ぶ事はない。

また、ユーザーのプログラムのmainに飛ぶ前にこのランタイム環境は初期化され、普通は単に
アプリケーションプロセスの一部でしかない。

例えばObjective-Cのランタイムにはダイナミックなメッセージングを実現するためのAPIが含まれる。

Objective-C Runtime
https://developer.apple.com/reference/objectivec/1657527-objective_c_runtime
524 :
デフォルトの名無しさん
2016/10/16(日) 13:08:49.80 ID:vrM29RHh
PCあぷり屋さんって、どのようにしてアプリがCPUで実行されてるのか知らない人多いよねたぶん
525 :
デフォルトの名無しさん
2016/10/16(日) 16:25:18.60 ID:xF5nqLB3
>>524
では、どの様にして、知る事になりました?
何か良い教科書あります?

俺が良かったのは、パタヘネ、最初の数章でもすげー役立つ。
それから、オブジェクト指向でなぜつくるのか。

良書があれば、紹介よろしくお願いします。
526 :
デフォルトの名無しさん
2016/10/16(日) 18:02:27.53 ID:LrWAw6Fi
このランタイム質問者、ちょっと頭変だな。
527 :
デフォルトの名無しさん
2016/10/16(日) 18:43:10.86 ID:ffIkMhfP
>>522
いったい何が?もなにも、Objective-Cは[[class alloc] init]の形で動的にメッセージを受け取ってインスタンスを生成するので
クラスにメッセージを受け渡してメモリ配置などを管理する"誰か"がいないと動かないが。
たぶん根本的に君が"動的"の概念を理解していないか、"ちょっと頭変"なのかどちらか。
528 :
デフォルトの名無しさん
2016/10/16(日) 21:29:21.51 ID:TQzOcNUQ
みんな少しずつおかしいなw
ランタイムは常駐はしてないし、別プロセスや別スレッドで動くようなもんでもないし、dylibの形をしているとは限らないぞ
ただ暗黙に呼び出されてるだけで単なる関数群の事だよ
529 :
デフォルトの名無しさん
2016/10/16(日) 21:41:55.63 ID:3UpkNFG/
>>527
objective-c のメッセージングは最終的には関数呼び出しでしかない。 
class_getInstanceMethodでクラスとセレクタ名からメソッドを得て
それを呼び出すだけ。 

「メッセージを受け取る」というのは言語の概念的なイメージであって
実装とは乖離している。
530 :
デフォルトの名無しさん
2016/10/17(月) 05:56:51.62 ID:ur/Bh7VH
frameworkのサポートは単なるラッパで実態はdylibだとずっと思ってたんだけど...実装違うのか?だとしたらごめん。
531 :
デフォルトの名無しさん
2016/10/17(月) 06:14:09.00 ID:yAttM8H1
いやframeworkは確かにdylibとヘッダその他をまとめたもんだけと
今話している「言語」ランタイムはframeworkのことじゃないから
frameworkのことを、例えばQuickTimeランタイムみたいに呼ぶこともあるからややこしいけど
532 :
デフォルトの名無しさん
2016/10/17(月) 09:31:44.72 ID:v6qceZ1M
>>529
うん!素晴らしい説明ありがとう。
533 :
デフォルトの名無しさん
2016/10/17(月) 10:00:29.08 ID:v6qceZ1M
>>528
ですよねぇ。
ランタイムは
libobjc.A.dylib ― obj-c runtime

にアーカイブされた単なる関数群。
534 :
デフォルトの名無しさん
2016/10/17(月) 10:16:02.28 ID:v6qceZ1M
>>530
ほぼ合ってるでしょ!
frameworkの実態は複数のdylib。というよりdylibそのもの。
単なるwrapperってのは、違うかな。

dylibはobjective-cのクラスやグローバル関数などなどをアーカイブたライブラリー。このobjective-cのライブラリーは、core foundationやrun timeと呼ばれるC言語関数群のwrapperとなっている。

core foundationやrun timeは
>>516
>libobjc.A.dylib ― obj-c runtime
>libobjc.B.dylib ― core foundation
に入っている。

hello worldプログラムをコンパイルしてa.outを作成し、otool -L a.outコマンドを打ってみると判る。
a.out:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1226.10.1)

と思ったけど、libobjc.B.dylibなんで出てこず、libSystem.B.dylibって表示された?
535 :
デフォルトの名無しさん
2016/10/17(月) 10:18:49.39 ID:v6qceZ1M
Objective-C runtime library support functions are implemented in the shared library found at /usr/lib/libobjc.A.dylib.

https://developer.apple.com/reference/objectivec/1657527-objective_c_runtime
536 :
デフォルトの名無しさん
2016/10/17(月) 10:22:05.11 ID:v6qceZ1M
>>531

ランタイムは、ランタイムライブラリーを省略した文言で、ちゃんとdylibの形をしているんちゃうんか?

だって、AppleのサイトでObjective-C Runtimeって検索するとruntime libraryって書いてあるし。
537 :
デフォルトの名無しさん
2016/10/17(月) 10:34:16.48 ID:vi4PRwIq
>>534
> hello worldプログラムを
俺のには含まれてるぞ
$ otool -L a.out
a.out:
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1154.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1153.18.0)

ソースは単に
//hello.m
#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
NSLog (@"Hello, World!");
return 0;
}
538 :
537
2016/10/17(月) 10:40:26.72 ID:vi4PRwIq
>>534
ひょっとして、.mファイルだけど中身はまったくCのhello worldをコンパイルしたんじゃないか?

objective-CはCはそのままコンパイルできる。 Objective-cの機能を使ってなければobjective-Cの
ランタイムをリンクしなくてもそのまま走る。
539 :
537
2016/10/17(月) 10:54:39.51 ID:vi4PRwIq
>>537
ごめん、その例では悪かった。 それもobjective-Cの機能は使ってない。 使った例としては:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSLog (@"Hello, World!");
[pool drain];
return 0;
}

コマンドラインでobjcのコンパイルの仕方で

cc -lobjc …

という例を見たのでそれを付けてたら強制的にobjcランタイムをリンクしてた。 
objc機能を使ってなければこれを明記しなくても自動的にリンクされる。
540 :
デフォルトの名無しさん
2016/10/17(月) 11:25:21.72 ID:v6qceZ1M
>>538
ご明答

ccなんてコマンドあるのね。

ls -l `which cc`
lrwxr-xr-x 1 root wheel 5B 6 13 13:50 /usr/bin/cc -> clang

clangへのaliasなのね。知らんかった。Obj-Cなんて極最近触り始めて
良く知らんのだ。
541 :
デフォルトの名無しさん
2016/10/17(月) 11:37:03.04 ID:4hpKEwJL
ccそのものは昔からあるCのコンパイラでしょ、今はgccにリンクしてることが多いが
542 :
デフォルトの名無しさん
2016/10/17(月) 11:59:05.64 ID:v6qceZ1M
俺的メモ

gccとcc(clang)との違い。

ccはコマンドalias。
gccはclangのwrapperコマンド(俺の推測)
gcc -v, cc ―versionは、どちらもApple LLVMだと答えてくれる。

cc -framework Foundation hello.m
gcc -framework Foundation hello.m
と打ってコンパイルして得られるバイナリは同サイズだ。

ll a.out*
-rwxr-xr-x 1 ad staff 8.3K 10 17 11:54 a.out
-rwxr-xr-x 1 ad staff 8.3K 10 17 11:53 a.out-cc
543 :
デフォルトの名無しさん
2016/10/17(月) 13:01:16.77 ID:v6qceZ1M
ちなみに
libobjc.A.dylib
libSystem.B.dylib
の中にいったいどんなCの関数が入っているのか?classdumpってフリーのコマンドラインツールで調べる事ができるはず。俺、やった事無いけど。
544 :
デフォルトの名無しさん
2016/10/17(月) 13:15:29.63 ID:v6qceZ1M
せっかくだから、
class-dump /usr/lib/libobjc.A.dylib

やってみた。
@protocol NSObject
@property(readonly, copy) NSString *description;
@property(readonly) Class superclass;
@property(readonly) unsigned long long hash;
- (struct _NSZone *)zone;
- (unsigned long long)retainCount;
以下略
Cの関数は入ってなくて、Obj-Cのクラスとか、構造体とかが、入っていた。
545 :
デフォルトの名無しさん
2016/10/17(月) 13:24:24.90 ID:v6qceZ1M
ついでに、
nm -o /usr/lib/libSystem.B.dylib | less

こいつの最初の数行は、
/usr/lib/libSystem.B.dylib: 0000000000001abb T R8289209$_pthread_attr_destroy
/usr/lib/libSystem.B.dylib: 0000000000001ac0 T R8289209$_pthread_attr_init
/usr/lib/libSystem.B.dylib: 0000000000001ac5 T R8289209$_pthread_attr_setdetachstate
/usr/lib/libSystem.B.dylib: 0000000000001aca T R8289209$_pthread_create
以下略
546 :
デフォルトの名無しさん
2016/10/17(月) 13:32:18.66 ID:yAttM8H1
>>536
それはたまたまOSX上のObjective-Cでそうなってるだけ
大抵の言語では「言語」ランタイムはスタティックリンクされるし
Objective-Cでもlibobjc.aがある環境ならスタティックリンクできる

/usr/lib/の下に.oがいくつかあるけど、こいつらも「C言語の」ランタイムでmain関数よりも前の処理になってて
大抵の実行ファイルにはどれかが暗黙にスタティックリンクされてる
547 :
デフォルトの名無しさん
2016/10/17(月) 13:39:16.83 ID:yAttM8H1
あとlibSystem.B.dylibはシステムコールラッパーとC言語の標準ライブラリの一部(libcと分割)なんで
ランタイム(実行時)ライブラリであることには間違いはないけど
C言語のランタイムというと、普通はスタートアップ(*.o)やlibgccの方を指すと思う
548 :
デフォルトの名無しさん
2016/10/17(月) 14:05:08.33 ID:v6qceZ1M
>>547
nm libSystem.B.dylibの結果はほとんど’U’タイプのSymbolでした。

man nmによると
Symbol type ‘U’ = undefinedで、実装は別ファイル、参照だけ!、って事らしいので、
実装はたとえば、libcにあるんだと思います。

nm -o libSystem.B.dylib | grep -v ‘U’すると、出力は極わずかでした。
549 :
デフォルトの名無しさん
2016/10/20(木) 17:05:03.85 ID:8PkcGQMJ
MRC時代のOSXプログラミングの書籍ってなにがありますか?(何を買えばいいですか?)
今はAppleのオンラインドキュメントなどはほとんどARC前提で記述されてるので
ネット探してもなかなか見つけられません
550 :
デフォルトの名無しさん
2016/10/20(木) 17:35:44.02 ID:v715sDMz
古い版の萩原本でもよみゃいいだろ。
551 :
デフォルトの名無しさん
2016/10/20(木) 19:00:37.37 ID:8PkcGQMJ
>>550
https://www.amazon.co.jp/Objective‐C―MacOS-Xプログラミング入門-荻原-剛志/dp/4877780688/ref=sr_1_6?s=books&ie=UTF8&qid=1476957557&sr=1-6
これとかか?
552 :
デフォルトの名無しさん
2016/10/20(木) 20:24:30.68 ID:ifLlZ1yA
553 :
デフォルトの名無しさん
2016/10/25(火) 13:48:49.63 ID:aBo6S+EN
@interface
@implementation

これに変数2回宣言するだろ?
違いってなんですか?
554 :
デフォルトの名無しさん
2016/10/25(火) 14:18:03.51 ID:OZkbpJ7G
>>553
必要なスコープに1回宣言すればいい。
というか、外部に変数を公開する事は、特殊な事情以外ありえないから、
ヘッダにはアクセサ即ちプロパティを書けばいい。
つまりインスタンス変数なら@implementation{ } のブロックで宣言すればいいよ。

継承した子クラスからその変数へは、親クラスのアクセサ経由でアクセスするのが普通。
こうすると、ヘッダには外部に公開する情報しか現れない。

どうしても子クラスから親クラスの変数に直接触りたい場合は、
親クラスの@interface{ }ブロックで宣言する。
その場合はデフォルトでアクセス制限が@protectedになる。
555 :
デフォルトの名無しさん
2016/10/25(火) 14:31:48.57 ID:OZkbpJ7G
>>553
補足
その変数を外部に公開しないのなら、ヘッダでプロパティにしなくてもいいよ。
プロパティは.mにも書けるし。
556 :
デフォルトの名無しさん
2016/11/17(木) 12:45:51.00 ID:0S40a4Cy
インスタンスメソッドの実行に関して教えてください。

// message sending
[obj say: @
557 :
デフォルトの名無しさん
2016/11/17(木) 13:13:08.74 ID:Psw7U5GH
事切れたか
558 :
デフォルトの名無しさん
2016/11/17(木) 13:29:09.43 ID:5aO/SijD
ダブルクオートとかで切れるのよく見かけるけど、@ でも切れるんかな
559 :
デフォルトの名無しさん
2016/11/17(木) 13:29:10.81 ID:0S40a4Cy
ソースコードが勝手に切られちゃう(サニタイズ関係?)みたいなので画像で失礼します。

インスタンスメソッドの実行に関して教えてください。
message sending / function pointer
どちらの方法でもちゃんと動くのは確認できましたが、
なぜ後者はSELパラメータが必須(この場合selector) な仕様になっているんでしょう?
冗長に見えますが何か意味があるんでしょうか。
560 :
デフォルトの名無しさん
2016/11/17(木) 13:30:21.21 ID:5aO/SijD
@ の次は当然 " がくるだろうけど、今まで1個目の"が表示されて切れるんだよなあ
561 :
デフォルトの名無しさん
2016/11/17(木) 13:33:39.43 ID:0S40a4Cy
> SELパラメータが必須
instanceMethodForSelector: の時点で伝えてあるのに、なぜ実行時にも必要になるのかという事です。
562 :
デフォルトの名無しさん
2016/11/17(木) 13:40:44.67 ID:+o4tuiiL
>>561
1.instanceMethodForSelectorでメソッドの実体である関数のポインタを取得(IMP func)
2.funcをキャストして呼び出し

2のときに、メソッドの暗黙の第1,第2引数である id obj, SEL selectorを渡してます。
563 :
デフォルトの名無しさん
2016/11/17(木) 13:54:11.06 ID:0S40a4Cy
ありがとうございます。それでは改めて聞き直します。
メソッドの暗黙の第2引数が SEL である、そもそもの設計の意図はなんなんでしょう。

内部で振り分ければいいので複数のメソッドに対して一つの関数(ポインタ)が共通で対応可能とか?
それが実際にできたとして何かメリットがあるんでしょうか。
564 :
デフォルトの名無しさん
2016/11/17(木) 14:00:22.50 ID:f6OBJy8Y
セレクタを見て他のメソッドにデリゲートするとか。
565 :
デフォルトの名無しさん
2016/11/17(木) 14:05:35.87 ID:+o4tuiiL
ランタイムは、渡されたセレクタをメソッドリストから検索して、有れば実行、無ければエラー。
ってことかな。
566 :
デフォルトの名無しさん
2016/11/17(木) 14:28:15.44 ID:+o4tuiiL
IMP使った場合はランタイムは経由しないでダイレクトに関数コールするけど、
通常は動的にメソッド呼び出しをするのでそういう仕様になってる。

のではないだろうか。
567 :
デフォルトの名無しさん
2016/11/17(木) 18:17:20.63 ID:ZyPoEOxl
サブクラスでのオーバーライドをサポートするために
だと思うよ。
568 :
デフォルトの名無しさん
2016/11/17(木) 21:32:33.37 ID:XVALpd1q
Smalltalkで、実行中メソッドのコンテキスト内からそのセレクタを得ることができる機構を
Objective-Cでも_cmdパラメーターを介して模したかったからなのでは?

Object subclass: Foo [ bar [ thisContext method selector displayNl ] ]
Foo new bar "=> #bar "
569 :
デフォルトの名無しさん
2016/11/17(木) 23:13:49.69 ID:+o4tuiiL
だいたいその辺の、実行時解決を実現したかったという理由だと思うけど、
ランタイムがメソッド呼び出しするときの動作は

1.レシーバがnilかどうか
2.レシーバのメソッドリストに該当メソッドがあるか
3.なければスーパークラスにあるか
4.なければthrow exception

だよね。
だからメソッド呼ぶときはランタイムにレシーバとselectorを渡して調べてもらう必要が有るんですよ。
570 :
デフォルトの名無しさん
2016/11/17(木) 23:51:59.51 ID:8N+auLd3
レシーバはselfとして使うから必要なのはわかるんだけど、セレクタはいつ必要になるの?
ランタイムに調べてもらうのは関数(メソッド実体)コールの前だろうから、コール時にはすでに不要な情報だよね
571 :
デフォルトの名無しさん
2016/11/18(金) 00:08:47.34 ID:QxITf25H
>>570
セレクタはメソッド呼び出しで必要>>569
IMPで関数呼び出しの場合はランタイムを経由しないので不要
しかしどちらもシグネチャは共通なので(id, SEL, …)ということ
572 :
デフォルトの名無しさん
2016/11/18(金) 02:19:58.76 ID:QxITf25H
>>570
ちなみにこれでも動作する。id,SELは渡してない。

void(*f)(void) = [ViewController instanceMethodForSelector:@selector(hoge)];
f();

- (void)hoge
{
NSLog(@"%@", NSStringFromSelector(_cmd));
}

SELを渡してないので null と出力される
idも渡してないので、hoge内でselfにアクセスすると落ちる。
573 :
デフォルトの名無しさん
2016/11/18(金) 08:55:20.76 ID:1f4/DDXi
なるほどこれはわかりやすい
574 :
デフォルトの名無しさん
2016/11/18(金) 09:33:05.33 ID:sBZu/NEl
BathyScapheっていう2ch Viewer使ってます。
>>559
みたいな画像をuploadするにはどうすればいいっすか?

2chのサイトではdrawツールがブラウザ内にあって、それで落書きはできるみたいですが、pngとかgif画像をuploadしたいのです。
575 :
デフォルトの名無しさん
2016/11/18(金) 11:55:15.19 ID:U2qFJJrM
>>574
素の落書きツールは かなり使い勝手が悪いので
自作の Geasemonkeyスクリプト(for Firefox)使ってます。
576 :
デフォルトの名無しさん
2016/11/18(金) 11:57:16.56 ID:U2qFJJrM
まあ、すぐにサイズオーバーになるのでごく簡単な絵しかアップできません。
577 :
デフォルトの名無しさん
2016/11/18(金) 12:14:37.99 ID:8cb+/Ta9
消せないから気軽にあげられないのがちょっとあれよね
プログラム板なんだから自分で書けば良いよ
てことでobjcで書いてみた
サイズの頭打ちがあるからと思ってインデックスカラーに圧縮したけど弾かれるのね
578 :
デフォルトの名無しさん
2016/11/18(金) 12:22:18.47 ID:U2qFJJrM
IMP関数ポインタの SELパラメターの件
正直言うと、自分にはコメの意見の善し悪しを判断する能力ありません...。
ググるとこれ使って >>559 で書いたような事ができるようですが (参考:class_addMethod)
設計側はそういう用途まで考慮していたのかは、よく分かりませんでした。
シグネチャを共通にしたかった? どうなんでしょう、それって何か気持ちいいから以上の理由はあるんですかね。
579 :
デフォルトの名無しさん
2016/11/18(金) 12:39:28.44 ID:QxITf25H
>>578
シグネチャが共通というより、同一の関数なので同じシグネチャなんですよ。
ランタイムが呼ぶメソッドの実体も、IMPを取得してダイレクトに呼ぶ関数も、「同じ関数」です。
その関数の引数が (id, SEL, …) なんですね。
580 :
デフォルトの名無しさん
2016/11/18(金) 12:42:31.61 ID:QxITf25H
で、自分はIMPは使いません。
IMPを使うくらいならCの関数を書けばいいだけなので。
581 :
デフォルトの名無しさん
2016/11/18(金) 12:51:34.13 ID:QxITf25H
Objective-Cは、以前はメソッド呼び出しのオーバーヘッドがネックになってたようなので、
IMPのAPIは、既存クラスのメソッドを高速に呼び出すために作ったんじゃないですかね。
582 :
デフォルトの名無しさん
2016/11/18(金) 13:05:14.30 ID:sBZu/NEl
>>576
いやぁ、うれしい。
秘伝のテクを開陳してくれて、あんがとう。

けど、JavaSou苦手なんすよねぇ。
tarea(text area)を取得して、その直前にinput, script要素を挿入してinputボタンの押下で
foo関数を呼ぶ様にしてるって事みたい。

FireFoxもGeasemonkeyも使った事無いっす。
Safari, Chromeでも同じ事できるんでしょうか?
Geasemonkey for Safari, Chromeを探せって事なんすね。

いま、WKWebViewでもloadしたhtml, cssを書き換えられないか?調べてます。
Geasemonkey likeな動作をどうやってさせようかと!
583 :
デフォルトの名無しさん
2016/11/18(金) 21:20:02.14 ID:U2qFJJrM
ObjCスレだからObjCで頑張るのはアリかもしれませんけど、物事には適材適所ってもんがあるとおも...。
584 :
デフォルトの名無しさん
2016/11/19(土) 03:19:56.84 ID:vr8hDAX5
適材適所かどうかは自明ではないね
585 :
デフォルトの名無しさん
2016/11/26(土) 10:43:02.50 ID:EbyefIsj
みんなSwiftに移行しちゃったの?
Swift始めた頃、小さな仕様がコロコロ変わるからObj-Cに戻ってきてたけど
もう安定したのかな。
586 :
デフォルトの名無しさん
2016/11/28(月) 16:59:47.56 ID:AK2eqXeC
>>585
Swift3でメソッド名の整理が行われて、短くなった。
"Taylor".writeToFile("filename", atomically: true, encoding: NSUTF8StringEncoding)

"Taylor".write(toFile: "somefile", atomically: true, encoding: String.Encoding.utf8)

上2.3/下3

Swift3が良さげに見えるのでObj-Cからの移行者がボチボチ増えてるかも。
587 :
デフォルトの名無しさん
2016/11/30(水) 23:57:30.93 ID:48Nf+yqm
>>585
殊Swiftにおいて仕様が安定することはまだしばらくないだろう
Swift5くらいじゃね?安定版は
588 :
デフォルトの名無しさん
2016/12/01(木) 09:30:20.02 ID:RHRo1hP4
コンパイラとしての安定性は最初から問題無いんじゃない?
コンパイラが原因でアプリが落ちるっては経験無いなぁ。

C++、Javaが最近仕様変更が激しいのと同じく、Swiftだって言語仕様変更があるって事で、コンパイラとしては安定してると思う。

例:C++TR1, C++11, C++14
JavaSE6, 7, 8, 9

Swift3の言語仕様変更は、現在アナウンスされてないんじゃないのか?Swift4ってのはABIの導入って事で、言語仕様の変更じゃ無いし。
589 :
デフォルトの名無しさん
2016/12/01(木) 12:10:25.84 ID:5zfWITAP
ぬるぽで落ちてもコンパイラのせいです(kr
590 :
デフォルトの名無しさん
2016/12/01(木) 12:43:47.19 ID:RHRo1hP4
>>589
それは、nil guardしてないコードのせい!
591 :
デフォルトの名無しさん
2016/12/01(木) 17:17:16.90 ID:ODvXgIax
 
キチガイの集まり・創価学会・公明党!

人殺しの殺人鬼が政治活動・創価学会・公明党!

池田大作・人殺しの殺人鬼・創価学会・公明党!

あやかりドチンピラの池田糞作・創価学会・公明党!
592 :
デフォルトの名無しさん
2016/12/02(金) 10:10:54.60 ID:84dQUHiS
禁止語句、に追加すれば、見なくてすむよ!
593 :
デフォルトの名無しさん
2016/12/03(土) 14:45:44.29 ID:rA9b0IH0
孔明党ならゆるされるのだろうか?

仲達「ゆるさないぞ!」
594 :
デフォルトの名無しさん
2016/12/07(水) 10:42:29.07 ID:iWjUJEoY
メッセージをたくさん送る時、[[[なるじゃん?
みなさんどう打ってます?Xcodeに自動補完とかあるの?
595 :
デフォルトの名無しさん
2016/12/07(水) 11:09:26.74 ID:lAZ4q7Te
>>594
適当に打って、あとから余計なのを消す。
余計を検出するのは、XVimの%コマンドを使う。

matchitとかっていうpluginをterminal.appで使うって手もある。
596 :
デフォルトの名無しさん
2016/12/07(水) 12:37:41.63 ID:YlvsrELD
>>594
]を打ったら状況に応じて勝手に[を入れてくれるよ
入れる場所を間違えてエラーになる事もあるけど
597 :
デフォルトの名無しさん
2016/12/07(水) 15:21:19.56 ID:iWjUJEoY
ありがとうございます!
SwiftからCocoaプログラミングを始めて、その背景を知りたかったのでObjective-Cをちょこっと調べてました。
そこで、気になって質問しました^_^
598 :
デフォルトの名無しさん
2016/12/07(水) 15:35:56.63 ID:lAZ4q7Te
>>597
俺と同じパターンだね。
Objective-Cのサンプルを読む事もあるしね。
Swift -> Objective-Cって人も最近は居るだろうね。

Swift3からObjective-Cを見ると、冗長な部分が目立ってしまう。
例:
obj-c: dissmissViewControllerAnimated: complition
swift3: dismiss#animated:

Objective-Cはコンパイル早いっていうメリットがあるけどね。
599 :
デフォルトの名無しさん
2016/12/07(水) 15:48:24.59 ID:iWjUJEoY
>>598
そうですか!
言語は新旧ありますが、ロジックやフレームワーク自体に優劣がある訳ではないので、Objective-Cが読めるとプラスですよね
600 :
デフォルトの名無しさん
2016/12/07(水) 16:09:27.53 ID:lAZ4q7Te
>>599
Swift3からiOSいじり始めた俺からすると、obj-Cは怖いわぁ。
Swiftにおけるnilに相当するのがobj-Cには、
nil、Nil、NULL、NSNullと4つもある。

Frameworkにあるメソッドにnilを返すものとerrorをthrowするものと混在するのも
おれは混乱するわ。

それから、未だにOptionalが返って来た時に、どうやってunwrapするか、
すなわちnon-Optionalにするのかも混乱する。

1. if let or guard letを使う
2. coaleasing opperator ??を使う
3. forced unwrappingする
601 :
デフォルトの名無しさん
2016/12/09(金) 00:46:26.18 ID:68yJ6/bb
>>596
メッセージ呼び出しの自動補完はifの周りが割と鬼門だよね、式の解析が一部混乱してる感じ
くっころさんになることたまにある。
602 :
デフォルトの名無しさん
2016/12/15(木) 13:46:48.92 ID:7KRIzock
603 :
デフォルトの名無しさん
2016/12/16(金) 09:51:52.86 ID:6vWCzpx7
Bool areInst(int thing1, int thing2)
{
return(thing1 - thing2)
}
これ、YESかNOが返されるんだけど
0か1が返ってくるには、どうすればいい?
604 :
デフォルトの名無しさん
2016/12/16(金) 10:15:26.25 ID:OzPYYpv3
>>603
if YES {
return 1
} else {
return 0
}
206KB

lud20161216103410
このスレへの固定リンク: http://5chb.net/r/tech/1414816517/
ヒント:5chスレのurlに http://xxxx.5chb.net/xxxx のようにbを入れるだけでここでスレ保存、閲覧できます。

TOPへ TOPへ  
このエントリをはてなブックマークに追加現在登録者数177 ブックマークへ



全掲示板一覧 この掲示板へ 人気スレ | Youtube 動画 >50 >100 >200 >300 >500 >1000枚 新着画像

 ↓「Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net->画像>4枚 」を見た人も見ています:
【Cocoa】Macプログラマのスレ【Objective-C】
【脱Objective-C】iPhoneアプリをJava,C#等で開発
【MAC OSXでゲームを作る】Objective c【共同開発】
Interstellar object ‘Oumuamua believed to be ‘active ...
【Library of Ruina】Project Moon 総合 Part94【Lobotomy】
【Library of Ruina】Project Moon 総合 Part36【Lobotomy】
【Library of Ruina】Project Moon 総合 Part64【Lobotomy】
【Library of Ruina】Project Moon 総合 Part32【Lobotomy】
【Library of Ruina】Project Moon 総合 Part45【Lobotomy】
【Library of Ruina】Project Moon 総合 Part77【Lobotomy】
【Library of Ruina】Project Moon 総合 Part33【Lobotomy】
【Library of Ruina】Project Moon 総合 Part58【Lobotomy】
【Library of Ruina】Project Moon 総合 Part73【Lobotomy】
【Library of Ruina】Project Moon 総合 Part72【Lobotomy】
【Library of Ruina】Project Moon 総合 Part67【Lobotomy】
【Library of Ruina】Project Moon 総合 Part98【Lobotomy】
【Library of Ruina】Project Moon 総合 Part59【Lobotomy】
【Library of Ruina】Project Moon 総合 Part65【Lobotomy】
【Library of Ruina】Project Moon 総合 Part87【Lobotomy】
【Library of Ruina】Project Moon 総合 Part88【Lobotomy】
【Library of Ruina】Project Moon 総合 Part103【Lobotomy】
【Library of Ruina】Project Moon 総合 Part54【Lobotomy】
【Library of Ruina】Project Moon 総合 Part34【Lobotomy】
【Library of Ruina】Project Moon 総合 Part50【Lobotomy】
【Library of Ruina】Project Moon 総合 Part29【Lobotomy】
【Library of Ruina】Project Moon 総合 Part61【Lobotomy】
【Library of Ruina】Project Moon 総合 Part75【Lobotomy】
【Library of Ruina】Project Moon 総合 Part48【Lobotomy】
【Library of Ruina】Project Moon 総合 Part40【Lobotomy】
【Library of Ruina】Project Moon 総合 Part86【Lobotomy】
【Library of Ruina】Project Moon 総合 Part38【Lobotomy】
【Library of Ruina】Project Moon 総合 Part39【Lobotomy】
【Library of Ruina】Project Moon 総合 Part93【Lobotomy】
【Library of Ruina】Project Moon 総合 Part47【Lobotomy】
【Library of Ruina】Project Moon 総合 Part31【Lobotomy】
【Library of Ruina】Project Moon 総合 Part41【Lobotomy】
【Library of Ruina】Project Moon 総合 Part90【Lobotomy】
【Library of Ruina】Project Moon 総合 Part71【Lobotomy】
【Library of Ruina】Project Moon 総合 Part35【Lobotomy】
【Library of Ruina】Project Moon 総合 Part100【Lobotomy】
Library of Ruina】Project Moon 総合 Part3【Lobotomy Corp】
【Library of Ruina】Project Moon 総合 Part8【Lobotomy Corp】
【Library of Ruina】Project Moon 総合 Part1【Lobotomy Corp】
【Library of Ruina】Project Moon 総合 Part2【Lobotomy Corp】
【Library of Ruina】Project Moon 総合 Part20【Lobotomy Corp】
【Library of Ruina】Project Moon 総合 Part26【Lobotomy Corp】
【Library of Ruina】Project Moon 総合 Part17【Lobotomy Corp】
【Library of Ruina】Project Moon 総合 Part19【Lobotomy Corp】
東方project界隈をヲチ Part.11
東方project界隈をヲチ Part.10
【音楽】ドラムンベースのレジェンド、ゴールディーの新デュオ・プロジェクトSubjective始動 デビュー・アルバムから新曲を公開
流田Project part1
project winter part1
東方ProjectのAA part16
東方project界隈をヲチ Part.7
東方project界隈をヲチ Part.3
東方project界隈をヲチ Part.3
東方project界隈をヲチ Part.4
東方project界隈をヲチ Part.2
東方project界隈をヲチ Part.5
【PC】Project Nova Part 1
東方project界隈をヲチ Part.3再
東方Projectアンチスレ in MANGO板 Part.7
~Selectie Oranje~オランダ代表スレ Part42
Audio Active Part 1
ネイティブ (native/Maxfactory) Part01
13:42:29 up 51 days, 14:41, 0 users, load average: 7.38, 8.12, 8.13

in 0.15714192390442 sec @0.15714192390442@0b7 on 060802