Objective-C [ObjC part:8.1]; [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2014/11/01(土) 13:35:17.70ID: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];
ttp://pc12.2ch.net/test/read.cgi/tech/1186543111/
Objective-C
ttp://pc11.2ch.net/test/read.cgi/tech/1106983092/
Objective-C
ttp://pc5.2ch.net/tech/kako/990/990574267.html
2016/02/16(火) 04:14:06.30ID:cX0cXTkh
Objective-Cはなんつーか"ちょうどいい"ポジションにいるので
ここからユーザーに移行を促すのは大変だよなぁ…
ほぼApple専用でなかったら、これいまのJavaの位置だったろ?ってぐらい
わかりやすいC+オブジェクト指向っぷりだし。
2016/02/16(火) 07:44:17.75ID:T8OiCwB/
>>349
>ほぼApple専用でなかったら、これいまのJavaの位置だったろ?ってぐらい
>わかりやすいC+オブジェクト指向っぷりだし
わかりやすいよね
351デフォルトの名無しさん
垢版 |
2016/02/16(火) 08:11:08.67ID:5UqE7wWz
こんないい言語がApple専用なのは本当に惜しい
2016/02/16(火) 09:16:19.80ID:2VnsGNUc
専用では無いんじゃないの? 
ランタイムはオープンだよね。
2016/02/16(火) 09:31:07.69ID:cb7bLrdU
ランタイムはどうか知らんがコンパイラはGNUが昔作った気がする
WinはおろかLinuxですら使う人口が少なかっただけで
2016/02/16(火) 09:32:29.42ID:AUXqcpoN
CoreFoundationやNS系がApple専用だしなあ
AppleのソフトにはWindows用にもそういったdllが入ってたりするから移植されてるんだろうけど、SDKとしては公開されてないし
NSのつかない純Objective-Cなライブラリ体系もあるにはあるしオープンだけど、実用上は全く嬉しくないだろ
2016/02/16(火) 10:47:44.05ID:L1d/icCk
smalltalkがもうちょっと一般的だったらObjective-Cも入りやすかったかもね
2016/02/16(火) 17:16:47.78ID:cb7bLrdU
スクイークが変態環境じゃなかったら良かったな
2016/02/16(火) 18:20:06.54ID:tCTD475N
>>354
昔のGNUにはNSがなかったけど、後で付け足した
2016/02/16(火) 18:40:44.24ID:PkVX6tWn
swiftで実装したFoundation開発中だけどgithubにリポジトリ置いているってことは
次のFoundationは最初からクロスプラットフォームでオープンってことかね
359デフォルトの名無しさん
垢版 |
2016/02/16(火) 20:29:36.88ID:uEcJx/Is
>>358
NSData.swiftのコードなんか眺めてると、OSがLinuxの場合のimportの記述もあったりするんで
クロスプラットフォームのことも想定はしている感じだな。
360デフォルトの名無しさん
垢版 |
2016/02/17(水) 10:38:58.04ID:NWAA8GlY
iOS8切れないプロジェクトはobjCしかない。
そのうち3.0出るでしょ。
2016/02/17(水) 14:48:04.74ID:4kmV8BWa
>>360
iOS7も切れないのに8と9の機能使いたいとか言うともうソースコードが大変 orz
2016/02/17(水) 16:57:00.36ID:243ZLeyW
Foundationのみでどこまでの事が出来るだろう。通信系とデータベース系のフレームワークもマルチプラットフォームで用意してくれればありがたい。
2016/02/17(水) 22:23:22.16ID:HWKatSeL
明確な必要性がないのに言語を変えようとしたら、そりゃ歪みは生じるわな
364デフォルトの名無しさん
垢版 |
2016/02/18(木) 22:02:44.40ID:ThW4WIO9
メッセージ式好き
メッセージ式に返り値使うの嫌い
[[obj alloc] init]ですら嫌い
365デフォルトの名無しさん
垢版 |
2016/02/18(木) 22:19:30.54ID:ncbtGfJT
[obj new];
366デフォルトの名無しさん
垢版 |
2016/02/18(木) 22:46:51.93ID:ThW4WIO9
>>365
newは好き
ほんと好き
367デフォルトの名無しさん
垢版 |
2016/02/19(金) 00:56:12.38ID:u0wtznhk
Objective-Cで使える公開鍵暗号方式のライブラリないですか?
RSAが使えてBSDライセンスのものを教えてください。
2016/02/19(金) 11:41:19.39ID:0R2jEsLy
>>367
普通のCのライブラリでもいいじゃんよー
2016/02/19(金) 14:00:51.88ID:hw/X0Y/j
>>367
っ OpenSSL

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

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

