>>953>>954
ん?反論が無いなら俺の勝ちだぞ? >>955
反論?
Objective-Cアンチスレでも立ててそこでやれば? 既存のObjective-CプロジェクトをObjective-C++にする場合
なんか問題になることってある?
型キャストしろって警告は沢山出てくるけど、それ以外は特に問題ない気がする。
ObjC++化で動作が変わるかどうか一番心配。
予約語が増えるとか、autoの意味が変わるとか、文字定数の型が変わるとか
関数宣言の引数なし()が可変長引数から(void)と同じに変わるとか
C言語からC++への移行手順を参考にすれば問題ない気がする。
Objective-C固有の愛称は特に無い。newキーワードとの関係でNSObject.newが使えないくらいか。[NSObject new]なら問題ない。
NSObject.new って ObjC2.0 の新記法?
新記法ってか...まあ、そうといえばそう
instance.property はコンパイル時に単に [instance property] に置き換えられるってだけで、使用に制限はない(コンパイルエラー/ウォーニングは出ない)。引数なしならなんでもドットで書ける。確か値を返さないのでも( [instance run]; を instance.run; とも)
ドット記法(getter/setter)は単に置き換えられる(setterはset付けられるけど)というのを理解していれば制限は無いので自由っちゃあ自由だが、それは違うだろうという、個人的にw
ああ、クラスプロパティができるようになったから、instance.propertyだけでなくclass.propertyもありな、newはクラスメソッドしかないしclassで書くべきだったな
0965デフォルトの名無しさん2017/11/17(金) 03:39:04.53ID:KuiGlQ+X
関数の頭の+と-ってインスタンス済みか違うかってことと継承できるかどうかのちがい?
どっちがメモリ食いでおそいの?
+(void)test{
NSLog(@"C %zu", malloc_size((__bridge const void *)(self)));
}
-(void)test{
NSLog(@"I %zu", malloc_size((__bridge const void *)(self)));
}
メモリサイズ見るとallocしてないからクラスメソッドではセルフのサイズは0になるよ。
速度に関してはメモリ確保しない分クラスメソッドの方が速いだろう
計算だけやらせるとかだけならクラスメソッドの方が良いだろうけど
それならC関数の方が優位
0969デフォルトの名無しさん2017/11/17(金) 12:49:30.17ID:BwXttssD
継承しないなら+が正解なんですね
ありがとうございます。
継承しない?
そもそもクラスメソッドも継承されるけど
NSObject を継承した Test1ClassのクラスメソッドtestFuncは
Test1Class を継承した Test2Classでも呼べるよ
てかクラスメソッドを継承出来なかったらNSObjectのallocも使えなくなるでしょ
@interface Test1Class : NSObject
+(void)testFunc;
@end
@implementation Test1Class
+(void)testFunc{
NSLog(@"call test");
}
@end
@interface Test2Class : Test1Class
@end
@implementation Test2Class
@end
int main(int argc, const char * argv[])
{
[Test2Class testFunc];
}
0972デフォルトの名無しさん2017/11/17(金) 14:46:32.69ID:KuiGlQ+X
+でも継承できるんですか
勘違いしてました
すると+と比べて-のメリットは何でしょうか?
OOPSの理解が先だな。OOPS理解すればそんな質問してたのがアホだったと思うだろう
いやJavaとかから来たらわからんだろうよ
通常のオブジェクトがそれが属するクラスにメソッドを定義することで、それをコールできるのと同様に
Objective-CではSmalltalkやRubyなどと同様に
クラスもまた、自身が属するメタクラス(さらに上位のクラス)にメソッドを定義することでそれをコールできる
メタクラスはクラスとちがって無名なので、便宜上そのクラスへのメソッド定義(インスタンス向け)を - で、
対応するメタクラスへのメソッド定義(そのクラス自身向け)を + で表す決まりになっている
つまるところ、+ と - はそのメソッドが定義される場所(ひいてはそれをコールできるオブジェクト)が違う
UMLの-と+でインスタンスメソッドとクラスメソッドを区別するやつ
Objective-Cが由来なのかな
すまん間違えた
UMLの-と+はパブリックとプライベートだった
>>975
なんか小難しいこと書いて言ってるけど、そんな知識をひけらかす必要あるのか?元の ID:KuiGlQ+X には
そのレスの絞めとして、クラスメソッドとインスタンスメソッドは明確に性格が違うと言っているんでしょ?なぜかはOOPS理解していれば聞く必要もないことで、それは、Javaでも同じだろう
理解してないようだから、早々に>>968なんて言うヤツが出たんだろ >>978
ひけらかすほどの知識とも思わんが
それとも、こんな基本的なことも知らないで使ってるのか?
そもそもOOPSってなんなんだよ… >>979
OOP Style だよ。まあ、OOPでいいけど
言ってるのはクラスメソッドとインスタンスメソッドは違うってだけじゃん?何をそんな小難しく読みづらいっていうw
いきなりJavaだからとかから始まって...あるとしたら、Objective-C固有のかと思ったらそうでもないし >>980
Java、C++等の staticメソッドと、Objective-Cや Smalltalk、Ruby のクラスメソッドは別物だよ?
それすら分かってないのか… >>981
機構/実現方法としてだろ?だから、そんなこと元々のヤツは聞いてないだろって言ってるのに。だからそゆ細かいとこをひけらかすって言ってるのに(「俺には当然」らしいけけど、なんでだったらわざわざ書くのか?)
実際インスタンスメソッドがメインでクラスメソッドなんて書く機会/必要性は割合的になくね?OOPS的にはw
でも、やっぱり必要な場合があるから、なんかあんたが違うと拘ってるけど、クラスメソッドがそれぞれの言語でもあるんだろ?
そゆ意味で元々の俺のレスだよ。なんでそれを否定して細かい違いを言ってるのかいまださっぱりわからん=知識のひけらかしにしかみえんのだけど すーぐ熱くなる
マなんてこんな奴らばかりなんだからお互い無駄に体力使うなよ
コミュニケーション以外の所に能力値振ってるから説明がヘタクソになるんだよ
解説本とかみんなそうだろ
ともあれID: KuiGlQ+Xはメリットデメリットの話する前にそれが存在する理由と
どのような使い分けがあるのかを考える方が良い
>>982
じゃあ、私はクラスメソッドなんか使いません。staticメソッドと区別も分かりません。でいいじゃん
まず、クラスメソッドの価値を見いだせないそのOOPSwとやらをなんとかしろよ >>985
誰になに言ってるのか不明すぎ
「クラスメソッドの価値を見いだせない」とかいきなり。誰も不要なんて言ってないけど?必要な場合があるって言ってるじゃん?ああ、「なんだか知らんが必要な場合があるんだろうな」と俺が言っているととっているのか??んー、だったら、すげえなww
なんだかどうしても俺を下に見下したいだけにしか見えないんだけど?数スレ前からずっと >>986
だってOOPSwとか分からんこと言ってる時点で明らかに下じゃんw
逆にどうしてその程度で上から目線を貫けるのか謎だわ たぶん自慢げに語るそのOOPSwとやらの説明すらまともにできないのでは?との想像に難くないレベルの低さ
>>988
OOPと書かなきゃダメなのか?まあ、一時的にOOPSもあったんだよ。知らないだろうけど
たかがそれだけのことで全否定できるって、さすが細かいとこにこだわるお人だなあ&くだらなさすぎ&本来の話題が逸れすぎだと思うぞ。なんかあんたが心配(自ら自らを貶めているようでw)
長引くようだったら次スレたててw 相手を理解しようとしないで自分のペースでしか話せないと苦労するだろう
ようはOOPSって
Object Oriented Programming Styleでしょ?
つまりオブジェクト指向プログラミングについて学べと言ってるんじゃ無いの?
ID:KuiGlQ+Xは、メリットデメリットって言ってるとこからして
オブジェクトを生成するってことを理解してないレベルの話だよねこれ
まずインスタンスにアクセスした事無いからインヘリタンスとか関係ない所でメリットについて疑問が湧いちゃったんだろうし
>>991
うん。全くそうなんだけどねえ
(まあ、あんたは>>983で理解してくれてる/その前でもすでに理解してると思ってたけど) 0993デフォルトの名無しさん2017/11/17(金) 20:29:25.96ID:KuiGlQ+X
うーん、さっぱりわからないです。すみません。
とりあえずViewcintrollerでは-、汎用クラスは+で使い分けてたんですが、+のがメモリ食わないなら、なるべく+使っとけばいいんでしょうか
Viewcintrollerでメモリ使ってるんだから
Viewcintroller内で使うメソッドをメモリのためだけにクラスメソッドにする意味は無いし無意味
といってもまずインスタンスについて理解してないと、この話は進まないだろう
あなたの言う+を使ったメソッドで運用出来てるならそれで良いしそのうち躓くだろうから
そこで気づければ良いね
としか言えない感じの大きな壁があるように感じる
0996デフォルトの名無しさん2017/11/17(金) 20:46:44.49ID:KuiGlQ+X
クラスは設計図、インスタンスはクラスに基づいて作られた実体と聞きました。
設計図メソッドと実体メソッド?
どっちもおなじことできてるんでなんだろ?と思いました
0997デフォルトの名無しさん2017/11/17(金) 21:16:54.72ID:Eetf/DNi
クラスをメモリーにロードするとインスタンスになるという説明だと
どんな問題が起こるだろうか。
0999デフォルトの名無しさん2017/11/17(金) 21:46:24.64ID:KuiGlQ+X
ググッてみました。
クラスの中のメソッド間で値の受け渡しが出来るのは、クラスメソッドのメリットですね。
でもインスタンメソッドでも@interfaceで変数定義したら受け渡しができちゃう。
うーん、インスタンスメソッドでいけるとこまでいけば道が開けるんですね
やってみます
>>996
どっちがどっちだか分け分かんなくなってるだろww
埋め 10011001Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1112日 8時間 12分 52秒
10021002Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php