Zukei

Sankaku

継承していった場合、Zukeiっていらないですよね?
Zukeiって何に使うの?
383デフォルトの名無しさん
垢版 |
2016/02/29(月) 11:58:49.67ID:rONM9FLT
>>382
そんなの設計者によるとしか。
2016/02/29(月) 21:32:03.37ID:g6U0QDaU
Shikakuを定義するときじゃ無いかな
2016/02/29(月) 22:33:15.39ID:AGSlA4Px
>>382
Zukeiで実装されてる機能もいらないまたは一から作るならいらないね
2016/03/01(火) 10:05:50.59ID:Y4Aw5jZp
勇者と僧侶がいて、2人とも勇者だったら困るだろ?
2016/03/01(火) 19:28:43.56ID:oKiiXTzA
NSColorが持ってるCGColorプロパティっていつのまにINNER_POINTERになったんだ。
これインナーポインターってことは、NSColorが自動的にリリースしてくれるってことでいいのかな。
2016/03/02(水) 07:36:13.29ID:vYYDvy9N
>>378
それがSwiftだろw。Smalltalk/Xみたいに
Smalltalk部分とCの関係を逆転させればよかったのにな。
2016/03/02(水) 11:33:42.75ID:6RTODWst
initWith と 変数宣言って何が違うの?
2016/03/03(木) 07:33:32.75ID:v0X4WZo1
変数宣言は単に箱用意するだけじゃないの
2016/03/03(木) 11:22:52.73ID:sxVc5uct
initWithは?
2016/03/03(木) 11:34:11.40ID:LQKVhEqg
インスタンスメソッドだ。
2016/03/03(木) 13:58:32.20ID: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;
2016/03/03(木) 15:01:47.17ID:LQKVhEqg
s, nはid型だから、メソッド呼ぼうにもXcodeに注意されるぞ。
2016/03/03(木) 17:29:19.39ID:NI2A9sOU
>>389
C言語の文法レベルで変数を宣言してるか
フレームワークレベルでクラスに命令して作らせてるかじゃね?

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

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

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

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


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

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

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

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

今の Obj-C はいろいろなリテラルが導入されてるんやで。
2016/03/05(土) 03:00:27.20ID:Y+yze1Qk
>>420
>>421
真夜中なのに久々にワクワクしてきたw
いろいろ漁ってたら前に買った詳解Objective-C2.0が出てきた
2008年6月1日初版第1刷って書いてある。。
でもまずは基礎をちゃんとやり直さないと今時のObjective-Cも楽しめないよね
がんばろ
ありがとう!
2016/03/05(土) 03:29:49.20ID:Y+yze1Qk
>>421
NSNumberのリテラルはさすがに最近の話ですよね
自分の無知を痛感してきた
これって内部実装はマクロ的に組まれてて数値の範囲はLongLongやDoubleまで
あらゆる数値が可能なのかな
それともコンパイラがやってくれてるんですかね
2016/03/05(土) 03:49:29.29ID:y3HtH6T+
NSNumber リテラルは2012年の Clang 3.1 からあるで。
2016/03/05(土) 04:09:14.03ID:Y+yze1Qk
そうですか…
もはやブランクというレベルじゃない気がしてきましたね
ノリノリでやってた時って、まだProject BuilderとInterface Builderの時代だったし…
でもやっぱり楽しいですねObjective-Cって
2016/03/05(土) 08:30:43.19ID:xdiHToCv
(おれ、1990年代頭にK&RでC学んだから、ずっとポインタは整数型だと思ってて
いつのまにかポインタ型ってのになってるの2010年ごろまで知らんかったでw)
2016/03/05(土) 09:33:32.85ID: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/
2016/03/05(土) 09:40:03.49ID:y3HtH6T+
Obj-C 2.0 なんて 9 年前の言葉持ち出してきてどうした
2016/03/05(土) 09:57:04.10ID:C6PXQEiT
たしかにObjective-C 2.0以前にXcode側の対応が充実したって言ったほうがいいかもな。
あとマイナーアップデートもちょくちょくあった気がする。
@implementation側でインスタンス変数宣言出来るようになったし
ジェネリックスも最近入ってきた。
2016/03/05(土) 10:02:21.11ID:xdiHToCv
>>427
上でも出てるが詳解Objective-C2.0(萩原本)は2008年やで。
俺もcocoaやろうと買ってて、それを2009年のiPhone開発解禁で
本格的に読み始めたから、基本的にiOSやってるやつはみんな2.0からやで。
2016/03/05(土) 11:55:02.65ID:UYtB00OI
Objective-Cじゃダメな理由って何なのそれ?
2016/03/05(土) 12:29:52.33ID:jb1F0oyu
>>416
あと2.0?になってからpublicとかprivateキーワードも使わなくなったよね。

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

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

ただ、
@public
@private
@protected
はわかりやすかった気がするけど、ヘッダファイルにprivateメンバの情報を
載せないで済むようにしたかったってことなのかな
2016/03/05(土) 14:18:12.35ID:mFk1f1pP
ヘッダに書くのはパブリックメソッドのみ。これが合理的で非常にわかりやすい。
もっともOOPに適した言語だと思う。
2016/03/05(土) 14:35:34.86ID:HF+l0CAH
ここはいつから日記帳になったんだ
2016/03/05(土) 18:16:16.08ID:jb1F0oyu
>>435
確かにヘッダ見ればそのライブラリのオープンなメソッドしか見えない
というのはわかりやすい。
2016/03/06(日) 00:41:20.28ID:5qJ91+Ie
>>427
NeXTのOpticalDrive版もってましたがなにか?
2016/03/06(日) 11:35:02.88ID:g15wMUfE
>>427
2010年の割には随分古い書き方だな。
Objective-C使ったこと無いのにやたらObjective-C叩く奴らはそのページの知識で止まってたりしてな。
2016/03/10(木) 14:37:18.03ID:OLUNjZSr
うちは未だに[NSArray arrayWithObjects:@"", nil]とか[NSNumber initWithInteger:0]使ってるコードあるけどな。
テストが面倒なのでTo Modern Objective-C Syntax...機能は使わないという方針なんだよ。
ウォーターフォール型でモバイルアプリ開発始めるとこうなる。
2016/03/10(木) 17:40:00.03ID:yfQIYaI+
なんでテストが面倒なの?
2016/03/11(金) 16:33:44.79ID:kWA4jyXp
日本のウォーターフォール開発にはエビデンスというものがあってだな。
とりあえず責任のなすりつけあいをするために大掛かりな改修が入ると1からテストし直す所は多いよ
2016/03/17(木) 01:04:45.68ID:7hhawqio
> To Modern Objective-C Syntax...機能
ああXcodeの一括置換機能か
意味がわかった
2016/04/06(水) 03:45:31.16ID: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.53ID: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的に分散され、特定のサーバーに依存しません
2016/05/21(土) 21:08:51.89ID:oKW2aYRF
iosって標準で何かデータベース使えるの?
androidはsqliteが使えるけど
2016/05/21(土) 22:23:35.91ID:CpbYB6Dd
sqlite入ってますよ
2016/05/22(日) 01:54:16.39ID:gQDMaR5e
ありがとうございます!
2016/05/23(月) 11:26:40.41ID:VJZJx6HE
安心してください
2016/07/10(日) 10:00:08.73ID:mg7VERF+
オーバーライドの意味がわかりません
スーパークラス
メソッドA
サブクラス
メソッドA
サブクラスのメソッドAをオーバーライドします
スーパースラスは、どうやって使うの?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況